login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Week selecteren

Offline Yannick94 - 07/10/2008 19:22
Avatar van Yannick94Nieuw lid Ik ben bezig met een wedstrijdensysteem voor mijn voetbalclub. Ik wil graag een overzichjes laten zien van Vorige week, Deze week en volgende week. Hoe kan ik dit bereiken, en dan ook dat hij automatisch de goede week zoekt? Ik heb de rest van de code er al omheen, ik zoek alleen de goede SQL oplossing.
Ik wil gewoon de resultaten kunnen zien van woensdag tot woensdag, dus als ik zaterdag kijk dat ik de wedstrijden zie van de vorige woensdag tot de aankomende woensdag.

3 antwoorden

Gesponsorde links
Offline Wim - 07/10/2008 19:40
Avatar van Wim Crew algemeen alle date functies van mysql staan hier verzameld, zou je normaal genoeg mee moeten hebben!

http://dev.mysq...tions.html
Offline TomJansen - 08/10/2008 00:48 (laatste wijziging 14/10/2008 10:40)
Avatar van TomJansen Nieuw lid [color=red]
Wat is voor onzin hier, ik bijna zeggen asociaal. Men stelt een vraag, krijgt antwoord, en komt vervolgens niet meer terug in de topic!

Houdoe!!!!!!!!
[/color]
_____________

Nouja zo makkelijk is het niet 

Als je in MySQL een datum hebt, dan is dit de afgelopen (of dezelfde) woensdag:
  1. DATE_SUB( DATE(`datum`) , INTERVAL (DAYOFWEEK(`datum`)+3)%7 DAY )


en dan is dit de volgende woensdag: (altijd 7 dagen later)
  1. DATE_ADD( DATE(`datum`) , INTERVAL ((10-DAYOFWEEK(`datum`))%7)+1 DAY )


Nu heb je een tabel `wedstrijden` met o.a. een kolom `datum` en je wilt de wedstrijden selecteren vanaf afgelopen woensdag tot volgende woensdag.

Op zich hoef je maar 1 van die twee formules te gebruiken.
Bijvoorbeeld die bovenste:
  1. SELECT * FROM `wedstrijden` WHERE
  2. DATE_SUB(DATE(`datum`), INTERVAL (DAYOFWEEK(`datum`)+3)%7 DAY)
  3. = DATE_SUB(CURDATE(), INTERVAL (DAYOFWEEK(CURDATE())+3)%7 DAY)
  4. ;


Of die onderste:
  1. SELECT * FROM `wedstrijden` WHERE
  2. DATE_ADD(DATE(`datum`), INTERVAL ((10-DAYOFWEEK(`datum`))%7)+1 DAY)
  3. = DATE_ADD(CURDATE(), INTERVAL ((10-DAYOFWEEK(CURDATE()))%7)+1 DAY)
  4. ;


Maar het is natuurlijk veel efficienter om het volgende te doen:
  1. SELECT * FROM `wedstrijden` WHERE
  2. `datum` >= DATE_SUB(CURDATE(), INTERVAL (DAYOFWEEK(CURDATE())+3)%7 DAY)
  3. AND `datum` < DATE_ADD(CURDATE(), INTERVAL ((10-DAYOFWEEK(CURDATE()))%7)+1 DAY)
  4. ;
Offline Kr4nKz1n - 14/10/2008 12:13
Avatar van Kr4nKz1n Onbekend
TomJansen schreef:
[color=red]
Wat is voor onzin hier, ik bijna zeggen asociaal. Men stelt een vraag, krijgt antwoord, en komt vervolgens niet meer terug in de topic!

Houdoe!!!!!!!!
[/color]
??
Sommige mensen zijn niet zo verwend als jij die constant achter de computer kunnen.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.167s