[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 immer

    1212

    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 😉


Anmelden zum Antworten