Heey allemaal,

Hoe kan ik een user het best een datum in laten vullen, zodat deze uiteindelijk goed in een datetime veld komt te staan?

Groet
Newb
Dat werkt niet Herjan,


AND programma.sluiting < NOW()


programma.sluiting = 24 april
NOW() = 26 april

En toch krijg ik het resultaat ze zien, terwijl ik dat niet wil. Ik wil alleen de programma's te zien krijgen waarvan de sluitingsdatum nog niet geweest is.

Dit is mijn query:


	$query = mysql_query("SELECT kijkcijfers.id,
								 kijkcijfers.kijkcijfer,
								 programma.programma,
								 DATE_FORMAT(programma.sluiting, '%e-%c-%Y %k:%s') as sluitingsdatum
						  FROM kijkcijfers
						  LEFT JOIN
						  	programma
						  ON
						  	kijkcijfers.prog = programma.id
						  WHERE kijkcijfers.lid = ".$_SESSION['ingelogd']."
						  AND programma.sluiting < NOW()");
en checken met is_date() 29-02-2007 bestaat niet, maar 29-02-2008 wel!
<?
$query = mysql_query("
SELECT
kijkcijfers.id,
kijkcijfers.kijkcijfer,
programma.programma,
DATE_FORMAT(programma.sluiting, '%e-%c-%Y %k:%s') as sluitingsdatum
FROM
kijkcijfers
LEFT JOIN
programma
ON
kijkcijfers.prog = programma.id
WHERE
kijkcijfers.lid = ".$_SESSION['ingelogd']."
AND
programma.sluiting > CURDATE()");
?>
Maar dan pakt hij de tijd niet mee
Ik heb zelf ook nog even na zitten denken, en ik dacht: we kunnen gewoon kijken hoeveel seconden er tussen de data zit, en dat moet positief zijn. Ik had zelf dus iets van:


TIME_TO_SEC(TIME_DIFF(programma.sluiting, NOW()))


Maar dat geeft:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(programma.sluiting, NOW()))
Het hangt er van af hoe programma.sluiting er uit ziet. Als het een goed geformatteerde datum is (yyyy-mm-dd) dan kun je deze query gebruiken:

SELECT veld
FROM tabelnaam
WHERE programma.sluiting >= CURDATE()
Het is in de database gewoon een datetime veld, dus ik neem aan dat de datum goed geformatteerd is..

Ik ga het even uitproberen
@PHP Newbie

Je kan er ook in je Dropdown boxes al deels voor zorgen dat alleen data later dan vandaag nog mogelijk zijn. (hiervoor kan je bijv AJAX, of puur JS gebruiken) dat is denk ik de meest vriendelijke manier, waarbij je de mogelijkheid voor een gebruiker om een datum die na vandaag komt in te laten vullen.

Selecteerd die bijvoorbeeld dit jaar, dan moeten de 1e 3 maanden al wegvallen in de maandbox. Selecteerd die deze maand, dan moeten de 1e 27 dagen ook al wegvallen. Je snapt wel waar ik heen wil. Dit is wel de mooiste optie, maar het is ook lastig te realiseren.
Het werkt bijna, alleen als ik een tijd opgeef die vandaag al geweest is (op het moment van schrijven: 12 uur 's middags) dan wordt deze wel weergeven, terwijl die tijd toch al geweest is..

[edit]
@robert,

Het is voor een admin panel, en daarin weet de beheerder wel wanneer de sluitingstijd is. Ik ga dit dus niet inbouwen. Ik zal het wel voorstellen aan meneer.
[/edit]
Ok, ik wist niet dat het om een adminpanel ging :) Ik ben namelijk van mening dat je bezoekers input zoveel mogelijk moet beperken in fouten. -> Maar voor een adminpanel mag je er wel vanuit gaan dat diegene niet zomaar wat doen.

Verder zal je even die functie van Jan, als je die gebruikt aan moeten passen. CURDATE() geeft alleen yyyy-mm-dd terug, als je ook op tijd wil controleren zal je NOW() moeten gebruiken op die plaats.

Reageren