[PHP/MYSQL] Query gibt alles doppelt aus
-
ich habe folgenden Code:
while($kat = mysql_fetch_object($kats)) { array_push($send_kat, array($kat->id, $kat->titel)); if(isset($_GET[kat])) { $page_titel .= " - ".$kat->titel; $titel_x = mysql_query("SELECT `id`, `titel` FROM `hilfe_texte` WHERE `parent` = '1'"); while($kat_titel = mysql_fetch_object($titel_x)) { array_push($send_titel, array($kat_titel->id, $kat_titel->titel)); echo $kat_titel->id; } $smarty->assign("titel", $send_titel); $smarty->assign("show_titel","true"); $smarty->assign("show_t_id", $_GET[kat]); } }
die tabelle sieht so aus:
id | parent | titel
--------------------
1 | 1 |etwas
2 | 1 |noch etwas
.....jetzt will ich einfach nur immer id und titel der reihe nach ausgeben (der rest ist egal).
aber wenn ich das oben hernehm gibt er immer1212
aus.
-
Von was für einem Query ist denn die äußere while-Schleife?
-
$kats = mysql_query("SELECT * FROM `hilfe_kategorien`"); $send_kat = array(); $send_titel = array(); while($kat = mysql_fetch_object($kats)) { array_push($send_kat, array($kat->id, $kat->titel)); if(isset($_GET[kat])) { $page_titel .= " - ".$kat->titel; $titel_x = mysql_query("SELECT `id`, `titel` FROM `hilfe_texte` WHERE `parent` = '1'"); while($kat_titel = mysql_fetch_object($titel_x)) { array_push($send_titel, array($kat_titel->id, $kat_titel->titel)); echo $kat_titel->id; } $smarty->assign("titel", $send_titel); $smarty->assign("show_titel","true"); $smarty->assign("show_t_id", $_GET[kat]); } }
-
PHP führt deine Anweisung so oft durch, wie die erste while-schleife durchlaufen wird. Dies scheint bei dir 2 mal der Fall zu sein, deshalb wird die Anweisung
$titel_x = mysql_query("SELECT `id`, `titel` FROM `hilfe_texte` WHERE `parent` = '1'"); while($kat_titel = mysql_fetch_object($titel_x)) { array_push($send_titel, array($kat_titel->id, $kat_titel->titel)); echo $kat_titel->id; }
auch mehrmals ausgeführt. Du musst also sicher stellen das
$kats = mysql_query("SELECT * FROM `hilfe_kategorien`"); $send_kat = array(); $send_titel = array(); while($kat = mysql_fetch_object($kats)) { ... }
nur 1 mal ausgeführt wird, ansonsten bleibt dir nur die Möglichkeit in dieser while-Schleife eine Abfrage nach der Anzahl der Durchläufe zu machen und alles was über 1 ist anweisen deinen zweiten query zu überspringen, sonst führt er den jedes mal mit aus.
-
oh. stimmt. thx