[MySQL] Dagen van de week

Pagina: 1
Acties:

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Ik heb een tabel met daarin de dagen van de week, maandag t/m zondag.

Nu wil ik met een query alle dagen selecteren vanaf de huidige dag + 2

Dus als het maandag is woensdag t/m zondag.

Is dit mogelijk? Ik dacht aan het INTERVAL command, maar is dit niet alleen om een periode te selecteren (maandag t/m vrijdag bv) en kan je er niet mee rekenen?

  • Shedman
  • Registratie: November 2000
  • Laatst online: 18-04 13:34

Shedman

Met het hart op de goede plek

Met welke taal wil je er iets mee doen??

In PHP kun je bijv. de functie date gebruiken, en dan met w een numerieke waarde van de weekdag opvragen...

Hier stonden al heel lang linkjes naar sites die het allang niet meer deden ...


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Oh, ja sorry. Ik gebruik het in combinatie met php.


Het probleem is dat ik een select doe met de dag naam, dus doe ik het volgende:

PHP:
1
2
$vandaag=date("w");
$dag=array("zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag");

Dus vandaag is het $dag[$vandaag];

Maar door mijn array als ik wil rekenen klopt het niet als het bv zaterdag is en je doet:
PHP:
1
$vandaag=date("w") +2;

Dan komt hij op niets uit omdat de array ophoudt bij zaterdag.

Kan ik er gewoon meer dagen bij aanplakken in me array zodat het wel klopt ??

[ Voor 97% gewijzigd door ViNyL op 07-05-2004 09:42 ]


  • Blorgg
  • Registratie: Juni 2001
  • Niet online
Je zou je dagen array kunnen laten beginnen bij maandag en laten eindigen op zondag, dan klopt het altijd in jouw geval.

Wat je anders kan doen is werken met index nummers. Je kijkt dan welk index nummer de huidige dag +2 heeft. Zondag is $dag[0], maandag is $dag[1], etc. Dan doe je een while lus die gaat tot 6 gaat en waarbij het start getal de huidige dag +2 is. Dus iets als while($i = $dag_plus_2; $i<=6; $i++) en na de loop doe je er nog eentje voor de zondag, $dag[0].

Waarschijnlijk dat de eerste oplossing wat netter is ;)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

ViNyL:
Is dit mogelijk? Ik dacht aan het INTERVAL command, maar is dit niet alleen om een periode te selecteren (maandag t/m vrijdag bv) en kan je er niet mee rekenen?
Ik vraag me af of je uberhaupt wel iets in die richting geprobeerd hebt :? Want voor 't geval je de klok nog 's hoort luiden, hier hangt de klepel

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • intermusic
  • Registratie: September 2002
  • Laatst online: 25-03-2025

intermusic

Marc Hoekstra

PHP:
1
2
3
4
5
<?
$vandaag=date("w"); 
$vandaag = $vandaag + 2;
$dag=array("zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag");
?> 

Kan dat kloppen?

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Ik zoek helemaal niets richting mysql dus dat is mijn "klepel" zowieso niet. Ik gebruik dag namen in mijn tabel. Dus de kolommen heten maandag, dinsdag, woensdag etc. Dus aan mysql heb ik niets op die manier.

Het nummeren van de array zou wel handig zijn idd.

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
intermusic schreef op 07 mei 2004 @ 09:57:
PHP:
1
2
3
4
5
<?
$vandaag=date("w"); 
$vandaag = $vandaag + 2;
$dag=array("zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag");
?> 

Kan dat kloppen?
Nee dan krijg je het zelfde wat ik nu al heb. Verplaatsen van zondag naar het einde van de array zou kunnen, maar aangezien php een nummer teruggeeft (bv 6 voor zaterdag) geloof ik dat zondag 1 is.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

