SQL For Schleife mit PHP funktioniert nicht

Krammer

Komplett-PC-Aufrüster(in)
Hallo, ich möchte meine SQL Abfrage in einer For Schleife durchführen. Die Spalten heißen bildtext1, bildtext2, ...und drinnen steht bild1, bild2,... jeweils in der ersten Zeile

So funktioniert es (Ausgabe: bild1):
PHP:
for ($i = 1; $i <= 5 ; $i++) 
    {
$abfrage = "SELECT * FROM bildbox WHERE id = '1'";
    $ergebnis = mysql_query($abfrage);
    while($row = mysql_fetch_object($ergebnis))
    {
    echo "$row->bildtext1";
    }
}
Und so funktioniert es nicht (Ausgabe: 123...):
PHP:
for ($i = 1; $i <= 5 ; $i++) 
    {
$abfrage = "SELECT * FROM bildbox WHERE id = '1'";
    $ergebnis = mysql_query($abfrage);
    while($row = mysql_fetch_object($ergebnis))
    {
    echo "$row->bildtext$i";
    }
}
Also beim 2ten Code gibt er anscheinend nur $i aus und nicht das was in der db steht.

Wie bring ich das zum laufen?
 
in der sql abfrage müsstest du die 1 natürlich auch noch mit dem $i ersetzen ^^

edit: wieso eigentlich so kompliziert? also abgesehen davon, dass mehrere anfragen unnötige last bedeuten und vermieden werden sollten, ist das hier doch ganz simpel eigentlich:
PHP:
$abfrage = "SELECT * FROM bildbox;";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis)) {
    echo $row["ID"].": ".$row["bildtext".$i]."<br>";
}
wird so auch ned funtzen (weil man kein $i hat). hmm, hat eine bildbox mehrere bildtexte oder wie is das? weil dann solltest du die db ganz anders gestalten:
einmal die bilderboxen wie bisher in ner tabelle und ne 2. tabelle bildtexte erstellen, wo alle bildtexte reingehören. in einer spalte wird die bildbox-id gespeichert zu der der bildtext gehört. dann hast du in der bildtext-tabelle also alle bildtexte zu allen bildboxen und die zuordnung erfolgt über die bildbox-id, die bei jedem bildtext gespeichert wird.

dann fragst du deine bildbox(en) ab und schaust in der bildtexte tabelle nach allen bildtexten mit der id der bildbox.
wenn man sich folgende tabellen überlegt:
- bildbox [ID, Name]
- bildtext [ID, bbID, Text]

dann könnte der code ungefähr so aussehen:
PHP:
$abfrage = "SELECT * FROM bildbox;";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis)) {
    echo "BildBox-"$row["ID"].":<br>"
    $abfrage2 = "SELECT * FROM bildtext WHERE bbID = '".$row["ID"]."';";
    $ergebnis2 = mysql_query($abfrage2);
     while($row2 = mysql_fetch_object($ergebnis2)) {
        echo "- ".$row["Text"]."<br>";
    }
}
hat man aber auch wieder mehrere abfragen in ner schleife, was nich zwingend klasse is. daher wäre dann so ein (ich glaub inner join) konstrukt der sql abfrage sinnvoll:
PHP:
$abfrage = "SELECT bb.ID, bt.Text FROM bb bildbox, bt bildtext WHERE bt.bbID = bb.ID;";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis)) {
    echo "BildBox-"$row["ID"].": ".$row["Text"]."<br>";
}
is jetz ausm kopf heraus, aber sollte funktioniern. man muss auch beachten, dass man leider nich sowas wie $row["bb.ID"] machen kann. hätte ich nach select nich spezifiziert, was er auslesen soll, weis ich ned genau ob er dann die ID von der bildbox oder vom bildtext ausgeben würde. also zumindest war das früher bei mir immer nen problem :/ alternativ könnte man - sofern man beide ID's braucht natürlich auch den spalten andre namen geben: SELECT bbID bb.ID, btID bt.ID, bt.Text FROM bb bildbox, bt bildtext WHERE bt.bbID = bb.ID; -> da könnte man dann (wenn mich ned alles täuscht) über $row["bbID"] oder eben $row["btID"] auf die jeweilige ID zugreifen.

aber ich lass mich auch gern berichtigen ^^ is scho lang her und nen profi war ich auch da ned :P
 
Zuletzt bearbeitet:
ja die frage kam mir eben beim edit auch auf, dass ich das wohl fehlinterpretiert hatte. lies am besten nochmal nach, vllt bringt dich das ja weiter.
 
Zurück