while in while
Reyn
- php
Hi, hab hier n kleines Problemchen :(
und zwar lies er einmal eine Datenbank "seite_kategorie" aus und denn denn inhalt der Navigationsleiste
Include("connect.inc.php");
$abfrage = "SELECT * FROM seite_kategorie";
$ergebnis = mysql_query($abfrage, $verbindung);
while($kategorie = mysql_fetch_object($ergebnis))
{
Echo"<tr><td width='140' height='40' align='left' valign='middle' style='background-image:url(Style/navigation/Navi1-1.jpg);'><div style='margin-top:2px; margin-left:5px; font-size:20px; color:#e00000;'>$kategorie->name</div></td></tr>";
$abfrage = "SELECT * FROM seite WHERE kategorie = '$kategorie->name'";
$ergebnis = mysql_query($abfrage, $verbindung);
while($row = mysql_fetch_object($ergebnis))
{
Echo"<tr><td class='menuoff' onmouseover="className='menuon';" onmouseout="className='menuoff';" onclick="location.href='?id=$row->id';">$row->name</td></tr>";
}
Echo"<tr><td width='140' height='40' style='background-image:url(Style/navigation/Navi1-3.jpg);'></td></tr>";
}
Hoffe Ihr könnt mir Helfen.
Vielen Dank in vorraus!
Hi, hab hier n kleines Problemchen :(
und zwar lies er einmal eine Datenbank "seite_kategorie" aus und denn denn inhalt der Navigationsleiste, aber $abfrage = "SELECT * FROM seite_kategorie"; wiedeholt er nicht obwohl in der Datenbank 3 einträge sind!
Include("connect.inc.php");
$abfrage = "SELECT * FROM seite_kategorie";
$ergebnis = mysql_query($abfrage, $verbindung);
while($kategorie = mysql_fetch_object($ergebnis))
{
Echo"<tr><td width='140' height='40' align='left' valign='middle' style='background-image:url(Style/navigation/Navi1-1.jpg);'><div style='margin-top:2px; margin-left:5px; font-size:20px; color:#e00000;'>$kategorie->name</div></td></tr>";$abfrage = "SELECT * FROM seite WHERE kategorie = '$kategorie->name'";
$ergebnis = mysql_query($abfrage, $verbindung);
while($row = mysql_fetch_object($ergebnis))
{
Echo"<tr><td class='menuoff' onmouseover="className='menuon';" onmouseout="className='menuoff';" onclick="location.href='?id=$row->id';">$row->name</td></tr>";
}Echo"<tr><td width='140' height='40' style='background-image:url(Style/navigation/Navi1-3.jpg);'></td></tr>";
}Hoffe Ihr könnt mir Helfen.
und endschuldigung für Doppelposting, hab zu schneller finder :)
Vielen Dank in vorraus!
Hallo Reyn
Include("connect.inc.php");
$abfrage = "SELECT * FROM seite_kategorie";
$ergebnis = mysql_query($abfrage, $verbindung);
an dieser Stelle wäre es gut, wenn du mehr Fehlerbehandlung treiben würdest:
if($ergebnis !== false) {
//do something
} else {
//error do whatever you like, for example report the error
echo 'Fehler bei der Datenbankabfrage ' . mysql_error() . '<br/>';
}
while($kategorie = mysql_fetch_object($ergebnis))
{
$abfrage = "SELECT * FROM seite WHERE kategorie = '$kategorie->name'";
$ergebnis = mysql_query($abfrage, $verbindung);
und hier liegt IMHO dein eigentliches Problem: du überschreibst $ergebnis. Nenne die Variable innerhalb der Schleife anders und alles wird gut (Vorschlag: nenn sie doch einfach $ergebnisKategorie ...) Ich würde auch $abfrage umbenennen, aber das ist nicht zwingend nötig, weil er die erste Abfrage ja schon ausgeführt hat, aber schöner wäre es Meiner Meinung nach schon. Ach ja: Falls du das tust, vergiss nicht, des auch bei mysql_query() zu berücksichtigen.
$abfrageKategorie = "SELECT * FROM seite WHERE kategorie = '$kategorie->name'";
$ergebnisKategorie = mysql_query($abfrageKategorie, $verbindung);
ich meine: hier -----------------^
Hab sowas selbst schon ab und zu vegessen (Code per Copy and Paste übernommen und übeall geändert, aber im mysql_query() noch die falsche Anfrage stehen gehabt), ist ziemlich ärgerlich.
while($row = mysql_fetch_object($ergebnis))
{
}
}
und endschuldigung für Doppelposting, hab zu schneller finder :)
Doppelposting? "finder"?
liebe Grüße mbr
Finger sollte es bedeuten :)
was ein so kleiner mini befehl alles ausrichten kann hehe
Vielen Dank :)
Hello,
und hier liegt IMHO dein eigentliches Problem: du überschreibst $ergebnis. Nenne die Variable innerhalb der Schleife anders und alles wird gut
Da wird gar nichts gut, weil der/die gut Reyn nämlich lost handles auf Ergebnissets erzeugt, alse die handles auf die Ergebnissets überschreibt, und damit der Speicherplatz aufgefressen wird...
Wenn man SQL-Queries in Schleifen ausführt, kommt man i.d.R. um ein "Free_Result" nicht drum herum.
Es ginge bei anderer Abfragetechnik aber auch ohne diese Abfrageschleife!
Ein harzliches Glückauf
Tom vom Berg