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;


Hoe kan ik dit oplossen?
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';

try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}

?>

[size=xsmall]Toevoeging op 01/02/2015 15:20:22:[/size]

Op deze site staat een SQL beginnershandleiding waarin PDO ook wordt besproken: http://www.phptuts.nl/view/41/
@Frank character encoding lalala :)

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.
Thomas van den Heuvel op 01/02/2015 15:24:19

... 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.

Ik ben onlangs begonnen met PHP



$query=mysql_db_query


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...

Reageren