Berichten: 637
avatar
Offline Stuur privebericht
Hee, ik zet met een probleem. Ik ben bezig met een donatielog. Alleen nu loop ik een beetje vast. Ik heb al vanalles geprobeerd met een while ect. Maar ik krijg het maar niet voor elkaar. Dit is wat ik nu heb:

Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
<?php
$users 
mysql_query("SELECT id FROM users WHERE familie = '" $own['familie'] . "'");
    while(
$user mysql_fetch_assoc($users)) {

        
$donatiel mysql_fetch_assoc(mysql_query("SELECT bedrag FROM donatielog WHERE familie = '" $own['familie'] . "' AND userid = '" $user['id'] . "' ORDER BY datum DESC"));
    }
?>


Ik wil nu dus dat hij alle bedragen opteld waar familie = $own['familie'] en userid = $user['id']. Ik heb het al met een while geprobeerd maar zonder succes. $donatiel is de laatste donatie van het lid wat gedoneerd is. Nu moet ik dus alleen nog weten hoe ik alle donaties van het lid bij elkaar optel. Met de while had ik het zo gedaan.

Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$users 
mysql_query("SELECT id FROM users WHERE familie = '" $own['familie'] . "'");
    while(
$user mysql_fetch_assoc($users)) {

        
$donaties $sql->query("SELECT bedrag FROM donatielog WHERE familie = '" $own['familie'] . "' AND userid = '" $user['id'] . "'");
            while(
$donatie $sql->fetch($donaties'assoc')) {
                
$totale $totale $donatie['bedrag'];
            }

        
$donatiel mysql_fetch_assoc(mysql_query("SELECT bedrag FROM donatielog WHERE familie = '" $own['familie'] . "' AND userid = '" $user['id'] . "' ORDER BY datum DESC"));
    }
?>


Dan telde hij alles wel goed op maar dan kwam het achter elke user te staan. Dus stel peter en pietje zitten in een familie. en peter doneerde 100.000 en daarvoor nog een keer 20.000 kreeg je het zo:

Peter 120.000 100.000
Pietje 120.000 0

Ik hoop dat iemand me kan helpen.
20-10-2010 21:13
Dit topic is 275 keer bekeken door 63 verschillende leden
Reacties op: "Log"
1
nyan nyan nyan nyan
Berichten: 2076
avatar
Offline Stuur privébericht
Een while in een while... Nooit doen.

MySQL kent de SUM-functie:
Code | Selecteer Alles
minimaliseren
1
2
3
<?php
$donaties 
$sql->query("SELECT SUM(bedrag) as `bedrag` FROM donatielog WHERE familie = '" $own['familie'] . "' AND userid = '" $user['id'] . "'");
?>
20-10-2010 21:17
Gevallen leider
Berichten: 118
avatar
Offline Stuur privébericht
Quote

Een while in een while... Nooit doen.


Correctie: in dit geval niet doen. Het kan wel handig zijn om bijvoorbeeld submenu's te genereren, hoewel je ook een recursieve functie kunt schrijven...

Wat betreft de oplossing geef ik Jannick gelijk. De SUM() (som, oftewel alle gevonden rijen optellen) functie is waarschijnlijk waar je naar zocht.
20-10-2010 21:22
Berichten: 637
avatar
Offline Stuur privébericht
@Jannick

ik dacht ook al dat ik dat beter niet kon doen. Maarja als het had gewerkt had ik daarna alsnog hier gevragen hoe het beter kon . En je query werk. Hartstikke bedankt .

Nieuwe reactie samengevoegd met originele reactie op 20.10.10 22:35:49:
Nu heb ik alleen nog een probleem. Nu wil ik een totaal hebben. Maar hoe moet ik mijn query dan maken? Want ik had deze query om de laatste donatie te selecteren:

Code | Selecteer Alles
minimaliseren
1
$donatielt $sql->fetch($sql->query("SELECT bedrag FROM donatielog WHERE familie = '" $own['familie'] . "' ORDER BY datum DESC)"), 'assoc');


Dan selecteer je dus het laatste bod wat er in je familie is gedoneerd maar als ik nu alle totalen van elk lid wil? Dus Bijvoorbeeld:

Pietje doneerd eerst 2000 en daarna 6000. 6000 is dus zijn laatste donatie.
Peter doneerd eerst 5000 en daarna 3000. 3000 is dus zijn laatste donatie.

Nu wil ik dus dat hij de laatste donaties bij elkaar optelt. Hoe doe ik dat?
20-10-2010 21:22
www.gun2maffia.nl
Berichten: 1328
avatar
Offline Stuur privébericht
bump op aanvraag
21-10-2010 23:16
Ex-moderator
Berichten: 375
avatar
Offline Stuur privébericht
Als je alles wilt optellen kan dat als volgt:

Code | Selecteer Alles
minimaliseren
1
$totale += $totale $donatie['bedrag']


Door de + voor de = te zetten begrijpt die dat die alles moet gaan optellen bij elkaar .

Weet niet of je er zo uitkomt.
04-11-2011 10:05
Berichten: 692
avatar
Offline Stuur privébericht
Dit topic is al sinds 2010.
04-11-2011 17:22
Informatica Student
Berichten: 1405
avatar
Offline Stuur privébericht
Quote: Hood

Dit topic is al sinds 2010.


Ik snap ook niet hoe iemand opeens bij zo'n topic komt...
Moet je wel diep graven zou ik denken
04-11-2011 17:50
Reageer op: "Log"
1
Je kan niet reageren omdat je niet bent ingelogd. Inloggen of Aanmelden