Hoi iedereen,

Is het mogelijk op de volgende code voor het door geven op de ProductString de array te lezen waar de zelfde product voor komt en de units bij elkaar op te tellen?

Alle tips zijn welkom
Bij voorbaat dank,
Dimitris

<?php
$query = "SELECT plu, product, units FROM orders_open WHERE customer = '$Customer'";
$result = mysql_query($query);

if($result)
{
$num=mysql_num_rows($result);
$i=0;
$ProductString = "";
while ($show = mysql_fetch_assoc($result))
{
$ProductString .= $show['units']." ".$show['product']." ".$show['plu']."\n";
}
}
?>

Jij wil een winkelmandje , en als ze 2x iets willen dat hij dan de aantal(1+1) opteld?

Bedoel je dat
Niet een winkelmandje, maar nu dat jij het zegt de principe is het zelfde denk ik,
bedankt voor de tip.
Even een puntje
Mysql injectie mogelijk: mysql_real_escape_string gebruiken
Een group by op het veld product en de aggregate functie SUM() op je units...(dit allemaal uiteraard in je sql query)
Bedankt Arjan,
De beste oplossing is de simpelste, en ik zat met iets met een loop samen met array_search en array_sum te denken.

Maar ik heb nog een vraag, ik denk dat query zo moet zijn maar de onderste code brengt alle zelfde producten by elkaar zonder de units te laat zien in de $ProductString, wat doe ik fout?

<?php
$query = "SELECT plu, product, SUM(units) FROM orders_open WHERE customer = '$Customer' GROUP BY product";

$ProductString .= $show['units']." ".$show['product']." ".$show['plu']."\n";
?>
Variabelen buitennde quotes
Mysql injectie mogelijk

Denk daar ook aan
Je dient een alias toe te voegen voor sum(units). Dus bijv. Sum(units) as num_units

Hierna kan je num_units aanroepen om de waarde te krijgen. Echter moet je op alle velden in je select statement een aggregate functie toepassen,behalve op het veld of velden die je in de group by opneemt! Gebruik hiervoor bijvoorbeeld de max() als de overige aggregate functies niet de uitkomst geven die je wilt of neem meer velden op in je group by.
D'oh, beginers fout :),
jongens bedankt voor jullie hulp.

Reageren