phpbar.de logo

Mailinglisten-Archive

[php] mysql und Menüs erzeugen

[php] mysql und Menüs erzeugen

Ulrich Wiederhold wubuwei at gmx.net
Mon Feb 21 13:51:51 CET 2005


Hallo,
ich habe in einer MYSQL-Datenbank diverse Fotoalben gespeichert und sie soweit
bekannt mit den Informationen "Kontinent, Land, Ort" versehen.

Aus diesen Informationen möchte ich nun eine Menüstruktur erstellen, wie
sie auf www.uli.ahrens.cx zu sehen ist. (Die Links funktionieren noch
nicht). Hier ist alles noch manuell eingetragen.

Ich verwende zumdem vlib (http://vlib.clausvb.de/), um den php-Code vom
html-Output zu trennen.

Ich habe nun die Daten in ein Array ausgelesen und über ein TMPL_LOOP im
html-Template ausgegeben.

$sql = "SELECT
          Kontinent,
          Land,
          Ort
        FROM
          album
        ORDER BY
          Kontinent,
          Land,
          Ort";

$nav_info = mysql_query($sql) OR die(mysql_error());

$nav_data = array();

while ($ausgabe = mysql_fetch_assoc ($nav_info)) {
     array_push($nav_data, array(
        'Kontinent' => $ausgabe['Kontinent'],
        'Land' => $ausgabe['Land'],
        'Ort' => $ausgabe['Ort']
         )
     );
}

$tmpl->setloop('nav_data', $nav_data);


Das Array sieht dann wie folgt aus:

Array ( 
   [0] => Array ( 
      [Kontinent] => Afrika 
      [Land] => Kenia 
      [Ort] =>  
      )
   [1] => Array ( 
      [Kontinent] => Afrika 
      [Land] => Kenia 
      [Ort] => Mosambike
      ) 
   [2] => Array ( 
      [Kontinent] => Europa 
      [Land] => Deutschland 
      [Ort] => Köln 
      ) 
)

Im Template wird das ganze wie folgt ausgegeben:
<tmpl_loop name='nav_data'>
        <li><a href="#" class="pfeil">{tmpl_var name=Kontinent}</a>
           <ul>
             <li><a href="#" class="pfeil">{tmpl_var name='Land'}</a>
             <ul>
               <li><a href="#">{tmpl_var name='Ort'}</a></li>
             </ul>  
             </li>
           </ul>
         </li>
</tmpl_loop>


Mein Problem ist nun:
1. Es gibt ein Album generell über Kenia und eines über Kenia ->
Mosambike. Zur Zeit werden 2 Menüs generiert:

Afrika - Kenia
Afrika - Kenia - Mosambike

Ich möchte aber:
Afrika - Kenia
       - Kenia - Mosambike

und vielleicht noch Tanzania, Südafrika o.ä., ohne jeweils einen
separaten Afrika-Eintrag. Ich möchte auch nicht mehrfache Land-Einträge,
wenn ich z.B. in Kenia verschiedene Städte besucht habe und separate
Alben darstellen möchte.

Kann mir da jemand weiterhelfen? Muß nicht unbedingt mit dem Loop-Array
sein. Habe es auch schon mit mehrdimensionalen Arrays versucht, komme
aber nicht weiter.

2. (nicht ganz so dringend, klärt sich vielleicht bei der Lösung von 1)
Wenn z.B. "Ort" nicht bekannt ist, wird trotzdem ein Feld in der
Navigation dargestellt, allerdings ohne Inhalt. Ich möchte aber, daß in
solch einem Fall gar kein Feld dargestellt wird.

So, ich hoffe, ich konnte mich verständlich ausdrücken und es kann mir
jemand helfen. Vielen Dank.

Gruß
Uli


php::bar PHP Wiki   -   Listenarchive