[PHP] Comparer des Heures

Fermé
Alak Messages postés 35 Date d'inscription dimanche 10 février 2008 Statut Membre Dernière intervention 13 décembre 2008 - 24 nov. 2008 à 15:56
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 24 nov. 2008 à 17:26
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 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
24 nov. 2008 à 16:10
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 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
24 nov. 2008 à 16:10
Salmut,

essayes

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




360 =10 minutes
0
Alak Messages postés 35 Date d'inscription dimanche 10 février 2008 Statut Membre Dernière intervention 13 décembre 2008
24 nov. 2008 à 16:29
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 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
24 nov. 2008 à 17:26
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