Author Topic: loop und leeres loop array (bug?)  (Read 1113 times)

0 Members and 1 Guest are viewing this topic.

Björn

  • Guest
loop und leeres loop array (bug?)
on: Tue, 01. August 2006 - 16:31:44
Hi,

ich benutze in meinen Templates loops um die Inhalte eines selbst erstellten Arrays auszugeben.

Das sieht dann zB so aus:
Code: [Select]
<tmpl_loop name=streaming>
      <tr>
             <td valign="top"><a href="{tmpl_var name=play_url}">{tmpl_var name=author} - {tmpl_var name=title} ({tmpl_var name=username})</a>
             </td>
      </tr>
</tmpl_loop>

Code: [Select]
while ($row = mysql_fetch_array($result,MYSQL_ASSOC)){
        array_push($streaming, array(
                        title => $row[title],
                        author => $row[author],
                        play_url => $play_url,
                        username => $row[username],
                        albumname => $row[albumname],
                        tracklength => $row[tracklength]
                )
        );
}
$tmpl->setloop(streaming, $streaming);
Stark vereinfacht, da passiert noch ein bisschen mehr ;-)

Jetzt habe ich das Problem, dass es durchaus vorkommen kann, dass mein Query keine Ergebnisse liefert und ich somit ein leeres Array als Basis für den Loop habe.
Ich würde jetzt erwarten, dass <tmpl_loop name=streaming> direkt wieder raus springt, also keine Ausgaben gemacht werden. Der Loop wird aber hier genau einmal durchlaufen.

Ist das ein Bug oder "by Design"?
Wenn "by Design": Wie krieg ich das schön? =)

Grüße,
Björn

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
Re: loop und leeres loop array (bug?)
Reply #1 on: Tue, 01. August 2006 - 16:51:46
Its not a bug, its a feature.

Die Lösung mit TMPL_IF und TMPL_LOOP, denn so wird der LOOP nur angezeigt, wenn er nicht leer ist.

Gruß
Claus

Björn

  • Guest
Re: loop und leeres loop array (bug?)
Reply #2 on: Tue, 01. August 2006 - 17:02:58
Mh ja die Lösung hatte ich auch schon. Allerdings macht es die Sache für einen reinen Designer unnötig kompliziert. Bin ja schon froh, wenn ich ihm das Konzept der Schleifen beigebogen bekomme und dann auch noch Schachteln von Bedingung _und_ Schleife? ;D

Naja mal schaun, wie ich das hinkriege. Danke :-)

Btw: Warum wurde das so gebaut? Mir will irgendwie kein Fall einfallen, bei dem ich auch einen leeren Loop einmal ausführen möchte. Was ich Klasse fände wär ein Parameter, den ich an setLoop übergebe, der das Verhalten bestimmt (Featurerequest ;-))

Grüße,
Björn

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
Re: loop und leeres loop array (bug?)
Reply #3 on: Tue, 01. August 2006 - 17:11:51
Quote
Warum wurde das so gebaut?

Ganz einfach, eine WHILE-Schleife unter PHP, C/C++, Turbo Pascal, Delphi, Java (und wie sie alle heißen) funktioniert identisch. Das Wort "Loop" heißt übersetzt "Schleife". Wieso soll vlibTemplate ein Verhalten, das jeder kennt und jeder erwartet abändern?

Ein Designer, der in der Lage ist eine WHILE-Schleife zu verstehen sollte auch in der Lage sein eine WENN-DANN Struktur zu verstehen. Immerhin hat dieser Designer ja schon Tools wie Frontpage hinter sich gelassen, also wird er neben Platzhaltern und Template-Variablen auch noch in der Lage sein ein TMPL_IF zu verstehen. Ansonsten will ich nicht wissen, wie dieser Designer mit Bugs vom IE bzw. unterschiedlichen Browsern, Browserweichen und den verschiedenen Interpretationen von CSS klar kommt. Das ist doch tausendmal komplizierter als TMPL_IF und ein richtiger Designer (der seinen Namen auch verdient) macht eben kein "Klicki-Bunti", der kann (X)HTML und CSS.

Gruß
Claus