Archiv verlassen und diese Seite im Standarddesign anzeigen : Levelsystem mit Login Script
Hallo.
Habe bei mir das Tutotial vom mrhappiness ausprobiert.
Mittlerweile funktioniert es auch.
Jetzt möchte ich allerdings ein Levelsystem dazu programmieren.
User A hat Level 50
User B hat Level 30
etc
Und dementsprechend dann die Menues ausgeben.
Habe dazu die Datenbank um eine Spalte erweitert mit dem Namen "UserLevel".
Allerdings schaffe ich es nicht, das Level zum dazugehörigen Namen auszulesen.
Habe schon verschiedene Möglichkeiten ausprobiert. Aber leider hat keine funktioniert.
Anscheinend gibt es die Funktion check_level(). Aber dazu findet sich leider auch nicht im Netz dazu.
Bin leider noch nicht so fit in PHP, leider. Denn eigentlich dürfte es sich um eine relativ einfache Sache handeln.
Hat von euch jemand einen Vorschlag?
Gruss
Micha
was hast du den versucht?
wie hast du die function check level definiert?
Hi.
Das war mein letzter Versuch. Die restlichen weiss ic auch nicht mehr so genau.
Was ich auch versucht habe, war mit funktion check_level($name,$level)
function check_level()
{
$query = "SELECT UserLevel FROM users WHERE UserName = '".$username."'";
$result = mysql_query($query);
return $result;
}
Müsste ja mit echo $level dann auch das Level angezeigt bekommen.
Etwas ratlos.
Gruss
Micha
wenn du $level auch irgendwo definierst, sollte dem so sein. Davon sehe ich aber in dem Code-Auszug nichts?
http://de.php.net/mysql_fetch_array
Hallo.
In etwa so?
function check_level($name,$level)
{
$query = "SELECT UserLevel FROM users WHERE UserName = '".$username."'";
$level = mysql_query($query);
return $level;
}
In meiner Index.php dann
check_level()
echo $level;
...
Gruss
Micha
Fast:
Original geschrieben von hall
http://de.php.net/mysql_fetch_array
und wo wird $username definiert?
Original geschrieben von Abraxax
und wo wird $username definiert?
Hallo.
Muss natürlich $name heissen. Ist weiter oben im Script definiert.
Gruss
Micha
Original geschrieben von TobiaZ
Fast:
Hallo.
Habe es jetzt so:
function check_level($name,$level)
{
$query = "SELECT UserLevel FROM users WHERE UserName = '".$name."'";
$level = mysql_fetch_array($query);
return $level;
}
Aufruf erfolgt mit :
check_level($name,$level);
echo $level;
Leider ergibt das die Fehlermeldung:
mysql_fetch_array(): supplied argument is not a valid MySQL result resource in...
habe es gerade noch mit echo mysql_error();versucht. Ändert aber gar ichts an der Fehlermeldung.
Gruss
Micha
du kannst doch mysql_query() nicht einfach durch fetch_array() erseten. Hast du überhaupt eine ahnung für was die zuständig sind? Nämlich für zwei total unterschiedliche dinge.
ersteres holt eine Menge aus der DB und letzteres packt eben diese Menge in ein Array. Du brauchst also BEIDE!
Original geschrieben von TobiaZ
du kannst doch mysql_query() nicht einfach durch fetch_array() erseten. Hast du überhaupt eine ahnung für was die zuständig sind?
Nimmst du ernsthaft an, "Tutorials" würden Verständnis bringen?
Ich wette, dass in 99,9% der Fälle der Code per Copy&Paste übernommen wird, und das war's. Und wenn dann was "nicht funzt" oder Erweiterungen rein sollen, dann wird in ein Forum gerannt ...
Original geschrieben von TobiaZ
du kannst doch mysql_query() nicht einfach durch fetch_array() erseten. Hast du überhaupt eine ahnung für was die zuständig sind? Nämlich für zwei total unterschiedliche dinge.
ersteres holt eine Menge aus der DB und letzteres packt eben diese Menge in ein Array. Du brauchst also BEIDE!
Hallo TobiaZ.
OK. Jetzt habe ich auf jeden Fall den Unterschied endlich mal kapiert und weiss jetzt auch, warum immer beide benutzt werden. Mit einfachen Worten echt top erklärt.
Aber gibt es nicht einen Befehl, der beides auf einmal macht? Wenn ich sowieso meist beide brauche, würde das doch Sinn machen? Nur so am Rande.
Gruss
Micha
Original geschrieben von wahsaga
Nimmst du ernsthaft an, "Tutorials" würden Verständnis bringen?
Ich wette, dass in 99,9% der Fälle der Code per Copy&Paste übernommen wird, und das war's. Und wenn dann was "nicht funzt" oder Erweiterungen rein sollen, dann wird in ein Forum gerannt ...
Hallo wahsaga.
Fühl Dich doch nicht gleich so angepisst.
Natürlich bringt ein Tutorial nicht Verständnis, aber wenn man mehrere mal durchgeackert hat, schon. Leider war mir obiges noch nicht wirklich klar. Habe dazu aber auch mal die Doku zu PHP gelesen. Leider ist diese manchmal viel zu kompliziert für einen Anfänger. Dort wird mit Fachbegriffen um sich geschmissen, dass einem die Ohren schlackern.
Ich hab zum Beispiel 6. Semester Jura studiert und kann immer noch nicht alles. Obwohl unser Recht ja jedem verständlich sein sollte, auch dem Laien. Also muss es der Laie, selbst wenn er sich reinliest in die Materie, noch längst nicht verstehen. Nur mal so angemerkt.
Ausserdem hätte ich mein Problem vermutlich längst gelöst, wenn ich wirklich gleich ins Forum geschrieben hätte. Da ich aber gerne noch länger mit PHP arbeiten möcht, habe ich einige Abende erst mal versucht und nochmals versucht. Und dazu im Netz gestöbert, damit ich mein Ding hinbekomme.
Aber sorry, wenns dann halt an einem total leichten Ding hakt, welches für Dich absolut selbstverständlich ist.
Gruss
Micha
Original geschrieben von wp180
Ich hab zum Beispiel 6. Semester Jura studiert und kann immer noch nicht alles. Obwohl unser Recht ja jedem verständlich sein sollte, auch dem Laien.
Sagt wer ...?
Unser Rechtssystem ist ganz sicher nicht dafür ausgelegt, auch vom Laien verstanden zu werden.
Also muss es der Laie, selbst wenn er sich reinliest in die Materie, noch längst nicht verstehen. Nur mal so angemerkt.
Selbst wenn der Laie meint genügend verstanden zu haben, muss er sich immer noch der Dienste eines Anwalts versichern, wenn er vor Gericht gehen will - wegen irgendwelcher Gesetze aus der Nazizeit, die dieser Berufsgruppe auch weiterhin ihre Pfründe sichern sollen ...
Original geschrieben von wp180
Aber gibt es nicht einen Befehl, der beides auf einmal macht? Wenn ich sowieso meist beide brauche, würde das doch Sinn machen? Nur so am Rande.In Anbetracht der Tatsache, das in den meisten Fällen ein einfaches ausführen von mysql_fetch... nicht reicht, nein.
Wenn du irgendwann was tiefer in der Materie steckst, kannst du dir eine klasse basteln und deiner Query()-Methode ein optionales argument übergeben, welches dafür sorgt, dass mysql_fetch_... direkt ausgeführt wird.
Aber wie gesagt, das ist eher der Einzelfall.
Original geschrieben von wahsaga
Sagt wer ...?
Unser Rechtssystem ist ganz sicher nicht dafür ausgelegt, auch vom Laien verstanden zu werden.
Unser BGB und unser Strafrecht auf jeden Fall. Denn jeder sollte erkennen können, was verboten und was erlaubt ist.
Selbst wenn der Laie meint genügend verstanden zu haben, muss er sich immer noch der Dienste eines Anwalts versichern, wenn er vor Gericht gehen will - wegen irgendwelcher Gesetze aus der Nazizeit, die dieser Berufsgruppe auch weiterhin ihre Pfründe sichern sollen ...
Stimmt nicht. Vor Amtsgerichten herscht kein Anwaltszwang, ebenso bei Zivilprozessen vorm Landgericht.
Aber bevor wir total Off-Topic werden: Du weisst genau, vorauf ich hinaus wollte.
Gruss
Micha
Original geschrieben von TobiaZ
In Anbetracht der Tatsache, das in den meisten Fällen ein einfaches ausführen von mysql_fetch... nicht reicht, nein.
Wenn du irgendwann was tiefer in der Materie steckst, kannst du dir eine klasse basteln und deiner Query()-Methode ein optionales argument übergeben, welches dafür sorgt, dass mysql_fetch_... direkt ausgeführt wird.
Aber wie gesagt, das ist eher der Einzelfall.
OK. Hab ich verstanden. Und schon wieder was gelernt, was PHP anbelangt.
Danke.
Jetzt werde ich mal an meinem Problem weiter arbeiten. Funktioniert immer noch nicht, aber viel kann ja jetzt nicht mehr fehlen.
Gruss
Micha
So.
Jetzt habe ich mal so versucht.
function check_level($level)
{
$sql="SELECT UserLevel
FROM users
WHERE UserSession='".session_id()."'
LIMIT 1";
$result= mysql_query($sql);
$level= mysql_fetch_array($result);
echo $sql ."\n";
echo $result. "\n";
echo $level."\n";
}
Die Ausgabe dazu:
SELECT UserLevel FROM users WHERE UserSession='3972af510e4268b66f8e6cc57ffbddff' LIMIT 1 Resource id #5 Array
Allerdings denke ich mal, dass dort id #4 stehen sollte.
Wieso kommt für $level Array? Eigentlich sollt ehier ja dann irgendwann mal mein Eintrag der Datenbank stehen, in meinem Fall 100.
Mal wieder völlig ratlos.
Wünsche euch eine angenhme Nacht.
Gruss
Micha
Original geschrieben von wp180
Allerdings denke ich mal, dass dort id #4 stehen sollte.
Wie meinen?
mysql_query liefert dir eine Ressource-ID zurück, und die hat eine - irgendeine - Nummer.
Wie die lautet, ist für dich vollkommen ohne Belang - und es kann auch jedes Mal eine andere sein.
Wieso kommt für $level Array?
Ja, deutet vielleicht der Funktionsname mysql_fetch_array schon irgendwie darauf hin, dass diese Funktion was doch gleich - ja, stimmt, ein Array - zurückliefert?
Eigentlich sollt ehier ja dann irgendwann mal mein Eintrag der Datenbank stehen, in meinem Fall 100.
Der steht im Array.
ZombieChe 10-11-2006, 11:25 Der steht im Array.
und bevor weiter gerätselt wird, er steht im numerischen Index 0 oder im assoziativen Index 'UserLevel'...
also
$level[0]
//oder
$level['Userlevel']
Original geschrieben von ZombieChe
und bevor weiter gerätselt wird, er steht im numerischen Index 0 oder im assoziativen Index 'UserLevel'...
also
$level[0]
//oder
$level['Userlevel']
Ich habs geschafft. Gerade als Deine Antwort kam, hatte ich dort stehen:
$level[Userlevel]
Hat natürlich nicht funktioniert wegen der fehlenden ' '.
War aber schon nahe dran.
Danke und gruss
Micha
Original geschrieben von wahsaga
Wie meinen?
mysql_query liefert dir eine Ressource-ID zurück, und die hat eine - irgendeine - Nummer.
Wie die lautet, ist für dich vollkommen ohne Belang - und es kann auch jedes Mal eine andere sein.
OK. Verstanden. Hat mich etwas verwirrt, aber nun kapier ichs.
Ja, deutet vielleicht der Funktionsname mysql_fetch_array schon irgendwie darauf hin, dass diese Funktion was doch gleich - ja, stimmt, ein Array - zurückliefert?
Hab ich mir ja schon gedacht. Kam aber nicht dahinter, wie ich es auslese. Wobei ich vorhin mit print_r herausbekommen habe, dass dort auf jeden Fall das richtige drinsteht.
Der steht im Array.
siehe oben.
Gruss und Danke
Micha
Hallo.
Also ich habs geschafft dank eurer Mithilfe. Sorry, falls der eine oder andere genervt war von meinen Fragen. Aber ich habe auf jeden Fall einiges dazu gelernt.
Da ich das Script noch viel mehr anpassen möchte, wird mir das auf jeden Fall nun leichter fallen, denke ich mal.
Anbei noch das Script wie ich es nun habe:
sessionhelpers.inc.php
function check_level($level)
{
$sql="SELECT UserLevel
FROM users
WHERE UserSession='".session_id()."'
LIMIT 1";
$result= mysql_query($sql);
$level= mysql_fetch_array($result);
return $level['UserLevel'];
}
menueleiste.php
$userlevel = check_level($level);
if ($userlevel > 30)
echo ... ;
Nochmals Danke an alle und ein schönes Wochenende
Micha
|
-
- |