Smarty&Menu

dorigo

Grünschnabel
Hallo,

bisher hatte ich meine Daten samt Navi in der Datenbank. Es funktioniert auch.
Nun bin ich dabei, auf Smarty umzustellen.

Das Menü:
-----------------------------------------------------------------------------
PHP:
$result = mysql_query("SELECT * FROM menu ORDER BY 'sort' ASC");
 while($row = mysql_fetch_array($result)){


             
                echo ":: <a href=\"index.php?m=$row[mid]&s=0\">$row[menu]</a><br>";
                
                
 $result2 = mysql_query("SELECT * FROM submenu WHERE mid='$row[mid]' ORDER BY 'sort' ASC");
 while($row = mysql_fetch_array($result2)){
 if ($m==$row[mid]){


              
               echo "&nbsp;&nbsp;&nbsp; <a href=\"index.php?m=$row[mid]&s=$row[sid]\">$row[submenu]</a><br>\n";
-------------------------------------------------------------------------------------------

Die Hauptkategorie erscheint ohne Fehler. Nur zeigt es keine Unterkategorien an.

In der Template habe ich es mit: {include_php file="menu.php"} eingebunden, und an der Stelle, ander das Content eingefügt wird: {include_php file="content.php"}

Kann mir jemand helfen?

Gruss von Ludwig
 
Hi,

hab zwar dein script net ganz kapiert, aber hier mal nen lösungsansatz.

Das kommt in deine php-Datei:

PHP:
$result = mysql_query("SELECT * FROM menu ORDER BY 'sort' ASC");
while($row = mysql_fetch_array($result))
    {
        $haupt[] = $row;
        
        if(isset($_GET["m"])
            {
                $result2 = mysql_query("SELECT * FROM submenu WHERE mid='$m' ORDER BY 'sort' ASC");
                while($row2 = mysql_fetch_array($result2))
                    {
                    $sub[] = $row2;
                    }
            }
    }
$smarty->assign('menu', $haupt);
$smarty->assign('subm', $sub);
$smarty->display('deintemplate');

Und in das Template dann:
Code:
{foreach from=$menu item=show_menu}
:: <a href="index.php?m={ $show_menu.mid }&s=0">{ $show_menu.menu }</a><br>
{foreach from=$subm item=show_subm}
&nbsp;&nbsp;&nbsp; <a href="index.php?m={ $show_menu.mid }&s={ $show_subm.sid }">{ $show_subm.submenu}</a><br>
{/foreach}
{/foreach}

Das Submenu sollte sich nur öffnen wenn man vorher auf die Hauptkategorie geklickt hat.

Hoffentlich hab ich jetzt auf die schnelle nix falsch gemacht, war ein wenig verwirrt von deinen ganzen variablen :-)

pnx
 
Es will einfach nicht ... :confused:

Die Fehlermeldung kommt bei.
PHP:
        if(isset($_GET["m"]) 
            {  // Fehlermeldung in dieser Zeile
                $result2 = mysql_query("SELECT

Ich habe den oberen Code in die index.php eingefügt, und den

{foreach from=$menu item=show_menu}
:: <a href="index.php?m={ $show_menu.mid }&s=0">{ $show_menu.menu }</a><br>
{foreach from=$subm item=show_subm}
&nbsp;&nbsp;&nbsp; <a href="index.php?m={ $show_menu.mid }&s={ $show_subm.sid }">{ $show_subm.submenu}</a><br>
{/foreach}
{/foreach}


in die footer.tpl.

Die content.php
PHP:
if (!empty($m)) {
	 if (!empty($s)) {
	 $result = mysql_query("SELECT * FROM submenu WHERE sid='$s'");
	 $row = mysql_fetch_array($result);
     $row[content] = stripslashes($row[content]);
     echo "$row[content]\n";
        	      }
	            else {
		 $result = mysql_query("SELECT * FROM menu WHERE mid='$m'");
		 $row = mysql_fetch_array($result);
         $row[content] = stripslashes($row[content]);
         echo "$row[content]\n";
                  }
	              }
        else {
      $result = mysql_query("SELECT * FROM menu WHERE home='1'");
      $row = mysql_fetch_array($result);
      $row[content] = stripslashes($row[content]);
      echo "$row[content]\n";
             }
die ich mit {include_php file="content.php"} in die header.tpl einfügte, hat ja eigentlich mit der Navigation nichts zu tun?
 
Sorry hatte da ne Klammer vergessenzu schließen ;)

Ersetze einfach die if-Anweisung durch:
PHP:
if(isset($_GET["m"]) && $_GET["m"] == $row["mid"])
Der Rest sollte gestimmt haben.

pnx

PS: Du solltest übrigens die Arrays $haupt und $sub vor dem ersten while() leeren.
PHP:
$haupt = array();
$sub = array();
 
Zuletzt bearbeitet:
Zurück