ViNyL:
Ik zoek helemaal niets richting mysql dus dat is mijn "klepel" zowieso niet.
Misschien moet je dan de volgende keer toch iets beter nadenken over je topicstart en je topictitel :? 8)7
Ik gebruik dag namen in mijn tabel. Dus de kolommen heten maandag, dinsdag, woensdag etc. Dus aan mysql heb ik niets op die manier.
Daar mag je dan ook wel 's wat aan doen, maar goed, da's een andere discussie.
Het nummeren van de array zou wel handig zijn idd.
Dit is ook basiskennis PHP hoor, een array is, wanneer je niet expliciet de indices opgeeft, sowieso gewoon genummerd, te beginnen bij 0. Volgens mij heb je dan niet meer nodig dan een modulo operator en een beetje nadenken en eventueel de array in de juiste volgorde zetten.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • intermusic
  • Registratie: September 2002
  • Laatst online: 25-03-2025

intermusic

Marc Hoekstra

Eeen array begint altijd bij 0 dus zondag is 0, maandag is 1 enz.

offtopic:
hehe. iemand was me voor

[ Voor 29% gewijzigd door intermusic op 07-05-2004 10:07 ]


Verwijderd

je zou ook in je tabel alle dagen een dagnr kunnen meegeven, beginnend met een 0 voor zondag.

  • gvdh81
  • Registratie: Juli 2001
  • Laatst online: 09:04

gvdh81

To got or not to got..

Maaruh, probeer dit eens:
PHP:
1
setlocale(LC_TIME, 'dutch');


Ff op php.net opzoeken hoe je ermee om moet gaan, maar dit zorgt ervoor dat je gewoon hollandse shit krijgt als je een strftime doet. Wat dus betekend dat je GEEN array's voor dagnamen maandnamen etc etc hoeft te doen, ook kent hij "minuten" "seconden" etc etc...

[ Voor 23% gewijzigd door gvdh81 op 07-05-2004 10:09 ]


  • samo
  • Registratie: Juni 2003
  • Laatst online: 10:36

samo

yo/wassup

Misschien:
PHP:
1
2
3
4
5
<? 
$vandaag=date("w"); 
$vandaag = $vandaag + 2; 
$dag=array("zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag","zondag","maandag"); 
?> 

Hij pakt toch de eerste occurence, en het is gewoon een cyclus + 2, als je zaterdag pakt, heeft ie genoeg ruimte voor de daaropvolgende 2 dagen... Of is da niet goed?

[ Voor 20% gewijzigd door samo op 07-05-2004 10:11 ]

Bekend van cmns.nl | ArneCoomans.nl | Het kindertehuis van mijn pa in Ghana


  • PromWarMachine
  • Registratie: Oktober 2001
  • Laatst online: 17-05 09:57

PromWarMachine

Forsaken Archer

Verwijderd schreef op 07 mei 2004 @ 10:07:
je zou ook in je tabel alle dagen een dagnr kunnen meegeven, beginnend met een 0 voor zondag.
Waar zouden indices voor uitgevonden zijn? 8)7

Je kan gewoon $vandaag + 2 doen. Als de dag dan groter is dan 6, haal je er 7 af :z
Stel je wilt op zaterdag 2 dagen erbij tellen, dan komt de dag op 8 te staan. Als je er dan 7 vanaf haalt, dan zit je op 1. $dag[0]=zondag, $dag[1] = maandag. Klopt dus?

Nog een voorbeeld. Het is vandaag vrijdag ($dag[5]). Je wilt weten welke dat het is over 5 dagen? $dag[5+5] = $dag[10]. $dag[10-7] = $dag[3]. Dag 3 is woensdag. Over 5 dagen is 't inderdaad woensdag. Dit lijkt mij dus te werken?

Source dan maar? :X
PHP:
1
2
3
4
5
6
7
8
9
10
11
<? 
$dag=array("zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag");
$vandaag=date("w"); 
$vandaag = $vandaag + 2; 
$dag[$vandaag] // vandaag
if ($vandaag > 6)
{
    $vandaag-=7;
}
echo ("Vandaag is het ".$dag[$vandaag]);
?> 


