Smarty: while in while schleife

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Smarty: while in while schleife

    Wiedermal hab ich ein problem mit smarty. ich weiß nicht warum.

    jedenfalls das problem ist so: ich hole menüs(das können mehrere sein) aus der datenbank und will die untermenüs auch holen(das können auch mehrere sein). jedoch, wenn ich die untermenüs auch herraushole wird nurnoch 1 normales menü angezeigt und falsche untermenüs... als normale ausgabe von php mit echo klappt es wunderbar. mit smarty jedoch nicht...
    ohne smarty siehts so aus:
    Code:
    Pakete
    -Pakete anzeigen
    -blubb
    Kartensystem
    -rerere
    mit smarty nurnoch so
    Code:
    Pakete
    -rerere   //eigentlich das untermenü von kartensystem
    das template sieht so aus:
    Code:
    {section name=men loop=$menu}
    		<ul id="leftNavigation">
    		{$menu[men].name}
                     <br />
                     {section name=men loop=$submenu}-{$submenu[men].name}<br />{/section}
             	</ul>
    {/section}
    und der php teil:
    PHP-Code:
             $mysql = new Mysql("SELECT * FROM rcf_".$_CONFIG['mysql']['nr']."_menu");
             
    $data = array();
             while(
    $row $mysql->fetch_row())
             {
                    
    array_push($data, array(
                             
    'id' => $secure->giveSecure($row[0]),
                             
    'name' => $secure->giveSecure($row[1]),
                             
    'jsID' => $secure->giveSecure($row[2])
                    ));
                    echo 
    $row[1]."<br />";

             
                 
    $data2 = array();
                    
    $mysql2 = new Mysql("SELECT * FROM rcf_".$_CONFIG['mysql']['nr']."_submenu WHERE menuid = '".$row[0]."'");
                    while(
    $row $mysql2->fetch_row())
                    {
                             
    array_push($data2, array(
                             
    'id' => $secure->giveSecure($row[0]),
                             
    'name' => $secure->giveSecure($row[1]),
                             
    'link' => $secure->giveSecure($row[2])
                            ));
                             echo 
    "-".$row[1]."<br />";
                    }
             }
             
    $smarty->assign('menu'$data);
             
    $smarty->assign('submenu'$data2); 
    ich hoffe ihr könnt mir helfen, das ist echt wichtig und ich komm einfach nicht drauf warum das falsch ist

  • #2
    Das Problem ist das du $data2 überschreibst.
    Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

    Kommentar


    • #3
      Original geschrieben von tontechniker
      Das Problem ist das du $data2 überschreibst.
      wo wird das denn überschrieben? bin ich blind

      Kommentar


      • #4
        PHP-Code:
        ...
        while(
        $row $mysql->fetch_row())
        {
           ...
           
        $data2 = array();
           ...

        Du schreibst für jede Zeile in der Datenbank ein neues Array - und überschreibst es wieder.
        Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

        Kommentar


        • #5
          ahhh danke das war der fehler.. da hätte ich lange suchen können und mir wäre es nicht aufgefallen

          aber jetzt hab ich noch ein anderes problem
          jetzt wird mit smarty es so angezeigt:
          Code:
          Pakete
          -Pakete anzeigen
          -blubb
          -rerere
          das -rerere dürfte dort aber garnicht stehen. sondern ein neuer "oberpunkt" da sein wird wieder ein logikfehler sein

          Kommentar


          • #6
            Du musst das Untermenü mit in das Menu reinschreiben und dann durchlaufen. Ansonsten hast du doch keine Trennung zwischen den einzelnen Punkten.
            Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

            Kommentar


            • #7
              tut mir leid das ich mich irgendwie dumm anstellte, aber hab ich das nicht drin?

              Code:
              {section name=men loop=$menu}
              		<ul id="leftNavigation">
              		{$menu[men].name}
                               <br />
                               {section name=men loop=$submenu}-{$submenu[men].name}<br />{/section}
                       	</ul>
              {/section}
              oder wie soll ich das anders machen?

              Kommentar


              • #8
                hat keiner ne idee warum?
                sorry für doppelpost

                so hab neues hinbekommen

                wen ich beidesal name=men habe, gehts nicht... so siehts schon besser aus:

                Code:
                Pakete 
                    * Pakete anzeigen
                    * blubb
                    * rerere
                Kartensystem
                    *  Pakete anzeigen
                    * blubb
                    * rerere
                jetzt müsste aber unter kartensystem nur rerere stehen.. und rerere nicht unter pakete

                template sieht so aus:
                Code:
                {section name=men loop=$menu}
                		<ul id="leftNavigation">
                		{$menu[men].name}
                                 {section name=me loop=$submenu}<li><a href="index.php?site={$submenu[me].link}">{$submenu[me].name}</a></li>{/section}
                         	</ul>
                {/section}
                Zuletzt geändert von Rudelwolf; 23.07.2007, 12:30.

                Kommentar

                Lädt...
                X