Datum Range
Dag mensen,
Ik heb een vraagje mbt datum ranges.
Wat ik zoek is een script welke een true of false geeft wanneer de datum van vandaag wel of niet binnen een range uit de database valt. (Dit is bijvoorbeeld handig voor bepaalde onderdelen die maar tijdelijk op de site moeten komen te staan...)
Met een query haal ik deze gegevens uit de database:
$row['van_dag']
$row['van_maand']
$row['van_jaar']
$row['tot_dag']
$row['tot_maand']
$row['tot_jaar']
De dag van vandaag haal ik op met:
date("d")
date("m")
date("Y")
Nu moet ik een script hebben wat dus controleerd of de dag van vandaag binnen de van/tot range valt. Rekening houdend met het aantal dagen in het jaar, etc etc. Er moet dus uiteindelijk True of False uitkomen....
Is hier een makkelijk script voor? Bestaan hier al scripts voor? Ik kon zelf namelijk weinig vinden....helaas :)
Gr, Bram
Ik heb een vraagje mbt datum ranges.
Wat ik zoek is een script welke een true of false geeft wanneer de datum van vandaag wel of niet binnen een range uit de database valt. (Dit is bijvoorbeeld handig voor bepaalde onderdelen die maar tijdelijk op de site moeten komen te staan...)
Met een query haal ik deze gegevens uit de database:
$row['van_dag']
$row['van_maand']
$row['van_jaar']
$row['tot_dag']
$row['tot_maand']
$row['tot_jaar']
De dag van vandaag haal ik op met:
date("d")
date("m")
date("Y")
Nu moet ik een script hebben wat dus controleerd of de dag van vandaag binnen de van/tot range valt. Rekening houdend met het aantal dagen in het jaar, etc etc. Er moet dus uiteindelijk True of False uitkomen....
Is hier een makkelijk script voor? Bestaan hier al scripts voor? Ik kon zelf namelijk weinig vinden....helaas :)
Gr, Bram
Waar wil je het precies voor gebruiken, want zo tezien kan je dit beter direct in je query uitvoeren......
Maak twee velden type DATE in je MySQL tabel:
zichtbaar_van
zichtbaar_totenmet
dan kun je zo'n query gebruiken:
SELECT onderdeel
FROM tabelnaam
WHERE CURDATE() BETWEEN zichtbaar_van AND zichtbaar_totenmet
Nu doet de DB het werk voor je en hoef je niet meer gaan lopen klooien met PHP functies.
zichtbaar_van
zichtbaar_totenmet
dan kun je zo'n query gebruiken:
SELECT onderdeel
FROM tabelnaam
WHERE CURDATE() BETWEEN zichtbaar_van AND zichtbaar_totenmet
Nu doet de DB het werk voor je en hoef je niet meer gaan lopen klooien met PHP functies.
Maar dat is nou juist het probleem niet! :)
Het gaat er niet om dat ik een datum range zoek waarbinnen de dag van vandaag valt, maar juist anders om. Ik heb een datumrage uit de database en moet controleren of vanaag ook binnen die range valt.
Stel ik heb een Vakje waarin een tijdelijke afbeelding komt te staan. Op elke pagina is dat een andere afbeelding en aan deze afbeelding kan ik een actieperiode hangen. Als de dag van vandaag binnen deze actieperiode valt dan laat hij de afbeelding zien, zo niet dan niet.
De actieperiode haal ik uit de DB aan de hand van het pagina-id. Zo heb ik dus per pagina een actieperiode waarbinnen de afbeelding te zien is of niet. Deze periode kan ik dus per pagina instellen en uitlezen.
Nu heb ik dus een script nodig welke kijkt of de dag van vandaag binnen die periode valt en zo de afbeelding wel of niet laat zien.... true of false....
Het gaat er niet om dat ik een datum range zoek waarbinnen de dag van vandaag valt, maar juist anders om. Ik heb een datumrage uit de database en moet controleren of vanaag ook binnen die range valt.
Stel ik heb een Vakje waarin een tijdelijke afbeelding komt te staan. Op elke pagina is dat een andere afbeelding en aan deze afbeelding kan ik een actieperiode hangen. Als de dag van vandaag binnen deze actieperiode valt dan laat hij de afbeelding zien, zo niet dan niet.
De actieperiode haal ik uit de DB aan de hand van het pagina-id. Zo heb ik dus per pagina een actieperiode waarbinnen de afbeelding te zien is of niet. Deze periode kan ik dus per pagina instellen en uitlezen.
Nu heb ik dus een script nodig welke kijkt of de dag van vandaag binnen die periode valt en zo de afbeelding wel of niet laat zien.... true of false....
Maar dat is juist precies wat je met mijn voorbeeld kunt doen. Als je je pagina-id's in dezelfde tabel opslaat en het begin en het eind van de actieperiode dan levert mijn voorbeeld precies de resultaten die je nodig hebt.
Je hebt het overigens over een actieperiode per pagina en over een actieperiode per afbeelding.
Je hebt het overigens over een actieperiode per pagina en over een actieperiode per afbeelding.
Oh sorry als dat zo overkwam.
Maar het gaat om een afbeelding per pagina. Deze enkele afbeelding is dus wel of niet zichtbaar afhangkelijk van de ingestelde periode voor die pagina.
Kortom elke pagina heeft maar een afbeelding en een periode voor deze afbeelding.
Maar het gaat om een afbeelding per pagina. Deze enkele afbeelding is dus wel of niet zichtbaar afhangkelijk van de ingestelde periode voor die pagina.
Kortom elke pagina heeft maar een afbeelding en een periode voor deze afbeelding.
Gewijzigd op 01/01/1970 01:00:00 door Bram
Tip: Ga je eens verdiepen in de verschillende datatypes die de database heeft te bieden:
PostgreSQL
MySQL
Met deze kennis op zak zul je bovenstaande fout niet meer maken en een hoop andere problemen voorkomen.
Succes!
PostgreSQL
MySQL
Met deze kennis op zak zul je bovenstaande fout niet meer maken en een hoop andere problemen voorkomen.
Succes!
Ik zal eens kijken! :)
Alvast bedankt!
Alvast bedankt!
CURDATE() is altijd in YYYY-MM-DD formaat?
Dus moet ik tijdens de query bijvoorbeeld dit doen:
INSERT INTO tabel SET
zichtbaar_van = '".$_POST['van_jaar']."-".$_POST['van_maand']."-".$_POST['van_dag']."',
zichtbaar_tot = '".$_POST['tot_jaar']."-".$_POST['tot_maand']."-".$_POST['tot_dag']."'
WHERE pageid = '".$_GET['pageid']."'
Hierna kan ik dan de query van Jan Koehoorn gebruiken?
Dus moet ik tijdens de query bijvoorbeeld dit doen:
INSERT INTO tabel SET
zichtbaar_van = '".$_POST['van_jaar']."-".$_POST['van_maand']."-".$_POST['van_dag']."',
zichtbaar_tot = '".$_POST['tot_jaar']."-".$_POST['tot_maand']."-".$_POST['tot_dag']."'
WHERE pageid = '".$_GET['pageid']."'
Hierna kan ik dan de query van Jan Koehoorn gebruiken?
En waarempel het werkt.
Klopt dus inderdaad wat Jan Koehoorn zegt.
Mijn dank is groot!
Klopt dus inderdaad wat Jan Koehoorn zegt.
Mijn dank is groot!
Quote:
Maar natuurlijk! Hoe moet de database anders weten wat een datum is? In Nederland gebruik je dd-mm-yyyy, dd/mm/yyyy en dd-mm-yy zijn ook populair, maar in bv. de VS gebruikt men toch echt mm/dd/yyyy of mm/dd/yy. Dat lijkt allemaal op een datum! 11/04/2007, 11 april of 4 november?CURDATE() is altijd in YYYY-MM-DD formaat?
yyyy-mm-dd is een ISO-formaat, dat maakt het wel zo duidelijk.
In MySQL kun je DATE_FORMAT() gebruiken om de datum in het formaat op te maken dat jij op dat moment nodig hebt. Met een iets uitgebreidere query kun je zelfs nog veel meer:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT
CONCAT(
ELT(DAYOFWEEK(datum),
'zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'
),
' ',
DAYOFMONTH(datum),
' ',
ELT(MONTH(datum),
'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'
),
' ',
YEAR(datum)
) AS newDate
FROM
tabelnaam
CONCAT(
ELT(DAYOFWEEK(datum),
'zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'
),
' ',
DAYOFMONTH(datum),
' ',
ELT(MONTH(datum),
'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'
),
' ',
YEAR(datum)
) AS newDate
FROM
tabelnaam
Quote:
donderdag 11 april 2007




