Rekenen vanuit database

Status
Niet open voor verdere reacties.

HyperXnl

Gebruiker
Lid geworden
2 apr 2016
Berichten
74
Beste leden,

Ik ben het aangegaan om wat te knutsellen met php.
Echter kom ik niet verder als het gaat om optellen en berekenen.

Ik heb een database nu met hier in allemaal producten.
In de table producten heb ik onderstaande staan:

IDProductTypeAantal Kilo'sPrijs per Kilo
1MandarijnFruit512
2AppelFruit85
3BoerenkoolGroente122
4ZuurkoolGroente233
5SinaasappelFruit381
6PreiGroente1615
7KiwiFruit303
8AndijvieGroente1002
9PeerFruit502
10WitlogGroente155

Hoe kan ik nu zeg maar het totaal waarde van het fruit berekenen met php?

Thanks
 
In SQL:

SELECT SUM(gewicht)
FROM producten
WHERE type='Fruit'

Ik neem aan dat je wel een INT of FLOAT hebt voor je gewicht.
 
Je hebt het over operators, ik weet zo gauw geen mooi NL woord hiervoor.
Je kan alles hier (klik) nazoeken over de syntax.
 
Je wilt het in PHP optellen, maar dan vraag ik mij af hoe je de getallen hebt opgesomd.
Ik lees dat je een database hebt, en in de praktijk doe je dat rekenen ook via de database, met de query die ik zojuist genoemd heb.
 
@php4u - helemaal juist.

Ik ben het aangegaan om wat te knutsellen met php.
Echter kom ik niet verder als het gaat om optellen en berekenen.
....
Hoe kan ik nu zeg maar het totaal waarde van het fruit berekenen met php?
@hyperXnl - Wil je iets specifieker zijn. Wil je php leren, sql leren, of beide leren?
 
Laatst bewerkt:
Sorry voor mijn late reactie.
Wil graag beide leren.
Gewicht staat idd als INT in de Database.

Zal morgen even kijken naar de link....
 
Inmiddels het antwoorden gevonden waar ik naar opzoek was.

Zie onderstaande code, wellicht dat ik er iemand anders op het forum mee help =).

Code:
<?php $result=mysqli_query($con, "Select SUM(Aantal_Kilo's * Prijs_per_Kilo) as TotalValue from producten where Type='Fruit'");
                  $row=mysqli_fetch_assoc($result);
                  $sum = sprintf("%01.0f", $row['TotalValue']);?>
                  <!-- Verander de 0F naar 2F voor twee cijfers na de komma -->

                  <h2 class="margin-top"> <?php echo $sum, " KG";?> </h2>

Echter weet ik niet of de sprintf correct is in deze code, maar voor nu doet hij wat hij moet doen.
 
Laatst bewerkt:
Gebruik je 2 decimalen in je database? Want sprintf werkt niet altijd ok, als voorbeeld
Code:
73.49 => 73
73.50 => 74 <= OK
73.51 => 74

0.49 => 0
0.50 => 0 <= ?
0.51 => 1

Dit zou kunnen liggen aan "%01.0f" maar wat het dan moet zijn weet ik zo 123 niet.
Hoeveel decimalen staan er in je db, dan kan ik even kijken of het anders kan.
 
Laatst bewerkt:
Als je veel decimalen laat zien dan is het probleem zichtbaar. Dit heeft te maken met hoe PHP met floats omgaat.
printf() en sprintf() gebruiken dit voor het laten zien van floats.
Code:
echo number_format(2.05,14); // geeft 2.05000000000000

echo number_format(2.05,16); // geeft 2.0499999999999998

Oplossing: gebruik round() die doet het wel goed
Code:
echo round(0.50, 0); // 1

echo round(73.50, 0); // 74

Meer info over de php precisie van floats bij de eerste Warning op www.php.net/manual/en/language.types.float.php
 
Laatst bewerkt:
@Bron,
Thanks voor nu werk ik met 3 decimalen in de database.
De foute afronding van sprintf() is voor nu nog niet een ramp.
Heb voor nu een globale inschatting van de totaal waarde in de test fase.

Om hem preciezer te maken kan ik in van de week de sprintf() vervangen voor de round()

Thanks so far.
 
Net even gekeken, bij 3 decimalen en "%01.0f" is het probleem identiek
Code:
echo sprintf("%01.0f", 0.499);  // geeft 0
echo sprintf("%01.0f", 0.500);  // geeft 0
echo sprintf("%01.0f", 0.501);  // geeft 1

Het zal dan zoiets worden i.p.v. sprintf()
Code:
// afronding op 0 decimalen
$sum = round($row['TotalValue'], 0);
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan