PHP Variable in while-Schleife
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
array
artikel
bar echo
code
dank
datum
ergebnis
frage
glauben
limit
login
objekt
problem
schleife
session
spalte
spalten
text
url
-
Hallo,
ich habe ein Problem und hoffe, dass mir hier jemand helfen kann. Hier also mein Problem/meine Frage:
Ich habe eine verbindung zu einer MySQL Datenbank, die wie folgt aussieht:
<?php $id = "ABC"; $abfrage = "SELLECT * FROM tabellenname WHERE BenutzerID = '$BenutzerID'"; //die BenutzerID ist über die SESSION definiert $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { //Hier weis ich nicht, was hier hin muss. //Ich habe es schon so versucht: $id2 = $row->"$id"; //Aber das funktioniert nicht. //Wie mache ich es jetzt, dass der Spaltenname = $id ist? //Auserdem würde ich noch gerne wissen, ob und wenn ja wie man eine if abfrage in der while Schleife machen kann. } ?>
Danke im Voraus für alle Antworten,
THWBM
Beitrag zuletzt geändert: 6.9.2012 17:30:18 von thwbm -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Benutze mysql_fetch_array. Das gibt ein Assoziatives Array zurück. Dann kannst einfach $id als Key nehmen und kriegst das gewünschte Ergebnis, insofern $id existiert. Aber du kansnt ja gegen NULL testen.
PS:
Zur IF... Uhm ... wie außerhalb einer While schleife auch.
while(true) { if ($foo == "bar") { echo "Hallo, mein foo ist bar!"; } }
Beitrag zuletzt geändert: 6.9.2012 17:47:04 von adrians -
adrians schrieb:
Oder benutze
Benutze mysql_fetch_array. Das gibt ein Assoziatives Array zurück.
richtig...mysql_fetch_object()
<?php $id = "ABC"; $abfrage = "SELECT * FROM tabellenname WHERE BenutzerID = '$BenutzerID'"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { $id2 = $row->{$id}; // jetzt steht in $id2 der Wert der Spalte "$id" } ?>
// EDIT: ungefär so hat es adrians gemeint:<?php $id = "ABC"; $abfrage = "SELECT * FROM tabellenname WHERE BenutzerID = '$BenutzerID'"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_assoc($ergebnis)) { $id2 = $row[$id]; } ?>
Beitrag zuletzt geändert: 10.9.2012 13:45:35 von hackyourlife -
Erstmal danke an euch beide,
1. an adrians:
Ich glaube, dass mir die Antwort von hackyourlife mehr Weiterhilft in Sachen "mysql_fetch_object", aber dake für die Info zur If abfrage.
2. an hackyourlife:
Ich glaube, damit kann ich was anfangen, danke! -
zur kleinen erklärung...
mit -> sprichst du objekte an
dies geht natürlich nicht wenn du keine erzeugst!
über $row = mysql_fetch_assoc() ist $row ein array.. du kannst auf die db spalten mit $row[] zugreifen. über objekt mit ->
generell weiß ich nicht wie der stand hier auf dem server ist aber ich rate dir ernsthaft zu mysqli oder am liebsten zu PDO ....
btw wird das hier unterstützt?
(auch wenns jetzt noch nicht so ist, weiß ich nicht genau was du damit vorhast, falls die "SESSION ID" aus nem cookie oder per GET übergeben wird, ist dein script schneller geknackt als die schale einer nuss ;)
Beitrag zuletzt geändert: 9.9.2012 17:59:23 von dishonored -
Also ich vermute mal das soll ein Login sein also müsstest du als nächstes doch einfach die Sessionvariablen setzen, oder?
$ergebnis["id"] = $_SESSION["user_id"]; $ergebnis["username"] = $_SESSION["username"];
PS: Vielleicht liegts auch daran das du SELLECT mit 2 L geschrieben hast?
Beitrag zuletzt geändert: 10.9.2012 12:33:48 von buergerforum -
gute Frage, was will der TE machen ... ?!?
a) ... einen User-Login ... Prüfen ob ID existiert und ob das Passwort richtig ist
oder
b) ... alle Daten ausgeben ... die einem User (Autor) zugeordnet sind (z.B. Artikel, Kommentare, ... )
zu a)
<?php $user_id = $_SESSION["BenutzerID"]; $user_pw = $_SESSION["Password"]; $user_id = mysql_real_escape_string($user_id); $user_pw = mysql_real_escape_string($user_pw); $abfrage = "SELECT * FROM usertable WHERE id = '$user_id ' LIMIT 1"; $ergebnis = mysql_query($abfrage); $num_rows = mysql_num_rows($ergebnis); if ($num_rows == 0) { echo "<br />Keine Daten zu User mit dieser ID gefunden. "\n"; } else { $row = mysql_fetch_object($ergebnis)); // --- wegen LIMIT 1 ist hier keine while-Schleife notwendig if ($row->pass == $user_pw) { echo "<br />OK ... Login erfolgreich. "\n"; } else { echo "<br />Fehler ... Passwort ist nicht richtig. "\n"; } } ?>
zu b)
<?php $user_id = $_SESSION["BenutzerID"]; $user_id = mysql_real_escape_string($user_id); $abfrage = "SELECT * FROM tabellenname WHERE id = '$user_id '"; $ergebnis = mysql_query($abfrage); $num_rows = mysql_num_rows($ergebnis); if ($num_rows == 0) { echo "<br />Keine Daten zu User mit dieser ID gefunden. "\n"; } else { $row = mysql_fetch_object($ergebnis)) $n=1; while($row = mysql_fetch_object($ergebnis)) { echo "<p>--------- Ergebnis Nr: ".$n." ---------\n"; echo "<br />Von User-ID: " . $row->id . "\n"; echo "<br />Artikel-Typ: " . $row->post_type . "\n"; echo "<br />Artikel-Text: " . $row->text . "\n"; echo "<br />Erstellt am: " . $row->datum . "\n"; echo "</p>\n"; $n++; } } ?>
... oder wie oder was ?!
Beitrag zuletzt geändert: 10.9.2012 13:08:07 von wguide -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage