Werte aus Array berechnen.

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • tognit
    Contao-Fan
    • 28.06.2009
    • 480

    #1

    Werte aus Array berechnen.

    Hallo zusammen

    Kommen gerade nicht weiter mit einer Berechnung! Ich habe eine Liste mit Preisen und möchte jetzt ein Total berechnen.

    Leider komme ich nicht drauf wie genau das gemacht wird. Habe es mit "array_sum" probiert und es rechnet nicht richtig.

    Hier mal mein Code:
    PHP-Code:
       <?php $total = array($entry['data']['rep_gesamtpreis']); ?>
       <td><?php echo array_sum($total); ?>Fr.</td>
    Was mache ich falsch?

    Danke für die Hilfe

    Gruss
    Steven
  • Tim G
    Contao-Urgestein
    • 13.02.2010
    • 2212

    #2
    Wie sieht denn das gesamte Array aus, aus dem Du die Werte addieren willst? Bzw. welche Felder werden durchlaufen.
    Das hier ist ja nur ein Wert.

    Du musst innerhalb einer Schleife alle Werte zusammen addieren.

    Kannst auch erst alle zuaddierenden Werte in einem Array sammeln und dann mit array_sum die Summe aller bilden.
    Zuletzt geändert von Tim G; 02.04.2011, 17:48.
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

    Kommentar

    • tognit
      Contao-Fan
      • 28.06.2009
      • 480

      #3
      Hallo Tim

      Danke für dein Hilfe

      Ich habe es in dieser Schleife:
      PHP-Code:
      <?php foreach ($this->entries as $entry): ?>
        <tr>
         <?php $total = array($entry['data']['rep_gesamtpreis']['raw']); ?>
         <td colspan="5" ><?php echo array_sum($total); ?> Fr.</td>
        </tr>
      <?php endforeach;?>
      Wie weiter? Leider habe ich keine Ahnung.

      Kommentar

      • Tim G
        Contao-Urgestein
        • 13.02.2010
        • 2212

        #4
        kommen da Ganzzahlen an, oder dezimal?

        Hier als Beispiel im catalog_simple.tpl
        Mein Feld heisst: preis

        Ausserhalb der Schleifen initialisierst Du eine Variable für den Gesamtpreis und innerhalb der Schleife addierst du immer drauf wenn der Wert größer 0 ist. Unter einfach ausserhalb der Schleifen den Gesamtbetrag ausgeben.

        Hier mal nur die Berechnung.

        PHP-Code:
        <?php $totalprice = 0; ?>
        
        <?php foreach ($this->entries as $entry): ?>
        <?php 
        if($entry['data']['preis']['raw'] > 0)
        {
            $totalprice += $entry['data']['preis']['raw'];
        }
        ?>
        <?php endforeach; ?>
        
        
        <div class="totalprice">Total: <?php echo $totalprice; ?></div>
        Grüße Tim
        Zuletzt geändert von Tim G; 02.04.2011, 19:32.
        http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

        Kommentar

        • tognit
          Contao-Fan
          • 28.06.2009
          • 480

          #5
          Sensationel, Besten Dank für die Lösung!

          Habe in dem Feld dezimal Zahlen drinn. Und so ist jetzt bei mir!
          PHP-Code:
          <?php $totalprice = 0; ?>
          <?php foreach ($this->entries as $entry): ?>
          <?php if($entry['data']['rep_gesamtpreis']['raw'] > 0)
              {
              $totalprice += $entry['data']['rep_gesamtpreis']['raw'];
              }
          ?>
          <?php endforeach; ?> 
             <tr>
              <td>Total Betrag</td>
              <td><?php echo  number_format($totalprice, 2, ',', '\' '); ?>Fr.</td>
             </tr>
          <?php endif; ?>
          Super sache, Danke sehr!

          Gruss Steven

          Kommentar

          • Tim G
            Contao-Urgestein
            • 13.02.2010
            • 2212

            #6
            Ja, genau. Noch richtig formatieren.

            Grüße Tim
            http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

            Kommentar

            • tognit
              Contao-Fan
              • 28.06.2009
              • 480

              #7
              Variable in DB speichern

              Hallo zusammen,

              Wie in den oberen Beiträge schon beschrieben, habe ich mehrere Katalog-Einträge mit einem Preis, dass ich am schluss per foreach zusammen zähle.

              Das funktioniert!!!

              Aber wie kann man vorgehen, wenn ich dieses Total($totalprice) in einer anderen Tabelle abspeichern möchte? AJAX? Wie?

              Grüessli
              Steven

              Kommentar

              • Tim G
                Contao-Urgestein
                • 13.02.2010
                • 2212

                #8
                Aber wie kann man vorgehen, wenn ich dieses Total($totalprice) in einer anderen Tabelle abspeichern möchte? AJAX? Wie?
                PHP-Code:
                $arrSet = array
                (
                'meineSpalte' => 'meinWert',
                );
                $objStatement = $this->Database->prepare("UPDATE meineTabelle  %s")->set($arrSet);
                $objStatement->execute(); 
                
                Kannst natürlich noch ne WHERE Klausel mit unterbringen, falls nur bestimmte Felder geupdated werden sollen.
                http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

                Kommentar

                • tognit
                  Contao-Fan
                  • 28.06.2009
                  • 480

                  #9
                  Super sache!

                  Hey Tim,

                  Du bist mein Held! Danke für deine Antwort, genau das habe ich gesucht.

                  Grüessli
                  Steven

                  Kommentar

                  • tognit
                    Contao-Fan
                    • 28.06.2009
                    • 480

                    #10
                    Jetzt speichert es das Resultat in alle Tabellen die "meineSpalte" heissen. Kann man das auf die Tabellen-ID überprüfen, damit es nur in eine Tabelle speichert?

                    PS. Habe gerade gesehen, dass du das mit "WHERE" geschrieben hast. Leider kriege ich es nicht hin.
                    Zuletzt geändert von tognit; 10.07.2012, 09:35.

                    Kommentar

                    • tognit
                      Contao-Fan
                      • 28.06.2009
                      • 480

                      #11
                      Fehler gefunden

                      Hatte die WHERE Klausel falsch platziert! So geht es TipTop!
                      PHP-Code:
                      $arrSet = array('meineSpalte' => 'meinWert',);
                      $objStatement = $this->Database->prepare("UPDATE meineTabelle %s WHERE id=?")
                                                     ->set($arrSet)
                                                     ->execute($id); 
                      
                      Danke nochmals für deine Hilfe!

                      Grüessli

                      Kommentar

                      Lädt...