%7 is misschien wel zo handig/kort, maar ik weet niet of dat altijd goed gaat, met afrondingen enzo? Ik ben ook maar een prutser. :X

Vergeef me een syntaxfoutje. Het is uit 't hoofd, zonder editor. :+

[ Voor 54% gewijzigd door PromWarMachine op 07-05-2004 10:23 ]

Dividend for Starters


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Hmm dat snap ik niet helemaal :P

  • Guldan
  • Registratie: Juli 2002
  • Laatst online: 24-05 23:58

Guldan

Thee-Nerd

je weet toch ook wel dat $dag[0] ook gewoon zondag geeft??geeft zelfde als $dag['zondag'];

Im with PromWarmachine... :P :P

[ Voor 30% gewijzigd door Guldan op 07-05-2004 10:17 ]

You know, I used to think it was awful that life was so unfair. Then I thought, wouldn't it be much worse if life were fair, and all the terrible things that happen to us come because we actually deserve them?


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Ja dat wel. Die zet ik later dus om naar dag namen. Maar als ik vandaag wil selecteren PLUS 2.

Mijn array loopt van 0 tot 6 (zondag tm zaterdag). als het vandaag 6 is, zaterdag dus, kom je op 8 uit, en dat is niets.

_/-\o_
Het - 7 trucje werkt idd wel ;)

[ Voor 10% gewijzigd door ViNyL op 07-05-2004 10:18 ]


  • Guldan
  • Registratie: Juli 2002
  • Laatst online: 24-05 23:58

Guldan

Thee-Nerd

ja en daar dan 7 vanaf halen

dag 8 + 2 -7

zaterdag + 2 is maandag natuurijk, maar het getal is dan 8. als je er dan 7 vandaf haalt dan staat het op 1, en dat is je correcte waarde voor Maandag.

[edit] moet sneller leren typen.... :P :P

[ Voor 11% gewijzigd door Guldan op 07-05-2004 10:19 ]

You know, I used to think it was awful that life was so unfair. Then I thought, wouldn't it be much worse if life were fair, and all the terrible things that happen to us come because we actually deserve them?


  • smaij
  • Registratie: November 2000
  • Laatst online: 09:56
PHP:
1
2
3
4
5
<? 
$vandaag=date("w"); 
$vandaag = ($vandaag + 2) % 7; 
$dag=array("maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag","zondag"); 
?> 


En waarom gebruik je namen in je kolommen.. Kost alleen maar meer ruimte, onhandig met indexeren, zoeken, en dus ook dit soort dingen!

[aanvulling op juaron]

Je kan zelfs een tijd in je tabel opnemen voor toekomstige (onverwachte) aanpassingen. En daarop selecteren met WEEKDAY (0 = maandag, 6 = zondag)

Andersom kan ook dat je de kolom vult met WEEKDAY(NOW()) en dan laat je het werk over aan mysql ipv zelf te prutsen (zo noem ik het maar even want echt netjes is het niet..) in php

[ Voor 98% gewijzigd door smaij op 07-05-2004 10:26 ]


Verwijderd

Waar zouden indices voor uitgevonden zijn? 8)7
wanneer je de dagnrs in je tabel zet, heb je de hele array niet meer nodig, en kun je direct in je tabel selecteren op nummer.

  • PromWarMachine
  • Registratie: Oktober 2001
  • Laatst online: 17-05 09:57

PromWarMachine

Forsaken Archer

Verwijderd schreef op 07 mei 2004 @ 10:22:
[...]

wanneer je de dagnrs in je tabel zet, heb je de hele array niet meer nodig, en kun je direct in je tabel selecteren op nummer.
Ah, sorry. Dat verklaart idd. Dat kon ik uit je vorige post niet helemaal halen. ;)

