Voor een verenging heb ik een website gemaakt waarmee mensen achter de bar kunnen registreren als iemand wat wilt bestellen. Aan het eind van de maand krijg je dan een totaal van wat je hebt besteld en dat wordt dan van je rekening afgeschreven.
Ook kan je hier groepen in maken zodat de kosten worden verdeeld over die mensen. ook kan je iemand twee keer aan een groep toevoegen als bijvoorbeeld iemand een vriend mee neemt die niet lid is maar wel mee drinkt.
Nu heb ik dit wel werkend gekregen maar volgens mij is dit niet de beste manier, dit is wat ik nu heb:
Members
id
naam
isgroup
Groupmembers
id
groupid -> members.id fk
memberid -> members.id fk
Orders
id
memberid
productid
amount
date
sql code om de totalen te bereken voor alle leden
code die ik nu heb om de prijs per persoon uit rekenen:
Volgens mij is dit heel omslachtig, iemand tips hoe ik dit anders kan doen?
Ook kan je hier groepen in maken zodat de kosten worden verdeeld over die mensen. ook kan je iemand twee keer aan een groep toevoegen als bijvoorbeeld iemand een vriend mee neemt die niet lid is maar wel mee drinkt.
Nu heb ik dit wel werkend gekregen maar volgens mij is dit niet de beste manier, dit is wat ik nu heb:
Members
id
naam
isgroup
Groupmembers
id
groupid -> members.id fk
memberid -> members.id fk
Orders
id
memberid
productid
amount
date
sql code om de totalen te bereken voor alle leden
SQL:
1
2
3
4
5
6
7
8
| SELECT m.id, m.Name, p.name, count(p.name), sum(p.price) FROM members as m , orders as o , products as p WHERE m.Id = o.MemberId AND o.ProductId = p.Id AND m.IsGroup = 0 GROUP BY m.id, p.Name |
code die ik nu heb om de prijs per persoon uit rekenen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| $groups = $this->get_total_price_per_member(true); // hier krijg het totale bedrag aan wat er is besteld per groep $total_members = $this->get_total_groupmembers(); // het totaal aantal deelnemers per groep $total_groupmembers_per_member = $this->get_total_groupmembers_per_member(); // hoevaak iemand in een groep is ingeschreven. $priceperperson = array(); $result = array(); for ($i=0; $i < count($groups); $i++) { $priceperperson[$i][0] = $groups[$i]['Name']; $priceperperson[$i][1] = $groups[$i]['id']; $priceperperson[$i][2] = $groups[$i]['sum(p.price)'] / $total_members[$i]['count(gm.memberId)']; } for ($i=0; $i < count($total_groupmembers_per_member); $i++) { for($x=0; $x < count($priceperperson); $x++) { if($priceperperson[$x][1] == $total_groupmembers_per_member[$i]['id']) { $result[$i][0] = $priceperperson[$x][0]; $result[$i][1] = $total_groupmembers_per_member[$i]['memberId']; $result[$i][2] = $total_groupmembers_per_member[$i]['count(gm.memberId)'] * $priceperperson[$x][2]; break; } } } for($i=0; $i < count($result); $i++) { echo ' Member: ' . $result[$i][1] . 'Spel: ' . $result[$i][0] . ' Price: ' . $result[$i][2] . ' </br>'; } |
Volgens mij is dit heel omslachtig, iemand tips hoe ik dit anders kan doen?