Gesamt Preis berechnen

fredolin

Erfahrenes Mitglied
Hallo PHP Group,


heut morgen sind mal alle Scheuentore zu bei mir. Sitze hier vor meinen Code und finde keine Lösung..

Wo brauch ich hilfe..

Aus einer Tabelle lese ich mit Preise aus. Am ende der Liste soll dann die Endsummer alle Preise, die in dieser tabelle stehen zusammengezählt werden.

Cool wäre wenn die schon automatisch wenn ich immer wieder einen neuen Preis einspiele die Endsumme mit aktualisiert wird.

Aber ich finde keinen Ansatz..

Hier mein Code bislang:
PHP:
$query = 'SELECT * FROM `uos_mpl_shop_basket` ORDER BY ID'; #WHERE `ID`= "'.addslashes($_POST['ID']).'"';
			$db->setQuery($query);
			$result = $db->query();
				echo '
				<div class="product_details" style="width: 65%;">
					<h2>Warenkorb</h2>
					<div class="table">
						<div class="tablehead">Artikel Nr.</div>
						<div class="tablehead">Produkt</div>
						<div class="tablehead">Status</div>
						<div class="tablehead">Menge</div>
						<div class="tablehead">Preis</div>
						<div class="tablehead">Bestelldatum</div>
					<div class="uos_clear"></div>';
					while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
					$datum = date("d.m.Y", $row['time']); // ISO-8601 Format
					$query = 'SELECT COUNT(totalpreis) FROM `uos_mpl_shop_basket`';
					$db->setQuery($query);
					$resultID = $db->query();
					$anzahlpreis = mysql_result($resultID,0);
					$gesamtProdpreis = sprintf('%1.2f', ($row['totalpreis'])* $row['uos_menge']);
					echo'
						<div class="tablecontent">'.$row['prodID'].'</div>
						<div class="tablecontent">'.$row['prodname'].'</div>
						<div class="tablecontent">'.$row['status'].'</div>
						<div class="tablecontent">'.$row['uos_menge'].'</div>
						<div class="tablecontent">'.$gesamtProdpreis.'&nbsp;'.$row['waehrung'].'</div>
						<div class="tablecontent">'.$datum.'</div>
						<div class="uos_clear"></div>';
					}
					if ($anzahlpreis <= '1'){
						$gesamtPreis = $gesamtProdpreis;
					} else {
						$gesamtPreis = $gesamtProdpreis + $gesamtProdpreis;
					}
					echo'
						<div class="uos_clear"></div>
						<div><h2 class="h2text">Gesamtpreis:</h2></div>
						<div>'.$gesamtPreis.'</div>
					</div>					
				</div>';
 
Hi,

Code:
if ($anzahlpreis <= '1'){
   $gesamtPreis = $gesamtProdpreis;
} else {
   $gesamtPreis = $gesamtProdpreis + $gesamtProdpreis;
}

Du meintest sicher:

Code:
$gesamtPreis = $gesamtPreis + $gesamtProdpreis;

LG
 
Hey kuddeldaddeldu

danke für deinen Ansatz.. Aber der Funktioniert aucht..

nein in meinen Script rechne ich mit gesamtProdpreis, der dann mit sich selber plus nimmt.

Denke das da irgendwie ein logische fehler drinne steckt.. aber ich finde keinen Ansatz für ne Lösung.. Wie gesagt Scheunentore sind heut morgen dicht..
 
Zuletzt bearbeitet:
nein in meinen Script rechne ich mit gesamtProdpreis, der dann mit sich selber plus nimmt

Das von kuddeldaddeldu macht das. Deines gibt als Gesamtpreis immer nur das doppelte des letzten aus der Liste aus.

Vor allem ist die Berechnung außerhalb der while-Schleife. Unsinn oder gewollt?
PHP:
                    while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
                      $datum = date("d.m.Y", $row['time']); // ISO-8601 Format
                      $query = 'SELECT COUNT(totalpreis) FROM `uos_mpl_shop_basket`';
                      $db->setQuery($query);
                      $resultID = $db->query();
                      $anzahlpreis = mysql_result($resultID,0);
                      $gesamtProdpreis = sprintf('%1.2f', ($row['totalpreis'])* $row['uos_menge']);
                      echo'
                          <div class="tablecontent">'.$row['prodID'].'</div>
                          <div class="tablecontent">'.$row['prodname'].'</div>
                          <div class="tablecontent">'.$row['status'].'</div>
                          <div class="tablecontent">'.$row['uos_menge'].'</div>
                          <div class="tablecontent">'.$gesamtProdpreis.'&nbsp;'.$row['waehrung'].'</div>
                          <div class="tablecontent">'.$datum.'</div>
                          <div class="uos_clear"></div>';
                    }

