Discussion:
Heure de validation
(trop ancien pour répondre)
Xavier Schreiner
2007-01-20 20:32:03 UTC
Permalink
Bonjour,

J'ai un événement qui fini à une date et une heure donnée. Ex 20:00 le
20/01/07.
Je n'arrive pas a faire en sorte que l'événement ne soit plus affiché à
20:00:01, il reste affiché jusqu'à 23:59:59 le 20/01/07.

ce qui est écrit dans mon fichier :
$result = mysql_query("SELECT *, DATE_FORMAT(date,'%d/%m/%Y à %Hh%i') AS
date FROM evenements WHERE date > CURRENT_DATE AND type =
'".$_GET['pays']."' ORDER BY date ASC LIMIT 1");

Quelqu'un aurai t il la fonction magique ?

Merci d'avance pour les futures heures de sommeil ainsi économisées.


Xavier
Olivier Miakinen
2007-01-20 22:25:47 UTC
Permalink
Bonjour,
Post by Xavier Schreiner
J'ai un événement qui fini à une date et une heure donnée. Ex 20:00 le
20/01/07.
Je n'arrive pas a faire en sorte que l'événement ne soit plus affiché à
20:00:01, il reste affiché jusqu'à 23:59:59 le 20/01/07.
Je suis quasi ignare en SQL, mais est-ce que le problème ne viendrait
pas du nom « date » identique aux deux premiers endroits de la requête ?
Post by Xavier Schreiner
... DATE_FORMAT(date,'%d/%m/%Y à %Hh%i') AS date ... WHERE date ...
^^^^ ^^^^

(Par ailleurs, si la solution existe vraiment en SQL, le groupe consacré
aux sgbd me semble plus approprié. Sinon, s'il faut faire une bidouille
en PHP, bienvenue ici.)
P'tit Marcel
2007-01-21 09:41:49 UTC
Permalink
Post by Xavier Schreiner
J'ai un événement qui fini à une date et une heure donnée. Ex 20:00 le
20/01/07.
Je n'arrive pas a faire en sorte que l'événement ne soit plus affiché à
20:00:01, il reste affiché jusqu'à 23:59:59 le 20/01/07.
$result = mysql_query("SELECT *, DATE_FORMAT(date,'%d/%m/%Y à %Hh%i') AS
date FROM evenements WHERE date > CURRENT_DATE AND type =
'".$_GET['pays']."' ORDER BY date ASC LIMIT 1");
puisque c'est ici le forum dédié au Php, voici une solution en php:

$result = mysql_query("SELECT *, DATE_FORMAT(date,'%d/%m/%Y à %Hh%i') ".
"AS date FROM evenements WHERE date > '" .
date('Y-m-d H:i:s').
"' AND type = '".
mysql_real_escape_string($_GET['pays']).
"' ORDER BY date ASC LIMIT 1")
or die("on n'est pas dans la m...") ;

En effet, pour sélectionner en tenant compte de l'heure, il faut
employer une borne précisant l'heure, ce qui n'est pas le cas de
CURRENT_DATE.

Par ailleurs, pour des raisons de sécurité, il est recommandé d'utiliser
mysql_real_escape_string pour "échapper" les variables externes avant de
les employer dans une requête sql. C'est généralement superflu quand
c'est déjà fait automatiquement par php (c'est à dire quand
get_magic_quotes_gpc() renvoit true). Enfin, il faut toujours prévoir le
cas où l'appel d'une fonction échoue.


a+
--
P'tit Marcel
stats sur les forums modérés http://www.centrale-lyon.org/ng/
ypc
2007-01-21 20:46:42 UTC
Permalink
Post by Xavier Schreiner
Bonjour,
J'ai un événement qui fini à une date et une heure donnée. Ex 20:00 le
20/01/07.
Je n'arrive pas a faire en sorte que l'événement ne soit plus affiché à
20:00:01, il reste affiché jusqu'à 23:59:59 le 20/01/07.
$result = mysql_query("SELECT *, DATE_FORMAT(date,'%d/%m/%Y à %Hh%i') AS
date FROM evenements WHERE date > CURRENT_DATE AND type =
'".$_GET['pays']."' ORDER BY date ASC LIMIT 1");
Quelqu'un aurai t il la fonction magique ?
Merci d'avance pour les futures heures de sommeil ainsi économisées.
Xavier
Tu utilises CURRENT_DATE pour comparer la date, utilise CURRENT_TIME
pour comparer l'heure

Continuer la lecture sur narkive:
Loading...