OVH Cloud OVH Cloud

Heure de validation

3 réponses
Avatar
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.

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

3 réponses

Avatar
Olivier Miakinen
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.


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 ?

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

Avatar
P'tit Marcel
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/

Avatar
ypc
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
Tu utilises CURRENT_DATE pour comparer la date, utilise CURRENT_TIME

pour comparer l'heure