[Smarty] Array sortieren und ausgeben

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Smarty] Array sortieren und ausgeben

    Ich lese Daten aus einer MySQL Datenbank mit mysql_fetch_assoc in ein Array ein. Bisher gebe ich die Daten dann mit einer while Schleife aus.

    Nun möchte ich diese Datensätze aber noch nach Kategorie sortieren und dann mit mehreren Schleifen ausgeben.

    Beispiel:

    ID KAT ID BEZ
    1 1 Test
    2 1 bla bla
    3 2 Test 2

    Nun möchte ich zuerst alle Daten mit der KAT-ID 1 ausgeben und später dann die Daten mit der KAT ID 2. Wenn ich das mit mehreren Abfragen löse ist das kein Problem - es wäre aber doch sicher von der Performance besser zuerst alle Daten auszulesen und dann anschließend zu sortieren. Außerdem möchte ich noch einen Text über die jeweilige Kategorie setzen.

    In PHP würde das das so lösen:


    PHP-Code:
    $letzte_kategorie = -1;
    while(
    $row mysql_fetch_assoc($result)) {
        if(
    $row['KAT_ID'] != $letzte_kategorie) {
            echo 
    'Jetzt kommt Kategorie '.$row['KAT_ID'];
            
    $letzte_kategorie $row['KAT_ID'];
        }
        echo 
    $row['BEZ']; 
    Wie geht so etwas mit Smarty ?

  • #2
    Noch performanter ist es, die Daten schon von dem DB-Server sortieren zu lassen:
    SELECT kat_id, bez FROM tabelle ORDER BY kat_id ASC

    Kommentar


    • #3
      Das war auch mein erster Gedanke - ich will aber pro Kategorie noch eine Überschrit und einen Text drübersetzen.

      Beispiel:

      Kategorie 1
      Erklärung
      while-Schleife mit Datensätzen zu KAT 1

      Kategorie 2
      Erklärung
      while-Schleife mit Datensätzen zu KAT 2

      Kommentar


      • #4
        Original geschrieben von Dominic
        Das war auch mein erster Gedanke - ich will aber pro Kategorie noch eine Überschrit und einen Text drübersetzen.
        Dann lasse dir die Daten von MySQL nach Kategorie sortiert liefern, und implementiere in der Ausgabe einen Gruppenwechsel.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Original geschrieben von wahsaga
          Dann lasse dir die Daten von MySQL nach Kategorie sortiert liefern, und implementiere in der Ausgabe einen Gruppenwechsel.
          Mein Problem ist ja konkret die Implementierung des Gruppenwechsels in einem Smarty Template. In PHP würde ich es wie oben beschrieben machen.

          Leider hilft mir ddie Smarty Dokumentation an dieser Stelle auch nicht weiter.

          Vielen Dank für Euere Hilfe.

          Kommentar


          • #6
            Das haben wir hier doch schon mal durchgekaut.

            PHP-Code:

            {foreach from=$arrNix item=nochweniger}
                {if 
            $tempCat neq $nochweniger.catname}
                    <
            h2>{$nochweniger.catname}</h2>
                {/if}
                
                {* DO 
            THE REST OUTPUT *}
                
                {
            assign var="tempCat" value=$nochweniger.catname}
            {/foreach} 

            Kommentar


            • #7
              Original geschrieben von Schnoop
              Das haben wir hier doch schon mal durchgekaut.

              PHP-Code:

              {foreach from=$arrNix item=nochweniger}
                  {if 
              $tempCat neq $nochweniger.catname}
                      <
              h2>{$nochweniger.catname}</h2>
                  {/if}
                  
                  {* DO 
              THE REST OUTPUT *}
                  
                  {
              assign var="tempCat" value=$nochweniger.catname}
              {/foreach} 
              Vielen Dank. Das war genau das was ich gesucht habe

              Kommentar

              Lädt...
              X