Welche Variable ist in der Schleife, auf die der Gesamtpreis vom Produkt aufsummiert wird? ;)
 
Hallo Zodiac,

Welche Variable ist in der Schleife, auf die der Gesamtpreis vom Produkt aufsummiert wird?

Also bei mir wird über die Variable $gesamtProdpreis den Gesamtpreis einschließlich der Anzahl der Warenemnge ausgebe.

Dieser Preis soll dann auch automatisch mit jedem neu in den Warenkorb eingelegten Preis addiert werden.

So wie geht das...

Gruß
fredolin
 
So wie geht das...

:suspekt: Eine Frage? Eine Aussage?

Wenn du es noch nicht weist, dann schau dir meine Hinweise mal genauer an und denke darüber nach:
  • Die Berechnung ist außerhalb der while-Schleife.
  • Welche Variable ist in der Schleife, auf die der Gesamtpreis vom Produkt aufsummiert wird?

Siehst du dir diese "Fehler" nacheinander genauer an und löst sie entsprechend, bist du am Ziel. Es geht doch darum alle Gesamtpreise zu summieren, oder?
 
Hi,

  • Die Berechnung ist außerhalb der while-Schleife.

das habe ich bei der schlechten Einrückung gar nicht erst gesehen...

@fredolin: Du drückst Dich leider ziemlich unverständlich aus. Du möchtest doch den Preis des aktuellen Produktes in der Schleife (dazu muss die Anweisung natürlich in die Schleife) auf den Gesamtpreis aufaddieren und nicht in jedem Durchlauf den Gesamtpreis durch das doppelte des aktuellen Produktpreises überschreiben...

LG
 
Mmmh

so hab es in der while- Schliefe eingebaut.. Doch nun werden immer nur die beiden letzen Eintragungen zusammen addiert.

Noch mal den Code aber abgeändert:
PHP:
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
 $datum = date("d.m.Y", $row['time']); // ISO-8601 Format
 $query = 'SELECT COUNT(totalpreis) FROM `uos_mpl_shop_basket`';
 $db->setQuery($query);
 $resultID = $db->query();
 $anzahlpreis = mysql_result($resultID,0);
 $gesamtProdpreis = sprintf('%1.2f', ($row['totalpreis'])* $row['uos_menge']);
  #$testpreis = (($row['totalpreis']* $row['uos_menge']) *100);
 echo'
	<div class="tablecontent">'.$row['prodID'].'</div>
	<div class="tablecontent">'.$row['prodname'].'</div>
	<div class="tablecontent">'.$row['status'].'</div>
	<div class="tablecontent">'.$row['uos_menge'].'</div>
	<div class="tablecontent">'.$gesamtProdpreis.'&nbsp;'.$row['waehrung'].'</div>
	<div class="tablecontent">'.$datum.'</div>
	<div class="uos_clear"></div>';
		if ($anzahlpreis <= '1'){
			$gesamtPreis = $gesamtProdpreis;
		} else {
			$gesamtPreis = $gesamtProdpreis + $gesamtProdpreis;
		}
						
}					
echo'
	<div class="uos_clear"></div>
	<div><h2 class="h2text">Gesamtpreis:</h2></div>
	<div>'.$gesamtPreis.'</div>';

Hoffe das es so besser zulesen ist..

Gruss
fredolin
 
1. Zu einem COUNT() gehört normalerweise GROUP BY
PHP:
$query = 'SELECT COUNT(totalpreis) FROM `uos_mpl_shop_basket`';

2. Eine Query in einer Schleife? Naja, nicht gerade "performance-freundlich", zumal gar nicht nötig in Deinem Fall.

3. kuddeldaddeldu hat's bereits gesagt: Du verdoppelst nur das letzte Ergebnis. Versuchs mal damit:
PHP:
if ($anzahlpreis <= '1'){ 
            $gesamtPreis = $gesamtProdpreis; 
        } else { 
            $gesamtPreis = $gesamtProdpreis + $gesamtProdpreis; 
        }
ersetzen durch:
PHP:
$gesamtPreis += $gesamtProdpreis;

Gruss
 
Zurück