offtopic:
@TS: Waar heb je het eigenlijk voor nodig, want je houdt op deze manier geen rekening met de datum he?

Dividend for Starters


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Netjes misschien niet, maar het is een bestel systeem hebben wat iedere dag van de week gewoon hetzelfde is. Verder niets. Dus leek mij dit het handigst.

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025

GX

Nee.

PHP:
1
2
$dagen = 2;
echo date("w", time()+(60*60*24*$dagen));

zoiets?..

Ja, misschien is het antwoord al gegeven. nevertheless vind ik deze wel leuk.

[ Voor 41% gewijzigd door GX op 07-05-2004 11:58 ]


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Het gaat trouwens niet altijd op met die oplossing van 7 dagen eraf halen, want:

0 = zondag
1 = maandag
2 = dinsdag
3 = woensdag
4 = donderdag
5 = vrijdag
6 = zaterdag

Dus stel het is woensdag (3) en ik doe daar 2 bij = 5 - 7, klopt dus niet.

Als ik gewoon met een if lus kijk of het getal hoger is al 7 dan klopt het wel, als het hoger is doe ik er 7 af en klopt het weer.

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
ViNyL schreef op 07 mei 2004 @ 14:47:
Het gaat trouwens niet altijd op met die oplossing van 7 dagen eraf halen, want:
En als je %7 (modulo 7) doet, dan heb je dit probleem opgelost. Is trouwens ook al eerder genoemd.

Never underestimate the power of


  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 25-05 22:36

ripexx

bibs

ViNyL schreef op 07 mei 2004 @ 10:33:
Netjes misschien niet, maar het is een bestel systeem hebben wat iedere dag van de week gewoon hetzelfde is. Verder niets. Dus leek mij dit het handigst.
Ik ken weinig bestel systemen die iedere dag hetzelfde zijn. Want leveringen op zondagen zijn meestal niet mogelijk. Daarnaast zijn er zat speciale dagen die niet mee genomen moeten worden. Dus ik weet niet precies wat ja van plan bent maar pas op want het kan behoorlijk lastig worden.
PHP:
1
2
3
4
5
6
<?
$dagen = 2;
$new_day = date("w", time()+(60*60*24*$dagen));
$dagen=array("zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag");
$dag = $dagen[$new_day];
?> 

Thx to GX en PromWarMachine :)

Hierbij maakt het dus niet uit over er zondagen, schrikkeldagen en weet ik wat voor een mogelijk moeilijkheden zijn. Dit lost PHP netjes voor je op dmv de date functie.

buit is binnen sukkel


  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025

GX

Nee.

ripexx schreef op 07 mei 2004 @ 14:56:
[...]

Thx to GX en PromWarMachine :)

Hierbij maakt het dus niet uit over er zondagen, schrikkeldagen en weet ik wat voor een mogelijk moeilijkheden zijn. Dit lost PHP netjes voor je op dmv de date functie.
PHP:
1
2
3
$dagen = 2;
setlocale(LC_TIME,"nl_NL","Dutch"); // Ik weet niet welk OS je gebruikt...
$dag = strftime("%A", time()+(60*60*24*$dagen));

Zoiets zou het ook moeten doen. Heb je ook geen gekke array nodig..

[ Voor 28% gewijzigd door GX op 07-05-2004 15:12 ]


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Het is een bestel systeem voor eten binnen een zorg instelling. Daar is het pakket iedere dag hetzelfde voor elke week. Mochten er toch afwijkende zaken zijn, bijvoorbeeld op 30 juni 2004 moet er iets anders dan kijk ik of die datum vandaag is en voeg ik het eventueel toe aan de bestellijst.

Mensen in de zorg krijgen zelfs op speciale dagen eten dus :P


Meer is het niet.

[ Voor 10% gewijzigd door ViNyL op 07-05-2004 16:39 ]

Pagina: 1