Rechnen mit Daten aus MySQL-Tabelle und PHP

son gohan

Erfahrenes Mitglied
Hallo Forum,

ich stehe ein wenig auf dem Schlauch, die ganze Zeit versuche ich etwas aus zu rechnen aber ich komme zu keinem richtigen Ergebniss.

Ich will das Gesamtgewicht von einer Bestellung berechnen. Die Bestellung ist in einer MySQL Tabelle gespeichert und mittels eine Session ID identifieziert.

Folgende Bestellungen haben wir jetzt mal in der Tabelle:

PHP:
+---------------------------------------------------------------------+
| Session      |       Menge   |         Gewicht          |
+---------------------------------------------------------------------+
| 12345         |       3           |        1000                |
| 12345         |       2           |          250                |
+---------------------------------------------------------------------+

Jetzt versuche ich eine Abfrage zu bauen:

PHP:
$abfrage_gewicht = mysql_query("SELECT `menge`, `gewicht` FROM `warenkorb` WHERE `sid` = '$sid'");
while($row = mysql_fetch_assoc($abfrage_gewicht)){
$gewicht = '';
$gewicht += $row['menge'] * $row['gewicht'];
}
echo $gewicht;

Mit der Abfrage will ich erreichen, dass das Gesamtgewicht der Bestellung ausgerechnet wird, aber ich bekomme nur das Gesamtgewicht von einem Datensatz. Ich habe auch viele andere Varianten schon versucht die ich hier nicht alle aufzählen kann, aber ich komme immer zu unbrauchbaren Ergebnissen.

Die Rechnung muss eigentlich so aussehen:

Gewicht von Datensatz 1 = Menge von Datensatz 1 x Gewicht von Datensatz 1
Gewicht von Datensatz 2 = Menge von Datensatz 2 x Gewicht von Datensatz 2
Gesamtgewicht der Bestellung = Gewicht von Datensatz 1 + Gewicht von Datensatz 2


Diese Rechnung bekomme ich aber irgendwie nicht auf die Reihe. Ich hänge da schon einige Stunden dran und habe echt keine Lust mehr dazu. Vielleicht habe ich aber nur eine Denkblokade und jemand aus dem Forum kann mir auf die Sprünge helfen, wäre nicht schlecht, danke im Voraus.
 
Hi,

versuche mal die variable Gewicht vor Deiner while schleife zu deklarieren. Jedesmal wenn die While Schleife neu anfängt deklarierst Du die Variable neu, so dass der alte Wert gelöscht wird.


$gewicht = 0;
MYSQL ABFRAGE
while ()
{
$gewicht += $errechnetes_gewicht;
}

Bye,

WACSF
 
Folgendes wäre auch möglich:
PHP:
<?php

	$query = '
		SELECT
		        SUM(`menge` * `gewicht`) as `gesamtgewicht`
		  FROM
		        `warenkorb`
		  WHERE
		        `sid` = "'.mysql_real_escape_string($sid).'"
		';
	$gesamtgewicht = mysql_result(mysql_query($query), 0);

?>
 
Toll Leute, ich wusste doch das ihr mir helfen könnt.

Die Lösung von WACSF hat funktioniert, vielen Dank.

Den Vorschlag mit den Klamern setzen von RS9999 habe ich auch für gut befunden und mit eingebaut, vielen Dank.

Die Lösunng von Gumbo ist auch sehr gut, vielen Dank.

Jetzt muss ich mich nur noch für eine von beiden entscheiden.

@Gumbo, falls du noch mal vorbei schaust, kannst du mir sagen warum bei der Funktion mysql_result() als zweiter Parameter ein 0 steht, im manuell konnte ich dazu kein vernünftige Infos finden. Soweit ich es aber verstanden habe ist das die anzahl an Datensätzen die zurück gegeben werden sollen, aber 0 ist doch 0.
 
Zurück