Ik zit een beetje vast met een php-code... ik wil namelijk getallen uit een database optellen: bv.
$sql = "SELECT * FROM database";
$result = mysql_query($sql);
while ($record = mysql_fetch_array($result)) {
Dit is wat ik al heb. Wat ik nu moet kunnen is de gegevens uit de rijl 'aantal' halen en deze optellen met elkaar bv.
Rij 1= 2
Rij 2= 4
Rij 3= 5
Ik moet dus alle rijeen kunnen optellen met elkaar, enig idee hoe dat moet dus in feite zou het moeten "som(rij1-Rij????) zijn.....
Groetjesss
?
Onbekende gebruiker
15-11-2005 13:30
$sql = "SELECT SUM(aantal) AS totaal FROM database";
$record['totaal'] zal nu de som van alle gegevens in de kolom 'aantal' bevatten. Hiermee laat je dus de database het werk voor je doen. Zie de handleiding van MySQL voor vele, vele handige en snelle functies. Daar kan php echt niet tegenop!
Tel alle getallen met php, dus via
$totaal = 0;
while($rij = mysql_fetch_assoc($result))
{
$totaal += $rij['getalveld'];
}
echo $totaal;
Maar ik zat net ook te zoeken of het ook direct kon. Misschien werkt dit:
sql:SELECT SUM(getalveld) as totaal FROM database
php om antwoord te krijgen (dus ipv de while-lus):
echo mysql_result($result, 0, 'totaal');
?
Onbekende gebruiker
15-11-2005 15:18
@Jelmer: Is de eerste manier niet te langzaam? Aangezien PHPerik ook altijd zit te timmeren op de snelheid van een script en zo min mogelijk loops gebruiken.
De while op zich zal niet het probleem zijn. Wanneer je echter veel records hebt die bij elkaar moeten worden opgeteld, is 'ie wel erg duur.
Stel dat je 1500 records hebt. Als je de som laat uitrekenen door MySQL, kost het je slechts 1 fetch. Als je het wilt uitrekenen in PHP, kost het je 1500 fetches.
Daar komt nog eens bij dat optellen in PHP waarschijnlijk meer tijd kost dan in MySQL. PHP is immers een geïnterpreteerde taal (dus langzaam), en de routines in MySQL zijn behoorlijk geoptimaliseerd voor snelheid.
?
Onbekende gebruiker
15-11-2005 19:03
Ik heb volgende code gebruikt:
$sql = "SELECT SUM(aantal) AS totaal FROM databasenaam";
$resultaat = mysql_query($sql);
while ($row = mysql_fetch_array($resultaat)) {
echo mysql_result($resultaate, 0, 'totaal');)
}
?>
En die werkt. Heb het manueel opgeteld en het klopt. Bedankt voor de reply's...