Summe aus Spalteninhalt einer dynamisch generierten Tabelle

DrBonsai

Mitglied
Moin moin,
heute stehe ich vor folgendem Problem:

Ich habe eine dynamisch generierte Tabelle, mit immer fünf Spalten und variabler Anzahl Zeilen.
In der letzten Spalte steht eine Zahl (der Preis für ein Produkt, multipliziert mit der georderten Anzahl).
Jetzt möchte ich diese Spalte gerne aufaddieren und unterhalb der Tabelle ausgeben.
Problem:

Meine Variable, die den Gesamtpreis einer Zeile enthält, ändert sich ja ständig (for-Schleife), deswegen, kann ich da nix mehr addieren, wenn ich mit der Chleife durch bin.

Wie mach ich sowas?
Hatte mir schon überlegt, den Wert de betreffenden Spalte jeweils noch in ein <input type = 'hidden' name= 'price".$i"' /> zu schreiben. Aber dann kann ich ja immer noch nicht diese Werte addieren.

So sieht meine Tabelle aus:
PHP:
for ($q=1; $q<=$quantity_additional_string; $q++)	//quantity_additional_string = Anzahl Zeilen (wird vorher übergeben)
			{
			echo "
			<tr>
				<td> ";
					$additional= "SELECT `product` FROM `gc_eol_additional` WHERE `id` LIKE '$id' AND `row` LIKE '$q'";	//Spalte mit Produktnamen
					$query_additional=mysql_query($additional);
					while($additional_array= mysql_fetch_assoc($query_additional)) 
						{
						$additional_string = ($additional_array['product']); 
						}
					echo $additional_string;			
				echo "	
				</td>
				<td> ";
					$quant_additional= "SELECT `quantity` FROM `gc_eol_additional` WHERE `id` LIKE '$id' AND `row` LIKE '$q'";	   //Spalte mit georderter Anzahl
					$query_quant_additional=mysql_query($quant_additional);
					while($quant_additional_array= mysql_fetch_assoc($query_quant_additional)) 
						{
						$quant_additional_string = ($quant_additional_array['quantity']); 
						}
					echo $quant_additional_string;					
					
				echo "
				</td>
				<td>";
					$iva_additional= "SELECT `taxaiva` FROM `conivas` WHERE `idiva` IN (SELECT `idiva` FROM `comprodutos` WHERE `designacaoproduto` LIKE '$additional_string')";	   // Spalte MwSt
					$query_iva_additional=mysql_query($iva_additional);
					while($iva_additional_array = mysql_fetch_assoc($query_iva_additional)) 
						{
						$iva_additional_string = ($iva_additional_array['taxaiva']); 
						}
					echo $iva_additional_string;	
					echo "	
				</td>
				<td>";
					$price_additional= "SELECT `precoproduto` FROM `comprodutos` WHERE `designacaoproduto` LIKE '$additional_string'";	 //Spalte Preis
					$query_price_additional=mysql_query($price_additional);
					while($price_additional_array = mysql_fetch_assoc($query_price_additional)) 
						{
						$price_additional_string = ($price_additional_array['precoproduto']); 
						}
					echo $price_additional_string;	
				echo "	
				</td>
				<td> ";
					$price_total_additional_string = $price_additional_string * $quant_additional_string;   //Spalte mit Gesamtpreis der Zeile
				echo "
					".$price_total_additional_string ."
				</td>
			</tr>
			";
			}

Jetzt fehlt sowas wie:

PHP:
<tr>
	<td>&nbsp</td>
	<td>&nbsp</td>
	<td>&nbsp</td>
	<td>&nbsp</td>
	<td>"....."</td>   // bei ..... muss die Summe aller $price_total_additional_string stehen.
</tr>

Hat da jemand einen Tipp für mich? Das muss doch zu machen sein.

mfg,
David
 
Du machst für jedes Feld eine eigene Abfrage? Sehr schelchte performance.

Entweder machst du am Ende ein Query das die Summe berechnest und gibt es aus, oder du summierst wührend dem Aufbau.
Also etwa so
PHP:
for(....){
	echo "<tr>";
	echo "<td>$col1</td>";
	$sumCol1 += $col1;
	echo "<td>$col2</td>";
	$sumCol2 += $col2;
	echo "</tr>";
}
echo "<tr>";
echo "<td>$sumCol1</td>";
echo "<td>$sumCol2</td>";
echo "</tr>";
 
Du machst für jedes Feld eine eigene Abfrage?

Ja, man soll die Rechnung ja am Ende auch auf dem Bildschirm nachvollziehen können.

Entweder machst du am Ende ein Query das die Summe berechnest und gibt es aus
Das ist ja eben mein Problem (gewesen): Wie macht man das?

, oder du summierst wührend dem Aufbau.
Also etwa so
PHP:
for(....){
	echo "<tr>";
	echo "<td>$col1</td>";
	$sumCol1 += $col1;
	echo "<td>$col2</td>";
	$sumCol2 += $col2;
	echo "</tr>";
}
echo "<tr>";
echo "<td>$sumCol1</td>";
echo "<td>$sumCol2</td>";
echo "</tr>";

So hab ichs jetzt gemacht. Diese Lösung war mir auch noch nicht in den Sinn gekommen. diese "+="-Geschichte kannte ich noch nicht.
Interessant:
Läuft das so, dass php sich den "alten Wert" der Variable merkt, den neuen addiert und sich die Summe dann für den nächsten Durchgang merkt?

Danke für deine Hilfe.
mfg,
David
 
Normalerweise macht man sowas so:

PHP:
echo "<table>";
echo "<tr><th>title1</th><th>title2</th><th>title3</th>";

//Details
$sql = "SELECT t1.col1, t1.col2, t2.col3 FROM table1 t1 LEFT JOIN table t2 ON ti.id = t2.t1_id WHERE t2.col4 LIKE '$string'";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)){
	echo "<tr>";
	echo "<td>".$row['col1']."</td>";
	echo "<td>".$row['col2']."</td>";
	echo "<td>".$row['col3']."</td>";
	echo "<tr>";	
}

//SUMME
$sql = "SELECT SUM(t2.col3) AS sum_col3 FROM table t2 ON ti.id = t2.t1_id WHERE t2.col4 LIKE '$string'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
echo "<tr>";
echo "<td>Summe</td>";
echo "<td></td>";
echo "<td>".$row['sum_col3']."</td>";
echo "<tr>";	
echo "<table>";

Du solltest wirklich nicht für jedes Feld ein neus SQL absetzen.
 
Zurück