[php / mysql] wil ineffiente manier graag verbeteren

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
sorry voor de vage topic titel, maar kon niets beters bedenken...

Ik ben bezig een systeempje te maken waarmee je gewerkte uren per week kunt invoeren en overzichten kunt krijgen.
Ik wil nu ook een overzicht maken van alle weken waarvan nog geen uren zijn ingevoerd, per persoon. En om dit te realiseren kan ik alleen maar de volgende inefficiënte manier bedenken:

Een array maken die er ongeveer zo uitziet:
PHP:
1
2
$array = array("200301"=>"1","200302"=>"1","200303"=>"1","200304"=>"1");
// etc.

Dus iedere key is een samenvoeging van jaar en weeknummer.
Vervolgens met een while loopje per persoon door de uren-tabel lopen en voor iedere jaar+week een unset() doen op die array, zodat je alleen de jaarweeknummer-keys nog overhoudt van de weken (in een bepaald jaar) waarvan nog geen uren bekend zijn. En dan weet je dus welke niet zijn ingevoerd.
Maarja....dat gaat wel ff duren als je dat voor 100 man moet doen, en mocht dit over 5 jaar nog gebruikt worden dan heb je dus een array van 5x52 elementen waar ie zich per persoon doorheen moet worstelen.
En daarnaast...als het efficiënter kan, dan wil ik dat natuurlijk ook graag afgezien van het tijdsaspect :-)

Weet iemand misschien hoe ik dit efficiënter zou kunnen aanpakken?

Acties:
  • 0 Henk 'm!

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 01-04-2023
Je hebt het nu over een array (in php), maar hoe zit je database in elkaar? Heb je daar al een idee over, of heb je het al (gedeeltelijk) werkend? Vanuit mysql is het namelijk waarschijnlijk makkelijker om dit te regelen...

Ook Knor is aangestoken met het ligfietsvirus!


Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Rotjeknor schreef op 28 maart 2003 @ 14:05:
Je hebt het nu over een array (in php), maar hoe zit je database in elkaar? Heb je daar al een idee over, of heb je het al (gedeeltelijk) werkend? Vanuit mysql is het namelijk waarschijnlijk makkelijker om dit te regelen...
Ik heb twee tabellen voor de uren, eentje waarbij ik per uniek nummer een declaratie op sla, en eentje waarbij ik per declaratie de gegevens per dag heb. In die hoofdtabel heb ik een apart veld voor jaar en weeknummer (de dag wordt in die andere tabel opgeslagen). In princiepe is het dus al gedeeltelijk werkend. Ik ben alleen nog niet aan m'n probleem begonnen - wat ik hierboven beschreef - omdat ik eerst wilde weten of er niet een betere, efficiëntere manier was.
En ja...ik hoop inderdaad dat er een soort functie in mysql is die me hiermee verder kan helpen.

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Ik denk dat ik al iets slims heb bedacht!

Ik maak gewoon een extra tabel aan met per row een jaartal en weeknummer. Dan selecteer ik die allemaal en join ik van 1 persoon al zijn data op overeenkomstig jaar en weeknummer. En in m'n WHERE vraag ik dan alle NULL velden op (dus waar ie leeg blijft)
Volgens mij moet dat 'm worden....

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Volgens mij heb je daar geen extra tabel voor nodig hoor. Als je nou eens even eendump laat zien van die twee tabellen, dan maakt het voor ons makkelijker om erover te redeneren..

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

Verwijderd

waarom neem je in die 'ene' tabel niet gewoon een date veld op?
Verder zou een dump het geheel zeker verduidelijken

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Verwijderd schreef op 29 March 2003 @ 02:22:
waarom neem je in die 'ene' tabel niet gewoon een date veld op?
Hoe zou me dat moeten helpen 'ontbrekende' weeknummers te achterhalen? Bestaat er in mysql een functie dan die een hele serie rows kan bekijken en je vertelt of er een nummer in ontbreekt?
if so...dan hoor ik dat graag :)

Acties:
  • 0 Henk 'm!

  • Devil
  • Registratie: Oktober 2001
  • Niet online

Devil

King of morons

marty schreef op 29 maart 2003 @ 11:12:
[...]

Hoe zou me dat moeten helpen 'ontbrekende' weeknummers te achterhalen? Bestaat er in mysql een functie dan die een hele serie rows kan bekijken en je vertelt of er een nummer in ontbreekt?
if so...dan hoor ik dat graag :)
Je neemt de serie weeknummers van 1 persoon en kijkt of alle weeknummer bij elkaar opgeteld (SUM) gelijk is aan ((laagste weeknummer(MIN) + hoogste weeknummer(MAX)) * ((hoogste weeknummer - laagste weeknummer)+1))/2
Als dat niet zo is ontbreekt er een week. (als je ALTIJD begint te tellen bij week 1 moet je trouwens ipv laagste weeknummer gewoon 1 nemen)
Deze formule kun je makkelijk in een query opnemen om zo alleen de serie rows te krijgen van de personen waarbij er weken ontbreken.

Voorbeeld:
er zijn de volgende weken ingevuld: 3,4,5,6,7
((3+7) * ((7-3)+1))/2 = (10 * 5)/2 = 25
3 + 4 +5 +6 +7 = 25
Dus geen ontbrekende

Voorbeeld 2:
weken: 3,4,6,7
((3+7) * ((7-3)+1))/2 = (10*5)/2 = 25
3 + 4 + 6 + 7 = 20
Dus er ontbreken weken.

[ Voor 10% gewijzigd door Devil op 29-03-2003 16:08 ]

After all, we are nothing more or less than what we choose to reveal.


Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Devil schreef op 29 maart 2003 @ 15:31:
[...]Dus er ontbreken weken.
Daar had ik zelf ook al aan gedacht, ik wil alleen ook weten welke weken er ontbreken. en die informatie mis ik zo. (moet namelijk allemaal per persoon in een overzichtje komen te staan)
Pagina: 1