mysql auslese in 2 schleifen
phillip
- php
-1 Julian von Mendel0 Joerg0 dedlfix
hallo!
folgenden code habe ich:
$out2 = @mysql_query("select * from ".$prefix."_liga_teilnehmer where liga_id='".$_POST["liga_id"]."';", $sql_id);
$out3 = @mysql_query("select * from ".$prefix."_liga_teilnehmer where liga_id='".$_POST["liga_id"]."' ORDER by RAND();", $sql_id);
while ($row2 = @mysql_fetch_array($out2))
{
while ($row3 = @mysql_fetch_array($out3))
{
echo "".$row2["user_id"]." : ".$row3["user_id"]."";
echo "<br>";
}
}
ich habe wie man sieht 2 schleifen. der erste durchgang beider schleifen funktioniert auch wunderbar. doch eben nur der. also die obere schleife wird kein zweites mal ausgeführt. liegt das daran, dass beide auf die gleiche tabelle in der datenbank zugreifen? muss man da irgendwie mysql_data_seek() einbauen? ich hab das schon probiert, doch ohne erfolg. wäre euch dankbar, wenn einer eine lösung weiß.
vielen dank,
phillip
Hi,
while ($row2 = @mysql_fetch_array($out2))
{
while ($row3 = @mysql_fetch_array($out3))
{
echo "".$row2["user_id"]." : ".$row3["user_id"]."";
echo "<br>";
}
}
du verwechselst vermutlich mysql_fetch_array mit mysql_fetch_row - mysql_fetch_array gibt, wie der Name sagt, einmalig ein Array mit dem kompletten Inhalt zurück. Ersetze es durch mysql_fetch_row oder rufe es einmalig vor der Schleife auf und ersetze das while durch ein foreach.
Schöne Grüße
Julian
Hallo Phillip,
in Deinen while-Schleifen sehe ich einfach keine Bedingungen, wie lange sie laufen sollen. Zum Beispiel solange, wie auch Anzahl der Datensätze per WHERE-Bedingung ausgewählt wurden( Funktion mysql_num_rows ).
$i=1;
while ($i<=$num_rows)
am Ende der Schleife $i um 1 erhöhen mit $i++
Versuch es einfach mal.
Jörg
Moin!
in Deinen while-Schleifen sehe ich einfach keine Bedingungen, wie lange sie laufen sollen.
Ich schon, und die angewandte Methode ist durchaus üblich:
while ($row2 = @mysql_fetch_array($out2))
Die Funktion mysql_fetch_array ergibt entweder ein Array mit DB-Inhalten, sofern noch eines im Abfrageergebnis enthalten ist, oder FALSE.
Unabhängig davon, welches Ergebnis die Funktion ergibt, wird es in jedem Fall in der Variablen $row2 gespeichert.
Und jetzt der Trick: Der an die Variable zugewiesene Wert wird außerdem auch als Ergebnis dieser Zuweisung nach "außen" gegeben, und "außen" ist in diesem Fall die while-Schleifenbedingung.
Mal für dich zum Ausprobieren:
echo 2 + 4; // Gibt 6 aus - so kennt man es.
echo $i = 5 + 4; // gibt 9 aus und speichert das auch in $i
while ($i) // Prüft, ob in $i etwas steht, was PHP als "wahr" ansieht - nur dann wird die while-Schleife ausgeführt
{
echo $i; // Zur Kontrolle den Wert von $i ausgeben (anfänglich 9)
$i--; // $i um 1 verringern.
}
- Sven Rautenberg
echo $begrüßung;
muss man da irgendwie mysql_data_seek() einbauen?
Ja.
ich hab das schon probiert, doch ohne erfolg.
Was genau hast du probiert?
wäre euch dankbar, wenn einer eine lösung weiß.
Nach der while($row3...-Schleife ein mysql_data_seek($out3, 0); sollte es tun.
echo "$verabschiedung $name";