Rechnen & Array's

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

  • Rechnen & Array's

    Hallo Community ich schreibe gerade ein Shopsystem oder besser eine Firmenpage für mich selbst mit intregierten Shop.
    Ich scheitere allerdings an der Mathematischen Berechnung in Php um das Gesamtergebnis zu bekommen.
    Was verrückt ist das ich das Ergebnis habe und es sich nicht umsezten lässt.

    Total verrückter Schuh ich weiss nimmer weiter.

    Die Ausgabe ist richtig und ohne Fehler! Es wird berechnet wie er soll ! Allerdings übergebe ich es an
    Smarty IN foreach dann werden alle Ergebnisse überschrieben und der letzte Wert Einzelpreis wird angezeigt und das bei allen Produkten.

    Ausgabe über Header mit echo schaut so aus:

    7.78 <- 2 produkte addiert OK
    13.59 <- 1 produkt OK
    12.00 <- 1 produkt OK
    3.46 <- 1 produkt OK
    "ich bin zufrieden" die Werte stimmen !

    Hier die warenkorb.php (Auschnitt)

    PHP-Code:
    /*
     * READ wenn Befehl Action = READ
     */    
         
    if ($_GET["action"] == "read"){
         
             
    $sql "SELECT 
                         menge, produkt_preis 
                    FROM 
                        sh_warenkorb 
                    WHERE 
                        sid = '
    $sid'
                    "
    ;
             
                 
    $result $db->query($sql);
                 
                 while(
    $row mysql_fetch_object($result))
                 {
                
                 
    $menge $row -> menge;
                 
    $produkt_preis $row -> produkt_preis;
                 
                 
    $gespreis $menge $produkt_preis;
                 
    $gespreis sprintf '%02.2f'$gespreis );
                
                 echo 
    $gespreis."<br>";
                
                 
    //ARRAY HIER EINBRINGEN
                 
                 //$gespreis = array("$gespreis");
                 
                 //print_r($gespreis);

                 
    }
                
    //---------------Oben Berechnung der Gesamtkosten----------        
        
    //---------------Unten Auswahl der Produkte im Warenkorb---            

                
    $sql "SELECT 
                            produkt_name, produkt_artnr, produkt_preis, pid, sid, wkid, menge, produkt_titel
                        FROM 
                            sh_warenkorb
                        WHERE 
                            sid = '"
    .$_SESSION['sid']."'
                        "
    ;
                            
                
    $result $db->query($sql);
                
                
    $inhalt = array();
                while(
    $row mysql_fetch_assoc($result))
                {
                
    $inhalt[] = $row;
                }
                
    $my mysql_query($sql);
                    
                    
    $title=$conf['cms_name']."D&G Gebäudereinigung Shop - Gebäudereinigung";
                    
    $nowtext="Start";
                    
                    INCLUDE (
    LOADTEMPLATE);
                    
    $tpl->assign('inhalt',$inhalt);
                    
    $tpl->assign('gespreis',$gespreis);
                    
    $tpl->display(template_dir.'bin/warenkorb/warenkorb.tpl');
     } 
    Hier die Warenkorb.tpl
    In dieser Datei werden meine Produkte gelistet aber die Gesamtpreise stimmen nicht er ersetzt alle
    Werte mit dem Letzten Wert des Array's was in diesem Fall bedeutet das jedes Produkt 3.46 kostet.

    PHP-Code:
    {foreach from=$inhalt item=korb name=test}
    <
    form class="test" action="warenkorb.php?action=edit&wkid={$korb.wkid}method="post">
    <
    table width="100%">
      <
    tr>
        <
    td width="45%"><div align="left"><a href="{$include_dom}produkt/produkt_xl.php?pid={$korb.pid}"><strong>{$korb.produkt_name}</strong></a><br />
        <
    span style="font-size:7pt; font-family:"Times New Roman", Times, serif;">{$korb.produkt_titel}...</span></div></td>
        <
    td width="25%"><div align="center">
          <
    input size="3" type="text" name="menge" class="field" value="{$korb.menge}"/>
          <
    input type="submit" name="aendern" value="Ändern">
        </
    div></td>
        <
    td width="15%"><div align="right">{$korb.produkt_preis</div></td>
        <
    td width="15%"><div align="right">{$gespreis}<a href="warenkorb.php?action=delete&wkid={$korb.wkid}"><img style="border:0px;" src="{$image_url}shop/delete.gif"></a></div></td>
        
      </
    tr>
    </
    table>
    </
    form>
    {/foreach} 
    Ich gehe mal davon aus das ich nen simplen Fehler habe aber ich weiss nimmer weiter ich kanns 100 mal duchsehen und finde den haken nicht.

    Ich danke für Tips im vorraus

    Wer mag kann es sich direkt online ansehen da ich in Php kein Könner bin geschweige im großen erklären.

    http://gebäudereinigung-diepholz.de/sh_geb/sh_geb.php

    Links im Menue "Automatenreiniger & Beschichtungen" habe ich ein paar Produkte eingefügt zum testen. Wenn diese im Warenkorb liegen und man dann "Warenkorb aktualisieren" kommt der Fehler

  • #2
    $gespreis wird im ersten Teil immer wieder überschrieben, also wird immer nur der letzte gespeichert.
    Abgesehen davon ist da ziemlich viel Redundanz in deinem Code. Du kannst den Gesamtpreis direkt im SQL Query berechnen und musst dafür nicht php bemühen.

    1.:
    PHP-Code:
    $sql "SELECT 
                        produkt_name, produkt_artnr, produkt_preis, pid, sid, wkid, menge, produkt_titel, (menge * produkt_preis) AS gespreis
                        FROM 
                            sh_warenkorb
                        WHERE 
                            sid = '"
    .$_SESSION['sid']."'
                        "

    Dann kannst du den direkt aus dem Array heraus nutzen:
    2.:
    PHP-Code:
    <td width="15%"><div align="right">{$korb.gespreis}<a href="warenkorb.php?action=delete&wkid={$korb.wkid}"
    Geht schneller, benötigt weniger Code und ist sehr viel übersichtlicher.

    Kommentar


    • #3
      Hey herzlichen DANK

      Nun habe ich das prob das er ganze Zahlen wie 60.00€ ohne Komma macht und nur 60 ausgibt.

      Ansonsten Danke nochmal wusste nicht das ich sowas in Sql berechnen lassen kann und dann noch gleich einfliesen zulassen!


      Wieder etwas gelernt Daaaaanke
      Zuletzt geändert von escape; 08.01.2008, 23:43.

      Kommentar


      • #4
        Nun habe ich das prob das er ganze Zahlen wie 60.00€ ohne Komma macht und nur 60 ausgibt.
        Dafür gibt's number_format()
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Nun habe ich das prob das er ganze Zahlen wie 60.00€ ohne Komma macht und nur 60 ausgibt.
          in Deinem Warenkorb haste aber schon mal formatiert:
          Code:
          $gespreis = sprintf ( '%02.2f', $gespreis ); // wobei %.2f langt
          Beantworte nie Threads mit mehr als 15 followups...
          Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

          Kommentar


          • #6
            Mein Problem ist, das ich ja nun per SQl den Gesammtpreis ermittel und in ein Array bringe.
            Ich weiss nicht wie ich nun diesen Wert vor oder danach formatieren soll. Die Ausgabe einzelner Produkte addiert stellt kein Problem dar.

            Ich habe es so geregelt, das der Gesammtpreis eines Produkts x Menge = Gesammtpreis in der Sql mit abgelegt wird.
            Aber genau dieser Wert ist es den ich Auslese un der diese Komma Probleme macht.

            PHP-Code:
            $sql "SELECT
                                    produkt_name, 
                                    produkt_artnr, 
                                    produkt_preis, 
                                    pid, 
                                    sid, 
                                    wkid, 
                                    menge, 
                                    produkt_titel, 
                                    (menge * produkt_preis) AS gespreis  <-------------
                    FROM 
                         sh_warenkorb
                    WHERE 
                        sid = '"
            .$_SESSION['sid']."'
                    "
            ;

             
            $result $db->query($sql);
                        
                
            $inhalt = array();

                  while(
            $row mysql_fetch_assoc($result))
                {
                         
            $inhalt[] = $row;
                }
            $my mysql_query($sql); 
            Fehlerfrei !
            PHP-Code:
            //---------------GESAMTPREIS ALLER PRODUKTE START-------------    
            $sql "SELECT 
                              gespreis 
                        FROM 
                             sh_warenkorb 
                       WHERE 
                             sid = '"
            .$_SESSION['sid']."'
                        "
            ;
                        
                        
            $result $db->query($sql);
                        
                        while(
            $row=mysql_fetch_row($result)) 
                        {
                              
            $gesammt $gesammt $row[0];
                        }
                        
            $gesammt sprintf '%02.2f'$gesammt );
            //---------------GESAMTPREIS ALLER PRODUKTE ENDE------------- 
            Also meines erachtens schreibe ich die Daten falsch in die Sql.
            Aber ich kann ja nicht einfach folgendes schreiben




            PHP-Code:
            $sql select
                              
            ...
                              ...
                              (
            menge produkt_preis) AS gespreis sprintf %02.2f $gesammt
                       FROM
                              
            ...
                              ... 
            Ich wäre hier nochmal für einen Rat sehr dankbar

            Das lustige an der Sache ist, wenn es eine Kommazahl "12,95" ist gibt er sie Fehlerfrei wieder ,
            lautet der Betrag jedoch 14,30 gibt er ein simples 14,3 wieder. Ansonsten bin ich mit dem Script zufrieden

            Gruß Thomas
            Zuletzt geändert von escape; 10.01.2008, 00:45.

            Kommentar

            Lädt...
            X