Oui bien sûr tu remplaces tes variables par des dates de ton choix. Inutile donc de t'embêter avec les concaténations.
Version imprimable
Oui bien sûr tu remplaces tes variables par des dates de ton choix. Inutile donc de t'embêter avec les concaténations.
J'ai donc fait cette requête avec les dates d'une réservation déjà faite :
-------------------
--------------------------Code:$requete = "SELECT * FROM RESERVATION WHERE " . 2008-06-02 . " < DateResDeb AND " . 2008-06-16 . " > DateResDeb OR " . 2008-06-02 . " < DateResDeb AND " . 2008-06-16 . " > DateResFin OR " . 2008-06-02 . " > DateResDeb AND " . 2008-06-16 . " < DateResFin OR " . 2008-06-02 . " < DateResDeb AND " . 2008-06-16 . " > DateResFin "
Met ce message apparaît quand je l'exécute :
--------------------------
Erreur
requête SQL:
$requete = "SELECT * FROM RESERVATION WHERE ".2008 -06 -02. " < DateResDeb AND ".2008 -06 -16. " > DateResDeb OR ".2008 -06 -02. " < DateResDeb AND ".2008 -06 -16. " > DateResFin OR ".2008 -06 -02. " > DateResDeb AND ".2008 -06 -16. " < DateResFin OR ".2008 -06 -02. " < DateResDeb AND ".2008 -06 -16. " > DateResFin "
MySQL a répondu:
#1064 - Erreur de syntaxe pr�s de '$requete = "SELECT * FROM RESERVATION WHERE " . 2008-06-02 . " <' � la ligne 1
Oui c'est normal il faut pas que tu concatènes puisque les dates sont des chaînes de caractères. Essaie ça:
Code:
1
2 SELECT * FROM RESERVATION WHERE '2008-06-02' < DateResDeb AND '2008-06-16' > DateResDeb OR '2008-06-02' < DateResDeb AND 2008-06-16 > DateResFin OR '2008-06-02' > DateResDeb AND '2008-06-16' < DateResFin OR '2008-06-02' < DateResDeb AND 2008-06-16 > DateResFin
Avec cette requête ça fonctionne bien dans phpmyadmin ;)
Il y a des erreurs dans les exemples de concaténations.
Dans une requête une chaine de caractères qui correspond à une variable doit être entourée de quote (') d'ailleurs c'est bien ce que tu fais quand tu écrisDonc ton code pour écrire ta requête pourrait ressembler à ceciCode:SELECT * FROM RESERVATION WHERE '2008-06-02' < DateResDeb
Ensuite pour vérifier que ta requête est bien formée tu peux la faire afficher pour débuggage (d'où l'intérêt de séparer l'écriture d'une requête de son exécution) :Code:
1
2
3
4
5 $requete = "SELECT * FROM RESERVATION WHERE '".$DateDebut."' < DateResDeb AND '".$DateFin."' > DateResDeb OR '".$DateDebut."' < DateResDeb AND '".$DateFin."' >DateResfin OR '".$DateDebut."' > DateResDeb AND '".$Datefin."' < DateResfin OR '".$DateDebut."' < DateResDeb AND '".$Datefin."' > DateResfin";
C'est le résultat de "echo $requete" que tu peux éventuellement tester dans phpmyadmin car bien entendu phpmyadmin n'interprète pas des variables php mais uniquement des chaines de caractères.Code:echo $requete;
Bonjour ABCIWEB et merci pour ton aide,
J'ai testé le résultat de la requête sous phpmyadmin et ça ne me trouve pas les lignes de réservation demandées.
Kerly.
Tu n'as aucune erreur quand tu l'as testé? Si tu n'en as pas c'est dans la requête elle-même que ça foire.
Non aucune erreur ne s'affiche, si ça vient de la requête je verrai ça demain avec mes profs, merci beaucoup ;)
Effectivement l'erreur venait de la requête, j'avais oublié de mettre le signe "=" après les signes inférieur ou supérieur pour que ça puisse aussi prendre en compte les dates qui tombent exactement sur la même période.
Merci à vous pour l'aide que vous avez apporté :)
Kerly.