login  Naam:   Wachtwoord: 
Registreer je!
 Forum

bonus uitrekenen (mysql + foreach oid)

Offline XAXIS - 26/10/2006 22:15
Avatar van XAXISNieuw lid Beste leutes,

Ik wil dat PHP een bonusstructuur uitrekent.
Echter is de formule (voor mij in ieder geval) vrij lastig.

PHP moet namelijk uit de MySQL dbase alle 'records' met status 1G ophalen.

1e record = 2.50 euro bonus
2e record = 5.00 euro bonus
3e record = 7.50 euro bonus
4e record = 10.00 euro bonus
5e t/m .. record = 10.00 euro bonus.

Dus als je 3 records hebt, heb je:
2.50+5.00+7.50 = 15.00 aan bonus.
Bij 6 records is het dus:
2.50+5.00+7.50+10.00+10.00+10.00 = 45,-

Tot dusver niet zo moeilijk. Met if statements kan ik simpel uit laten rekenen hoeveel bonus iemand krijgt.

Echter komt het probleem voor mij op het moment dat de script dit alleen moet doen bij de records die op DEZELFDE dag zijn gemaakt.

Dus 3 records op 01-10-2006 = 15.00
En 6 records op 02-10-2006 = 45.00
(dit in tegenstelling tot 9 records totaal = 75.00)

Snappen jullie mijn probleem?

Hoe kan MySQL dus uitrekenen hoeveel bonus er PER DAG uitgekeerd dient te worden. Dit kan daarna allemaal opgeteld worden.

Ik zat zelf te denken aan GROUP BY DAY(login) in de query, maar weet niet of dit zal werken.

Groeten en alvast bedankt!

8 antwoorden

Gesponsorde links
Offline Webtijn - 26/10/2006 22:48
Avatar van Webtijn PHP interesse Hmm.. ik snap je probleem niet helemaal. Maar kun je niet gewoon een extra veld toevoegen met de datum daarin. (Eventueel als timestamp)
Offline ikkedikke - 26/10/2006 23:14
Avatar van ikkedikke PHP expert wat heb je nu als databasestructuur?
Offline Abbas - 27/10/2006 08:51
Avatar van Abbas Gouden medaille

Crew .NET
misschien kan je eerst het aantal records tellen en daarna de berekening doen om de bonussen uit te reiken ipv eerst per dag de bonussen te berekenen en dan op te tellen
Offline XAXIS - 27/10/2006 14:03 (laatste wijziging 27/10/2006 14:05)
Avatar van XAXIS Nieuw lid Er staat bij elke record al een datum.

@titjes
Records optellen en daarna de berekening is zoals ie het nu doet.
Maar hij moet bij per dag de berekening uitvoeren op de records die op die dag gemaakt zijn. En op het eind alles optellen.

@ikkedikke
Databasestructuur is simpel. Een aantal recordgegevens, datum waarop deze gemaakt is (datetime) en userid.
Hij moet dus per userid en per dag - DAY(login) - de berekening uitvoeren.
Offline Thomas - 27/10/2006 14:23
Avatar van Thomas Moderator Moet je even kijken hoe dit uitpakt (of je een COUNT kunt groeperen op userid èn dag), anders moet je je queries splitsen.
Offline XAXIS - 06/11/2006 12:41
Avatar van XAXIS Nieuw lid Hoe zou ik dat met gesplitste queries kunnen doen, want groupen geeft niet de juiste resultaat.
Offline Thomas - 06/11/2006 12:47
Avatar van Thomas Moderator Hm, ik zou -gegeven een dag (vast gegeven)- de bonus voor gebruikers uitrekenen, dan blijft het een redelijk simpele query waarbij je groepeert op userid.

Als je een overzicht geeft van de structuur van je db-tabel, kan er een concrete query opgesteld worden.

Het lijkt me ook mogelijk (weet niet zeker) om één query hiervoor te maken (met alle dagen die in de DB voorkomen).
Offline XAXIS - 06/11/2006 13:04
Avatar van XAXIS Nieuw lid Databasestructuur:

Tabel: Gegevens

berid / auto_increment / primary key
aantal kolommen / varchar
cca3dtgemaakt / datetime / (hier moet ie op dagen groeperen)
cca3 / int / (dit is de userid)

That's it, op een paar kolommen na natuurlijk.

Hij moet dus de bonus uitrekenen per cca3, per dag.
Dus op 13-10-2006 -> 10 records -> berekening -> x bedrag bonus.
En dan 15-10-2006 -> 05 records -> berekening -> x bedrag bonus.

Totaal

Zoiets, ik hoop dat het duidelijk is.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.163s