Subtotaal + tekens in SQL
ik heb een tavel 'winkel'
daar in zitten tabellen met id, naamproduct, kost,aantal,totaalprijs
nu wil ik dat als ik bijvoorbeeld 3 producten in de winkel tabel heb dat ik die drie eind bedragen in dit geval totaalprijs bij elkaar opteld en in subtotaal zet hoe doe ik dat??
wie kan mij helpen. ;)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
//sql voor alles selecteren in de tabel winkel
$sql = "SELECT * FROM winkel;";
//voer die sql uit, en als die mislukt stop het script en geef mysql error weer
$res = mysql_query($sql) or die (mysql_error());
//maak $subtotaal aan
$subtotaal = '';
//maak een array $row aan met het resultaat van net en tel dit steeds bij subtotaal op
while ($row = mysql_fetch_array($res)) {
//tel de totaalprijs van deze rij bij het subtotaal op
$subtotaal += $row['totaalprijs'];
//sluit de loop
}
//en outputten maar
echo $subtotaal; //output: het totaal van elk product in de hele tabel bij elkaar opgeteld
?>
//sql voor alles selecteren in de tabel winkel
$sql = "SELECT * FROM winkel;";
//voer die sql uit, en als die mislukt stop het script en geef mysql error weer
$res = mysql_query($sql) or die (mysql_error());
//maak $subtotaal aan
$subtotaal = '';
//maak een array $row aan met het resultaat van net en tel dit steeds bij subtotaal op
while ($row = mysql_fetch_array($res)) {
//tel de totaalprijs van deze rij bij het subtotaal op
$subtotaal += $row['totaalprijs'];
//sluit de loop
}
//en outputten maar
echo $subtotaal; //output: het totaal van elk product in de hele tabel bij elkaar opgeteld
?>
Gewijzigd op 01/01/1970 01:00:00 door K i p
ok het werkt tof man
alleen SELECT * FROM winkel is niet goed er moet nog where bij where ip = $addr ;)
en weet je meschien ook hoe ik kan zeggen van stuur gegeven naar mail adres die in die row's staan en dan ook alleen de gegeven van het ip
Overigens krijg ik het idee dat je nog niet echt met php bekend bent, en of het dan verstandig is gelijk een webshop te gaan bouwen weet ik zonet nog niet.
ik had de shop al af ik bouw website door naar andere scripts te kijken zeg maar en dus stukkjes in elkaar te zetten ;)
Quote:
ok het werkt tof man
Mooi! Geeft mij ook weer een goed gevoel :-)
Graag gedaan!
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$bericht = 'Er is een bestelling geplaatst door ip '.$addr.' En dit is het subtotaal: '.$subtotaal.' Veel plezier met de bestelling :-)';
mail('[email protected]','Bestelling',$bericht);
?>
$bericht = 'Er is een bestelling geplaatst door ip '.$addr.' En dit is het subtotaal: '.$subtotaal.' Veel plezier met de bestelling :-)';
mail('[email protected]','Bestelling',$bericht);
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$sql = "
SELECT SUM(prijs) AS totaal
FROM tabel
";
if (!$res = mysql_query ($sql)) {
trigger_error (mysql_error ());
}
else {
$row = mysql_fetch_assoc ($res);
echo '<p>Totaal: ' . $row['totaal'] . '</p>';
}
?>
$sql = "
SELECT SUM(prijs) AS totaal
FROM tabel
";
if (!$res = mysql_query ($sql)) {
trigger_error (mysql_error ());
}
else {
$row = mysql_fetch_assoc ($res);
echo '<p>Totaal: ' . $row['totaal'] . '</p>';
}
?>
Wist ik niet, is een goede manier! Bedankt!
Ik weet niet of MySQL de prijzen maal die aantallen kan doen in zijn query?
Als dat zo is, dan zou ik die manier ook wel willen weten, dan kan ik ook nog heel wat pagina's veranderen ;)
Gewijzigd op 01/01/1970 01:00:00 door Stefan van Iwaarden
@ Stefan: geef even een tabelstructuur en wat er precies uit moet rollen?
id | productID | prijs | aantal
en dat je dan met een query het totaal van bijv. de volgende records kunt berekenen
1 | 24 | 0.50 | 5
2 | 56 | 1.50 | 10
SELECT
product_id,
prijs,
aantal,
(prijs * aantal) AS subtot
FROM producten
geeft een lijst, en:
SELECT
SUM(prijs * aantal) AS tot
FROM producten
geeft alle subtotalen opgeteld
Maar ik wist niet dat je SUM(prijs * aantal) in een query kon doen, ik zal dit op zeer korte termijn eens uitproberen en als het goed werkt mijn pagina's aanpassen.
Quote:
@Jan, de productID hoef je in je berekening natuurlijk niet te gebruiken aangezien de prijs in dit voorbeeld al gegeven is in de bestaande tabel om het iets makkelijker te maken.
Is hier voor de berekening niet nodig, maar als je bijvoorbeeld een lijst aan een klant wilt presenteren, wel. Overigens klopt het datamodel niet; de prijs van een product hoort in een tabel producten en deze tabel zou eigenlijk orderregels moeten heten.
Quote:
Maar ik wist niet dat je SUM(prijs * aantal) in een query kon doen, ik zal dit op zeer korte termijn eens uitproberen en als het goed werkt mijn pagina's aanpassen.
Die tweede query is vooral handig als je alleen een totaal wilt, zonder de eerste uit te hoeven voeren. Als je de eerste toch al uitvoert, kun je idd net zo goed een tellertje laten meelopen in de while loop waarin je de resultaten fetcht.
ok heel erg bedankt allemaal ik snap het!
het is natuurlijk ook handig om bijvoorbeeld te zeggen van "ër zijn 3 producten in uw winkelwagen"
die is zoiets als dit
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$query = "SELECT COUNT(*) AS aantal FROM winkelwagen WHERE ip='".$_SERVER['REMOTE_ADDR']."'";
$result = mysql_query($query) or die (mysql_error());
$aantal = mysql_result($result,'aantal');
?>
$query = "SELECT COUNT(*) AS aantal FROM winkelwagen WHERE ip='".$_SERVER['REMOTE_ADDR']."'";
$result = mysql_query($query) or die (mysql_error());
$aantal = mysql_result($result,'aantal');
?>
$aantal bevat dan het aantal producten (rijen) in de winkelwagen van die persoon.
Gewijzigd op 01/01/1970 01:00:00 door Stefan van Iwaarden
ik heb wel wat maar dat is niet stabiel zeg maar ik moet een email stuuren naar de besteller en naar mij.
en in alle bij moet die bestelling in de mail komen.
oh ja mij winkel systeem werkt op ip dus je moet dus alles in de mail kunnen zien die hij dus verzent met zijn ip.
meschien moet ik eerst de producten in zijn winkel wagen eerst verplaatsen naar een ander tabel in de datavase iets met select all from winkelwagen where ip = $ipadd AND insert from open-orders ....
en veder weet ik het niet of dat kan !! en als het kan hoe !!
wie weet hier een oplossing voor
Gewijzigd op 01/01/1970 01:00:00 door jordi