Ik heb een datepicker class gedownload met de volgende datumnotatie
yyyy-m-d
In de database staat de datum opgeslagen als yyyy-mm-dd.
Voorbeeld:
<?
$datum = '2007-7-1'
SELECT *
FROM `backloading`
WHERE `aankomst` LIKE 'Amsterdam'
AND vertrekdatum LIKE '$datum'
?>
Notatie YYYY-M-D wordt zelfs met like niet gevonden, notatie yyyy-mm-dd werkt prima. Hoe kan ik een variabele $datum omzetten naar het yyyy-mm-dd formaat?
7 en 07 zijn niet hetzelfde, een datum wordt als string behandeld. Dit geldt uiteraard ook voor 1 en 01.
De berekening 2007 minus 7 minus 1, zal 1999 opleveren. Er zullen weinig datums zijn die daarmee overeenkomen. Gebruik quotes om een datum-string aan te maken: '2007-07-01'
Verder snap ik niet wat je met LIKE wilt bereiken, het lijkt erop dat je de query langzamer wilt maken... Gebruik = voor een complete vergelijking, wanneer je LIKE zonder % gebruikt, ben je fout bezig.
Backticks ` mag je weggooien, die heb je helemaal nooit nodig in een query, ook niet als je geserveerde en/of onmogelijke namen wilt gebruiken voor tabellen en/of kolommen. Dan kies je betere namen.
Ik selecteer de datum m.b.v. een datepicker, die als output yyyy-m-d geeft, terwijl de database deze notatie hanteert yyyy-dd-mm. Sorry, ik was de quotes in de (voorbeeld) variabele vergeten.
Mijn vraag is dus: Hoe kan ik yyyy-m-d omzetten naar yyyy-dd-mm.
Like heb ik gebruikt omdat "= " niet werkt als er een nul onbreekt voor de desbetreffende dag of maand. Maar ook like bood hiertoe geen oplossing.
browser kent de database niet eens, heeft daar helemaal niks mee te maken.
Oplossing: zorg dat je met een stukje php-code een geldige datum aanmaakt, met voorloopnullen. LIKE is een lapmiddel, gaat problemen opleveren.
En nog wat, met jouw datumpicker kan ik prima een ongeldige datum selecteren, 31 februari 200045 is prima te selecteren! Denk jij dat het zin heeft om daar een query mee uit te gaan voeren? checkdate() is je beste vriend.
Ik wil de .$calendar->Value(); datum omzetten naar een notatie met voorloopnullen.
<?
include "kalender/calendar.php";
$calendar = new Calendar("example1");
$calendar->currentDateStyle = "currentDate";
echo $calendar->Output();
echo 'Geselecteerde datum: '.$calendar->Value();
?>
Nee, er is slechts 1 discussie: Hoe jij de ontvangen datum (ongeacht het formaat) omzet naar een geldig formaat voor de database. Het maakt geen ruk uit hoe de datum via de browser wordt aangeleverd (al is het Chinees), jij zult er altijd voor moeten zorgen dat je voor 200% zeker weet dat jij een query aanmaakt met het datumformaat yyyy-mm-dd.
Het hele kalender-gebeuren is dus totaal offtopic.
En mijn vraag is dus: Hoe kan ik (serverside) de output van de kalender (volgens jou ongeacht het formaat) naar een geldig formaat voor de database omzetten, zodat de query 200% zeker een yyyy-mm-dd datumformaat bevat? Eventueel met checkddate wat je noemt of iets dergelijks..
- explode de input die je van de browser ontvangt
- checkdate()
- met sprintf kun je voorloopnullen bijplaatsen
- zet de boel weer in de juiste volgorde: yyyy-mm-dd