datum omdraaien tbv opslaan in database
Ik haal een datum uit een tekstveld die volgens hollandse notatie is ingevuld: dd-mm-yyyy
Nu wil ik deze opslaan in de database, maar die slaat alleen in het formaat yyyy-mm-dd op....
Hoe maak ik nou die conversie?
(Voorwaarde van die hollandse notatie in het tekstveld is vereist...)
Code (php)
niet getest
edit: Echo toegevoegt en hij doet t.
Gewijzigd op 01/01/1970 01:00:00 door Michael -
Code (php)
Met controle op een bestaande datum...
Het werkt! Thanks...
Gewijzigd op 01/01/1970 01:00:00 door Eric
Ik denk dat je de plank volledig misslaat! In de eerste plaats is het de bedoeling om een opmaak dd-mm-yyyy om te zetten naar yyyy-mm-dd en in de tweede plaats kun je de database de datum laten opmaken wanneer je deze uit de database haalt. Ten derde zul je functie date() nooit en te nimmer nodig hebben om een datum op te maken die uit de database komt. Een datum sla je namelijk op als een DATE of DATETIME en de functie date() vereist een (waardeloze) unixtimestamp. Dat gaat dus niet lukken. Gebruik de MySQL-functie DATE_FORMAT() of ga met een fraaie CASE aan de slag. Er zijn vele mogelijkheden en ze zijn allemaal beter dan een oplossing met de php-functie date().
Code (php)
1
2
3
2
3
<?
$datum = preg_replace('/([0-9]{1,2})\-([0-9]{1,2})\-([0-9]{4})/', '\\3-\\2-\\1', $datum);
?>
$datum = preg_replace('/([0-9]{1,2})\-([0-9]{1,2})\-([0-9]{4})/', '\\3-\\2-\\1', $datum);
?>
/edit
Dat 'ingewikkeld' waar ik het over heb moet je wel relativeren, voordat ik dat weer naar m'n hoofd krijg ;)
Gewijzigd op 01/01/1970 01:00:00 door PHP erik
In combinatie met de checkdate() lijkt mij een explode() handiger. Of het sneller is, geen idee, nooit getest.
Ik vind een dropdown handiger en mooier. Anderzijds een dynamic om bij april 30 dagen te krijgen ipv 31, bijvoorbeeld.
Of bedoelt hij met "tekstveld" een input in HTML? Dan moet TS Kalles post hierboven even lezen.
En ik roep het nogmaals, je blijft de functie checkdate() nodig hebben om te checken of de datum wel correct is. Waardes in een dropdownlist zijn door de gebruiker namelijk eenvoudig aan te passen en dus nooit te vertrouwen.
In diat geval kun je hem uit en in lezen onder elk gewenst formaat
enzovoort,
Twan:
De volgende functies kun je dan niet/nauwelijks meer gebruiken: http://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.htmlEen timestamp is zo'n beetje het meest rottige formaat die er te krijgen is. Er is geen hond geinteresseerd in het aantal seconden dat sinds 1-1-1970 is verstreken.
En waarom zou je dit gebruiken wanneer je DATE en DATETIME tot je beschikking hebt? Dat zijn ISO-formaten, internationale standaarden! Daar hebben een paar slimmeriken toch echt wel over nagedacht...
Het gebruik van een timestamp betekent ook dat je de datum- en tijdfuncties van de database zelf opnieuw kunt gaan schrijven en testen. Verder gaat dit performance-problemen opleveren omdat deze zelfgeschreven functies vele, vele malen langzamer zijn dan de kant-en-klare databasefuncties.
Kortom, vergeet die timestamp en gebruik DATE of DATETIME.