Catalog Template catalog_simpletable mit Summe ausgeben

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • andre.5tz
    Contao-Fan
    • 19.06.2009
    • 464

    #1

    Catalog Template catalog_simpletable mit Summe ausgeben

    Hallo,

    ich versuche das Template catalog_simpletable dazu zu bringen, mir pro Spalte eine Summe zu berechnen, wenn in der Spalte Werte vom Typ 'decimal' sind.

    Das habe ich auch irgend wie hinbekommen, nur habe ich jetzt das problem, dass ich ein Select-Feld in der Übersicht habe bei dem die ersten drei Zeichen Zahlen sind. Die Werte in meiner Summe der Spalte 'decimal' werden jetzt mit den Werten der Spalte 'select' zusammengerechnet.

    Ich vermute mal, wenn ich nebeneinander zwei decimal-Felder habe werden die auch zusammen gerechnet, habe ich noch nicht getestet.

    Hat jemand vielleich einen Tipp, wo mein Problem liegt, bin für jeden Hinweis dankbar, da mein begrenztes php mich hier im Stich lässt und copy und paste reicht dann nicht mehr. Die Suche und Google haben mir leider auch nicht weiter geholfen.

    Viele Grüße
    André

    Ich habe in dem Template - nach </thead> - ab Zeile 14 folgendes eingefügt:
    PHP-Code:
    <tfoot class="tfoot">
    <!--Tabellenzeilen-->
    <tr>
            <?php list($field, $footer) = each($this->entries); ?>
            <?php foreach ($footer['data'] as $field=>$data): ?>
            <?php if (!in_array($field, array('catalog_name','parentJumpTo'))): ?>
            <td class="field <?php echo $field; ?>">
                   
                    <?php
                            if ($data['type']=='decimal') {
                                                   
                            $sum = 0;
                            foreach ($this->entries as $entry) {
                                    foreach ($entry['data'] as $field=>$data) {
                                            $sum += $data['value'];
                                            }
                                    }
                            echo $sum;
                            }
                            else {
                                    echo "-";
                            }
                    ?>
           
            </td>
                   
                   
            <?php endif; ?>
            <?php endforeach; ?>
    </tr>
    
    </tfoot>
  • Fryd
    Contao-Nutzer
    • 22.06.2009
    • 249

    #2
    Auf http://de.contaowiki.org/Catalog_Templates_anpassen sind die allgemeinen Parameter aufgeführt, u.a. [type]. Kannst Du damit nicht nach Datentyp selektieren?

    Grüße
    Fryd

    Kommentar

    • andre.5tz
      Contao-Fan
      • 19.06.2009
      • 464

      #3
      Danke für Deine Rückmeldung, ich hatte mir zwar schon mal den Eintrag im Wiki angeschaut, werde ich aber nochmal genauer machen.

      Mit "if ($data['type']=='decimal')" hatte ich eigentlich gehofft, genau danach zu filtern.

      Mir wird auch in jeder Spalte ein "-" Bindestrich ausgegeben, wenn der type nicht decimal ist, das klappt ja alles.

      Nur wird in der Spalte "decimal" nicht nur die Summe für diese Spalte gebildet, sondern es werden auch gleich noch die Werte einer weiteren Spalte dazu addiert, obwohl das ein Select-Feld ist (Taxonomie).

      Mein Ziel ist ein Template, was generell verwendet werden kann und ich raffe einfach nicht, wo ich den Fehler eingebaut habe und vor allem verstehe ich nicht, warum die Werte aus einem Select-Feld dazu addiert werden.
      Die Werte im Select-Feld sind in der Form "123 Text" eingestellt.

      Kommentar

      • Fryd
        Contao-Nutzer
        • 22.06.2009
        • 249

        #4
        OK, Mein Hinweis war nicht hilfreich. Ich übe selbst noch ...

        Ich schau mal, ob ich das richtig verstanden habe: Jeder Datensatz enthält mehrere Zahlen. Anstatt jede Zahl - wie sonst - in eine eigene Spalte zu schreiben, möchtest Du sie zusammenzählen und nur die Summe ausgeben.

        Kann es sein, dass Du den Test, ob es sich um einen Decimal-Typ handelt, direkt vor die Summierung setzen muss und nicht vor die Schleife, mit der Du dich durch den Datensatz hangelst?

        Grüße
        Fryd

        Kommentar

        • andre.5tz
          Contao-Fan
          • 19.06.2009
          • 464

          #5
          Hallo Fryd,

          ich möchte eine Tabelle mit allen Werten ausgeben, die in der Fußzeile jeweils eine Summe bildet, wenn die Werte vom Typ decimal sind, ähnlich einer Excel-Tabelle mit Werten, die am Ende zusammengerechnet werden.

          Bin jetzt einen kleinen Schritt weiter und habe noch eine weitere if-Abfrage nochmal vor die Summenbildung gesetzt. Somit ist das Select-Feld raus und es wird nur noch das decimal-Feld zusammen gerechnet.

          Problem ist jetzt noch, dass bei zwei decimal-Feldern in meiner Tabelle alles Werte vom Typ decimal zusammengerechnet werden, ich möchte es aber gerne für jede Spalte einzeln berechnet.

          Der Bereich für die Summenbildung sieht jetzt so aus:
          PHP-Code:
          <?php 
                      if ($data['type']=='decimal') {
                                  
                      $sum = 0;
                      foreach ($this->entries as $entry) {
                          foreach ($entry['data'] as $field=>$data) {
                              if ($data['type']=='decimal') {
                              $sum += $data['value'];
                              }}
                          }
                      echo $sum;
                      }
                      else {
                          echo "-";
                      }
                  ?>

          Kommentar

          Lädt...