Neuigkeiten:

still alive...

Hauptmenü

While-Schleife

Begonnen von hausmeister, 01. Februar 2005, 21:54:11

Vorheriges Thema - Nächstes Thema

hausmeister

Hallo
Eure Seite wurde mir empfohlen, da man hier sehr kompetente Hilfe bekommt.
Mein Problem;
Ich versuche Einträge aus einer Datenbank zu lesen um diese dann in einer zweiten Abfrage als WHERE-Klausel zu verwenden, aber irgendwie nimmt er immer nur den letzten Eintrag der Tabelle.
Die erste Abfrage ergibt z.B. die Zahlen 1,2,3 als $zahl.
Diese verwende ich nun in der zweiten Abfrage mit WHERE = \'$zahl\'. Nun ist der Effekt, dass immer nur der letzte Eintrag genommen wird, also die 3 und die 1 und 2 werden ignoriert. Wie bringe ich es denn nun fertig, dass die Abfrage für alle Zahlen gemacht wird und nicht nur für die letzte? Wäre echt froh, wenn Ihr mir helfen könnt, da ich kurz davor bin, gegen die Wand zu laufen.
Danke im voraus.

Powie

also das hört sich eventuell so an als überschreibt deine zweite query den inhalt der ersten.
ansonsten aber ist das eventuell auch eine möglichkeit das mit einer einzigen query zu machen, indem man dem where eine liste gibt in der art:
select * from tabelle where zahl in (1,2,3,4)
poste mal den code !

hausmeister

Hallo Powie, hier ist mal der Code:
1. Query
$Name = $_POST[\'Name\'];
$select1=mysql_query(\"SELECT * FROM tabelle WHERE Name =\'$Name\'\");
while ($row=mysql_fetch_assoc($select1)){
$zahl = $row[\'zeile\'];
}
Liefert als Ergebnis 1, 2 und 3 zurück
2. Query
$select2=mysql_query(\"SELECT * FROM tabelle2 WHERE Zahl = \'$zahl\'\");
while ($row=mysql_fetch_assoc($select2)) {
echo...... usw.
}
Dies gibt dann lediglich eine Zeile als Resultat aus und zwar nur die letzte Zahl, also die 3.
Vielleicht bin ich auch total auf dem Holzweg.

dec

$zahl ist am schluss immer 3, wenn du die queries so nacheinander laufen lässt...

spass ist, was ihr draus macht


hausmeister

@DEC
Ja das ist mir eben auch schon aufgefallen  /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" />
Würde es evtl. mit \"for\" klappen. z.B. ungefähr so...
$abfrage=\"SELECT * FROM tabelle2 WHERE Zahl=\'$zahl\'\";
    $ergebnis=@mysql_query($abfrage,$con);
    for ($i=0;$i
          $result[$i]=@mysql_fetch_array($ergebnis);
    }

Powie

poste mal deinen Code in Gesamtheit wie er im Script steht !? Du wirst die beiden Schleifen wohl verschachteln müssen oder aber einfach das MySQL Statement entsprechend anpassen sollen das es auch mit einer Query geht!

is doch ganz klar!
die erste Schleife wird 3 Mal durchlaufen, beim letzten Mal wird der Wert 3 der Variable $zahl zugewiesen. Ist halt kein array!
Du musst einfach den 2. Select in die While Schleife für den ersten packen.
Etwa so:
$Name = $_POST[\'Name\'];
$select1=mysql_query(\"SELECT * FROM tabelle WHERE Name =\'$Name\'\");
while ($row=mysql_fetch_assoc($select1)){
  $zahl = $row[\'zeile\'];
  $select2=mysql_query(\"SELECT * FROM tabelle2 WHERE Zahl = \'$zahl\'\");
  while ($row=mysql_fetch_assoc($select2)) {
    echo...... usw.
  }
}
alles klar?
Greetz!
D-Day

all your base are belong to us / Discord