[PHP] Comparer des Heures

Alak Messages postés 35 Statut Membre -  
Alain_42 Messages postés 5413 Statut Membre -
Bonjour,

Je vous explique mon "problème", alors j'ai un formulaire ou un utilisateur réserve du matériel pour une date et une heur qu'il choisis toute ces données sont stocké dans une bdd, j'ai un petit crontab qui éxecute un .php toute les 30 minute,

j'aimerai que le script php vérifier la date et l'heure qu'il est, qu'il les compare avec les donnée des réservation et qu'il envois un mail a toute les personne qui ont réservé du matos dans les 10 minute qui suive la vérification.
Donc si la vérification est faite a 10H00 le 30/10/2008, qu'un mail soit envoyé a toute les personne ayant réservé du matériel pour le 30/10/2008 entre 10H00 et 10H10.

La tete de ma table est la suivante :

CREATE TABLE reservation (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
non VARCHAR(40),
prenom VARCHAR(40),
email VARCHAR(40),
date_rez DATE,
heur_rez TIME
);

Je pensais donc faire mon .php dans ce style :

$datenow = date("Y-m-d");


$requete = mysql_query ("SELECT * FROM reservation WHERE date_rez = " . $datenow . " AND heur_rez = ????? JE NE SAIS PAS ????);


while($res = mysql_fetch_row($requete))
{
envois de l'e-mail
}


donc le truc que j'arrive pas a faire c'est comparé et selectionné les les réservation faire pour une heure entre H et H+10 minute.


Quelqu'un peu m'aider ?

merci d'avance
A voir également:

3 réponses

Dr Zoidberg Messages postés 547 Statut Membre 100
 
Salut,

Il serait beaucoup plus simple de ne pas séparer les dates et les heures.
Si tu stock dans ta BD la date-heure de réservation en temps que timestamp Unix (int) tu pourras facilement faire les comparaison :
Select * from table where heure_rez between UNIX_TIMESTAMP() and UNIX_TIMESTAMP() +10*60

Mais tu peux aussi aussi utiliser le format timestamp mysql, mais ça sera un peu plus compliqué à gérer au travers de PHP.
0
Alain_42 Messages postés 5413 Statut Membre 894
 
Salmut,

essayes

"SELECT * FROM reservation WHERE date_rez =' CURDATE()'  AND heur_rez < 'CURTIME() - 360'"; 




360 =10 minutes
0
Alak Messages postés 35 Statut Membre
 
Merci pour vos réponses,

J'ai deux question pourquoi 360 = 10 minute ?

et pourquoi on met un moins et pas un plus ?

heur_rez < 'CURTIME() + 360'

heur_rez < a l'heure actuel + 10 minute ?


je pourrais faire un truc genre :

"SELECT * FROM reservation WHERE date_rez =' CURDATE()' AND heur_rez IS BETWEEN 'CURTIME()' AND 'CURTIME() + 360'";


La requête serait correct?
0
Alain_42 Messages postés 5413 Statut Membre 894
 
heu oui 360 ? mon calcul mental a foiré !

c'est plutot 60 x 10 = 600 secondes

et effectivement c'est +


donc ta requette avec BETWEN est :

"SELECT * FROM reservation WHERE date_rez =' CURDATE()' AND heur_rez  BETWEEN 'CURTIME()' AND 'CURTIME() + 600'"; 
0