Door
Dave Decoster
op 01-02-2015 15:01
gewijzigd op 01-02-2015 15:02
1.222 views
Ik ben onlangs begonnen met PHP en ondanks ik veel heb gelezen heb ik een probleem met het omzetten van een datum naar nl.
De datum in Mysql is yyyy-mm-dd, nu zou ik die in de output als dd-mm-yyyy willen zien.
Als ik '%d-%m-%Y' gebruikt dan geeft hij de datum alsnog als yyyy-mm-dd.
$query=mysql_db_query("$db","select * ,DATE_FORMAT(datum, '%d-%m-%Y') As Start;
Als ik "%d-%m-%Y" gebruik dan geeft hij een error "Parse error: syntax error, unexpected '%' in /customers/5/0/1/tuinperikelen.be/httpd.www/test.php on line 11"
$query=mysql_db_query("$db","select * ,DATE_FORMAT(datum, "%d-%m-%Y") As Start;
er zijn een aantal mogelijkheden maar de meest moderne binnen PHP is wel de DateTime class.
<?php
// lezen uit de database
$datum = new DateTime($row['datum']);
echo $datum->format('d-m-Y H:i:s');
//schrijven naar database bij een datetime field
$datum = new DateTime('12-02-2015 16:00:00');
$query = "UPDATE tablename SET datum=" . $datum->format('Y-m-d H:i:s');
?>
Het volgende kan ook binnen SQL:
SELECT *, DATE_FORMAT(datum,'%m-%d-%Y') AS start FROM tablename
[size=xsmall]Toevoeging op 01/02/2015 15:18:22:[/size]
Verder zijn de mysql_ functies verouderd en gaan in de nabije toekomst uit PHP verdwijnen. Ik zou eens naar PDO kijken
en dan zou je kunnen beginnen bij de constructor om de connectie op gang te brengen:
<?php
/* Connect to an ODBC database using driver invocation */
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
Het oorspronkelijke probleem is het gebruik van quotes in je query, je probeert binnen een string met dubbele quotes een tekstpassage te quoten met weer... dubbele quotes.
Zet het datumpatroon tussen enkele quotes en omvat je query zelf met dubbele quotes...
... of nog beter, formatteer je datum niet als je deze ophaalt uit je database.
Als je op een gegeven moment besluit dat je datum er anders uit moet zien wil je toch geen queries gaan aanpassen? Ik zou dit regelen in de "presentatie-laag", (net) voordat je e.e.a. afdrukt op je scherm. Ik zou de formattering van je datums in PHP zelf regelen.
... of nog beter, formatteer je datum niet als je deze ophaalt uit je database.
Als je op een gegeven moment besluit dat je datum er anders uit moet zien wil je toch geen queries gaan aanpassen? Ik zou dit regelen in de "presentatie-laag", (net) voordat je e.e.a. afdrukt op je scherm. Ik zou de formattering van je datums in PHP zelf regelen.
Dat is dus wat ik doe met de PHP DateTime class. Je kunt binnen PHP nog alle kanten uit en bijvoorbeeld ook nog rekenen met de datum.
Daar is ook iets misgegaan.
Los van dat de mysql-functies verouderd zijn, is deze functie dat al sinds 5.3.0 (of eigenlijk nog veel eerder, sinds de introductie van mysql_query() in php 4
Je hebt kennelijk een heel oude tutorial te pakken.
PHP verandert nogal in de loop der tijd. Zorg dat je geen tutorials van meerdere jaren oud zomaar vertrouwd als zijnde actueel...