Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

$requete = 'SELECT * FROM reservation_ponctuel WHERE status="0" AND datecollecte="'.$dateText.'" OR datelivraison="'.$dateText.'" ';

Ce que je veux

Tout les champs status=0 qui correspondent à date collecte ou à date livraison

$requete = 'SELECT * FROM reservation_ponctuel WHERE (status="0" AND datecollecte="'.$dateText.'" ) OR (status="0" AND datelivraison="'.$dateText.'")' ;

Ce que j'obtiens

Le trie ne fonctionne pas !

9 réponses


JM Mulet
Réponse acceptée

si status est un int et
datecollecte et date livraison sont des varchar dans l'idéale la requete devrait être

SELECT * FROM reservation_ponctuel WHERE status=0 AND ((datecollecte='vendredi 12 mai') OR (datelivraison='vendredi 12 mai'));

tu peux tester cette requete sur ta base (via phpmyadmin ou un requeteur)?

As tu essayé:

$requete = 'SELECT * FROM reservation_ponctuel WHERE status="0" AND (datecollecte="'.$dateText.'" OR datelivraison="'.$dateText.'")' ;

Par contre, tu aurais dû mettre ton post dans la cotégorie SQL, et non PHP. TU aurais sans doute pu avoir une réponse plus rapidement.

pulsat
Auteur

Non, cela ne fonctionne pas , en faite; la colorométrie du code m'indique que le OR n'est pas conforme ( je dev sur Sublime Text)
Je ne comprend pas d'ou vient le probléme ! je post sur SQL ( ou cas ou )

Et si tu limites ton select à une seule clause

$requete = 'SELECT * FROM reservation_ponctuel WHERE datecollecte='.$dateText' ;

ça donne quoi?

pulsat
Auteur

Toute la requete fonctionne :
WHERE status = 0 AND datecollecte = "$dateText"
WHERE status = 0 AND datelivraison = "$dateText"

Dés que j'inclus "OR", rien ne fonctionne ou plutot aucun trie ne s'opére dans le requette; que les dates est le status 0, 1 9, 12.
Mais Cela récupére bien les lignes correspondant à $dateText.

pulsat
Auteur

Je double le post pour expliquer mieux.
L'option imuable de la requete c'est le status="0" ( 0= en cours; 1 = fini)
Dans toute les lignes ou ce trouve status=0, il faut récupérer l'ensemble de la ligne si la colonne datelivraison ou datecollecte correspond à $dateText

As tu essayé de jouer directement par PhpMyAdmon ou client lourd ta requete avec le OR ? voir si c est un prob PHP ou de requete.
Car perso moi je vois pas de défaut... (apres j ai peut ere pas les yeuw en face des trous)

faudrait voir la tete de la requete finale

echo $requete;

et publies la ici

pulsat
Auteur
SELECT * FROM reservation_ponctuel WHERE status="0" AND (datecollecte="vendredi 12 mai" OR datelivraison="vendredi 12 mai")

Apparement cela fonctionne maintenant, filezilla à du échouer lors du dernier UPDATE.

Je remercie la communauté Graphikart !