`dag` int(2) NOT NULL default '0',
`maand` int(2) NOT NULL default '0',
`jaar` int(4) NOT NULL default '0',
Geen idee wat je hier in wilt zetten, maar is natuurlijk geen datum! Een datum zet je in een DATE en nooit en te nimmer in 3 velden van het type INT. Probeer maar eens te gaan rekenen met een datum die in een INT staat, dat wordt een hele klus, het kan zelfs onmogelijk zijn.
Verder is
`id` smallint(2) NOT NULL auto_increment,
een risico. Voor je het weet heb je het aantal mogelijkheden verbruikt en lopen je queries in de soep. Gebruik voor een id altijd een INT(11), dan zul je nooit tegen dit soort domme beperkingen aanlopen.
zet dan die tabellen in je database en zet het script op je site en klaar ben je.
en ga eerst kijken naar tutorials(ook andere sites) of ze er zijn en stel dan zo'n vraag ;)
Het is een script van phphulp.nl [De zoveelste Poll] en in het voorbeeld doet ie het wel, dus het lijkt me niet onmogelijk iig..
Misschien dat je met jouw toepassingen niet hoeft te rekenen en vergelijken met de datum, maar probeer jij bijvoorbeeld maar eens uit te zoeken welke records op een vrijdag zijn aangemaakt. Dit is met jouw datamodel vrijwel onmogelijk, er komen in elk geval heel wat regels (honderden?) php-code aan te pas. Wanneer je een DATE gebruikt, komt er niet 1 regel php-code aan te pas... Wat zou handiger/sneller zijn?
@ andere forumleden: voor de duidelijkheid: dit is een geintje om te kijken of het echt honderden regels code zou kosten. Nog altijd is het vele malen beter om MySQL het rekenwerk te laten doen! Ga maar na: de code uit mijn voorbeeld zou ELKE keer uitgevoerd moeten worden in de while loop waarin je je resultaten fetcht.
Het aantal regels valt inderdaad wel mee, het aantal keren dat je de loop moet doorlopen (die hier overigens nog ontbreekt, evenals de query om alle gegevens op te halen) valt zeker niet mee. Je moet er toch niet aan denken dat je 10.000 records (of meer...) in je database hebt staan. Dit kan dan zo maar een time-out opleveren.
Een andere oplossing is om een hele serie valide vrijdag-datums aan te maken in php en dan de queries uit te gaan voeren. Maar goed, dat zijn per jaar 52 queries en zal dus ook niet overdreven snel zijn.
Het is gewoon dom om bij datums geen gebruik te maken van een DATE of DATETIME. Die zijn er voor gemaakt. Maar daar zijn we het zeker over eens! ;)
Returns the weekday index for date (1 = Sunday, 2 = Monday, …, 7 = Saturday). These index values correspond to the ODBC standard.
mysql> SELECT DAYOFWEEK('1998-02-03');
-> 3
Dit levert namelijk 1 t/m 7 op, dat vind ik een logischer telling. Ik heb eens lopen klooien met een WEEKDAY(), maar had ik last van die 0 i.v.m. een vergelijking. Exacte achtergrond is me ontschoten, maar sinds dat probleem ben ik over of DAYOFWEEK().
@Frank: DAYOFWEEK levert inderdaad een logischer telling op.
Ik heb net even zitten testen met een paar onzin datums, zoals '2006-02-31' en dan retourneert MySQL keurig NULL. Als je dus niet zeker weet of je een valide datum hebt kun je dat ook nog checken via MySQL.