Problème requête. Cause : date.

Résolu/Fermé
tgos93 Messages postés 83 Date d'inscription vendredi 28 décembre 2012 Statut Membre Dernière intervention 9 juillet 2014 - 14 févr. 2013 à 16:50
tgos93 Messages postés 83 Date d'inscription vendredi 28 décembre 2012 Statut Membre Dernière intervention 9 juillet 2014 - 17 févr. 2013 à 12:26
Bonjour,

J'ai un petit problème au niveau d'une requête SQL, si quelqu'un aurait l'amabilité de me corriger, tout au moins m'expliquer pourquoi ce serait sympa. Ma requête ne sélectionne en effet aucune ligne, bien qu'elle soit aux normes alors que j'ai un résultat qui correspond à ce que je recherche en l'occurrence l'évènement 1 (voir ci-dessous) Je pense que le problème se situe au niveau de la date.
Merci !

REQUETE :

$date = date("d-m-Y");
$heure = date("H:i");

"select * from pronostic where heure_debut<=".$heure." and heure_fin>=".$heure." and date_debut<=".$date."and date_fin>=".$date;

Sachant que ma table (pronostic) comporte les champs :

id_prono
domicile
exterieur
rencontre
date_debut
date_fin
heure_debut
heure_fin

et lignes suivantes :

1
/
/
Evenement 1
2013-02-13
2013-02-14
15:30:00
20:50:00

2
/
/
Evenement 2
2013-02-15
2013-02-17
23:00:00
13:55:00

Merci !

1 réponse

ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
14 févr. 2013 à 16:56
Bonjour,

ce que tu cherches à faire ne peut pas fonctionner, tes variables $date et $heure sont des chaines de caractères, et dans ta requête, tu essayes de comparer si cette chaîne est supérieure ou inférieure à ce que tu as en base, mais tu ne peux pas faire ça avec une chaîne de caractère.
C'est comme si tu voulais faire

"truc" <= "cheval"

ça n'a aucun sens

il faudrait que tu utilises des timestamp, d'ailleurs ça simplifierait ta structure de base de données.
Tu n'aurais plus besoin de garder "date" et "heure", tout serait contenu dans ton timestamp, ton traitement serait donc plus simple.
0
tgos93 Messages postés 83 Date d'inscription vendredi 28 décembre 2012 Statut Membre Dernière intervention 9 juillet 2014
14 févr. 2013 à 17:03
D'accord, je comprends le problème ! Me reste à le résoudre ... encore merci !
Cependant j'ai fais 2 champs différents car quand j'ai à remplir ma base depuis la partie admin du site, il n'existe pas de <input type="datetime"> mais des <input type="date"> et <input type="time"> donc pour le traitement je ne savais pas comment allier les deux donc j'ai fais comme ceci ;)
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
14 févr. 2013 à 17:09
il faut que tu trouves le moyen de "combiner" tes deux champs, ce sont des champs textes simples ?
0
tgos93 Messages postés 83 Date d'inscription vendredi 28 décembre 2012 Statut Membre Dernière intervention 9 juillet 2014
14 févr. 2013 à 17:15
champs de type date et time
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
14 févr. 2013 à 17:30
d'accord, ce sont des types html5 visiblement, c'est la 1ère fois que je les croise.
Tu sais que firefox ne les reconnait pas ?

en tout cas ça ne va pas te faciliter la tâche pour la manipulation...
En tout cas si tu veux faire des comparaisons de dates, tu n'auras pas le choix, il te faut du timestamp
0
tgos93 Messages postés 83 Date d'inscription vendredi 28 décembre 2012 Statut Membre Dernière intervention 9 juillet 2014
14 févr. 2013 à 17:34
Oulah je m'aventure dans quelque chose que je ne maîtrise pas du tout, "les dates".
Je prends en considération tes conseils. Je vais essayer jusqu'à ce que ça marche quitte à y passez la soirée ^^.
Je te tiens au courant ;)
Merci beaucoup.
0