Frage Smarty und die Schleifen

luni22

Grünschnabel
Abend / Moin Leute und zwar bin ich gerade dabei ein Menü ins Template Smarty zu Übertragen

leider komme ich nicht weiter


der Orginal Code sieht so aus

PHP:
$GetCat = mysql_query("SELECT * FROM main_category ORDER BY id");
while($Gc = mysql_fetch_array($GetCat)) {
$id = $Gc['id'];
$title = $Gc['title'];
echo "<tr><td class=\"menutitel\"><center><b>";
if(SEO == 1) { echo ''.$title.''; }
else
{ echo ''.$title.''; }
echo "</b></center></td></tr>";

$GetSCat = mysql_query("SELECT * FROM category WHERE main_category='".$id."' ORDER BY id");
while($GSc = mysql_fetch_array($GetSCat)) {
$Sid = $GSc['id'];
$remove = array("/", ".", "@", "+", "-", "_", "<", ">", "?");
$Stitle = str_replace($remove, '', $GSc['title']);
if(SEO == 1) { echo '<tr><td class="menu"><a href="'.URL.'c/'.$Stitle.'/'.$Sid.'">'.$Stitle.'</a></td></tr>'; }
else
{ echo '<tr><td class="menu"><a href="'.URL.'category.php?id='.$Sid.'">'.$Stitle.'</a></td></tr>'; }
} 
}


und gibt das aus sehe Bild das Menü


47058996yc5.png


nun habe ich das so gemacht

da ich alles neu schreibe in Class nicht irrtieren lassen von $db-> und $this->

PHP:
                                     $this->title          =     $conf->seitenname;

                                     $this->sql            =    "SELECT * FROM main_category ORDER BY id ";
                                     $result               =    $db->query($this->sql);
                             
                              
                                     $this->_array1        =    array();
                            while ($menucat       =    $db->fetch_array($result))
                            {
                                     $id = $menucat['id'];
                                     $this->_array1[]       =    $menucat;
                                     
                                     
                              
                                     $this->sql1                  =    "SELECT * FROM category WHERE main_category = $id ORDER BY id";
                                     $result1                     =    $db->query($this->sql1);
                              
                                     $this->_array                =    array();
                              while ($menulist             =    $db->fetch_array($result1))
                              {
                                     $this->_array[]       =    $menulist;
                              }
                            }

                              $temp->assign(array(
                                                  'L_TITLE'                    => $this->title,
                                                  'L_ARRAY'                    => $this->_array,
                                                  'L_ARRAY1'                   => $this->_array1
                                                 ));

Ausschnitt der tpl Datei sieht so aus

PHP:
{foreach item="menucat" from=$L_ARRAY1}

                                   <tr>
                                            <td class="menutitel"><center><b>{$menucat.title}</b></center>
                                       </td>
                                  </tr>


{foreach item="menulist" from=$L_ARRAY}

                              
                                   <tr>
                                            <td class="menu"><a href="category.php?id={$menulist.id}">{$menulist.title}</a>
                                      </td>
                                   </tr>
                             
                       
 {/foreach}
 {/foreach}

aber er gibt nur das aus sehe Bild das Menü

52949478zl6.png



was ist mein fehler habe schon mehre Varianten versucht ?
 
Hi!

Verzeih, wenn es Blödsinn ist, aber so wie ich es sehe, überschreibst Du das "innere Array" ($this->_array) doch jeweils bei einer neuen main_category...?

-> Du könntest die Unterkategorien jeweils als Arrays eines Arrays sammeln und so Smarty übergeben ...?

Liebe Grüße,
Mark.
 
hmmm verstehe jetzt nicht ganz wie du dass meinst kannste mir mal ein beispiel zeigen ?

wenn ich dass jetzt so mache

PHP:
                                     $this->sql            =    "SELECT * FROM main_category ORDER BY id ";
                                     $result               =    $db->query($this->sql);
                             
                                     
                                     $this->_array1        =    array();
                                     $this->_array         =    array();
                            while ($menucat       =    $db->fetch_array($result))
                            {
                                     $id = $menucat['id'];
                                     
                                     
                                    
                                     $this->_array1[]      =    $menucat;
                                     $this->sql1                  =    "SELECT * FROM category WHERE main_category = $id ORDER BY id";
                                     $result1                     =    $db->query($this->sql1);
                              
                                    
                              while ($menulist             =    $db->fetch_array($result1))
                              {
                                     
                                     $this->_array[]        =    $menulist;
                             }        
                              
                            
}

                              $temp->assign(array(
                                                  'L_TITLE'                    => $this->title,
                                                  'L_ARRAY'                    => $this->_array,
                                                  'L_ARRAY1'                   => $this->_array1
                                                 ));

kommt nun das bei raus

43206253bs0.png


er ordnet also die untercategorie nicht der categorie zu zum beispiel ->
Liebe ist die Categorie und die untercategorie wären den

Liebeskummer, Gefühle, Herzen und Hab Dich Lieb

mfg luni22


EDIT: hat sich erledigt hab mir ein verschachteltes Array erzeugt denn hat es geklappt
 
Zuletzt bearbeitet:
Als grobes Beispiel wie ich das immer gemacht habe:
PHP:
$query = "SELECT ...menu...";
$result = $db->query($query);
$menu = array();
foreach($result as $row) {
    $submenu=array();
    //Hier dann Query wegen Submenu usw.
    foreach($result_sub as $row_sub) {
        array_push($submenu,array("link"=>$row_sub['link'],"name"=>$row_sub['name']));
    }
    array_push($menu,array("link"=>$row['link'],"name"=>$row['name'],"submenu"=>$submenu));
}
$tpl->assign("menu",$menu);

In der Template Datei:
Code:
<table>
{foreach item="menuitem" from=$menu}
<tr>
<th>{$menuitem.name}</th>
</tr>
{foreach item="submenu" from=$menu.submenu}
<tr>
<td><a href="{$submenu.link}">{$submenu.name}</a>
</tr>
{/foreach}
{/foreach}
</table>

Ich hoffe das ganze hilft dir ein wenig weiter
 
Ja danke hat sich schon erledigt hab mir ein verschachteltes Array erzeugt denn hat es geklappt.

Aber trotzdem nochmal danke für die hilfe
 
Zurück