Author Topic: Loop und Navigation erzeugen  (Read 841 times)

0 Members and 1 Guest are viewing this topic.

Uli

  • Guest
Loop und Navigation erzeugen
on: Sun, 20. February 2005 - 19:44:00
Hallo,
ich habe diverse Fotoalben in einer Datenbank und dem Album Kontinent, Land und Ort zugeordnet. Manchmal ist allerdings der Ort nicht gesetzt, wenn ich z.B. eine Rundreise durch Italien und nicht eine Reise nach Rom im Album gespeichert habe.

Ich lese das Array wie folgt ein:
sql = "SELECT
     Kontinent,
     Land,
     Ort
   FROM
          album
   ORDER BY
     Kontinent,
     Land,
     Ort";
   
nav_info = mysql_query(sql) OR die(mysql_error());
nav_data = ();

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

tmpl->setloop(nav_data, nav_data);


Die Ausgabe sieht so aus:
<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>

Ich habe nun 2 Probleme:
1. Wenn ein Kontinent oder Land mehrfach im Array auftaucht, weil ich z.B. ein Album aus Italien und eines aus Spanien habe, steht in der Navigation
Europa -> Italien
Europa -> Spanien

Ich h�tte aber gerne eine Ausgabe
Europa -> Italien
           -> Spanien

Das gleiche Problem bei den L�ndern. Ich habe es mit tmpl_if versucht, leider ohne Erfolg.

2. Wenn z.B. kein Ort eingetragen ist, soll sich kein leeres K�stchen �ffnen sondern der Eintrag gar nicht erst erzeugt werden.

Danke.
Gru�
Uli

Offline StefanD

  • Newbie
  • *
  • Posts: 4
Loop und Navigation erzeugen
Reply #1 on: Tue, 22. February 2005 - 15:16:10
Hallo Uli,

ich w�rde das Problem nicht direkt im Template l�sen sondern bereits beim Aufbau des Arrays unter Verwendung des ?-Operators:

Quote
previous_kontinent = ;
previous_land = ;

while (ausgabe = mysql_fetch_array (nav_info))
{
   array_push(nav_data, array(
      Kontinent => ausgabe[Kontinent] == previous_kontinent ? : ausgabe[Kontinent],
      Land => ausgabe[Land] == previous_land ? : ausgabe[Land],
      Ort => ausgabe[Ort]));

   previous_kontinent = ausgabe[Kontinent];
   previous_land = ausgabe[Land];

}

Ich hoffe dies hilft die weiter.

Gruss,
Stefan