Page 1 sur 1
Re Probléme de requêtes !!
Posté : 27 juil. 2007, 12:18
par angebleu17
Bonjour,
J'aimerais faire une requête qui recherche des enregistrements suivant un lieu (choisi par l'utilisateur). Mais j'aimerais aussi rechercher les enregistrements suivant la ville ou se situe le lieu. Je récupére la ville correspond au lieu mais pour la requête je ne sais pas comment faire :
Si je fait ça, ça ne marche pas vu que c'est AND :
Code : Tout sélectionner
SELECT DISTINCT(id), nom FROM matable WHERE nom = '$lieu' AND nom = '$ville'");
Il faudrait faire 2 requêtes je pense mais je ne vois pas trop comment...Dans le champ nom de matable, il y a les lieux et les villes pour chaque id.
Par ex id = 1 nom = paris
id = 2 nom = tour effeil
id = 3 nom = Marseille
..etc
Donc si je recherche comme lieu la tour effeil, j'aimerais afficher tous les id ou nom = tour effeil et nom = Paris.
Posté : 27 juil. 2007, 13:09
par Jules Petibidon
hello,
"nom" peut pas être à la fois "paris" et "tour eiffel", il peut par contre être l'un OU l'autre

Posté : 27 juil. 2007, 13:14
par angebleu17
On peut mettre un OR dans une requête ??
Posté : 27 juil. 2007, 13:22
par Jules Petibidon
bah essaye, ca explosera pas

Posté : 27 juil. 2007, 14:30
par Hubert Roksor
On peut mettre un OR dans une requête ??
http://dev.mysql.com/doc/
Posté : 27 juil. 2007, 15:26
par angebleu17
désolée je ne savais pas.. j'y avais pensé en +..
Sinon j'ai un autre petit probléme (enfin cette fois-ci un vrai

)
Je veaux récupérer les enregistrement où la date d'aujourd'hui est entre la date de debut et la date de fin, voici ma requete :
Code : Tout sélectionner
$req = mysql_query("SELECT * FROM matable WHERE Now() BETWEEN date_debut AND date_fin AND date_fin = '$date' ORDER BY date_fin") or die (mysql_error());
Le probléme c'est lorsque date est égal à la date d'aujourd'hui, il ne me retourne pas les enregistrements. Pourtant j'ai vu que le between prend supérieur égal à date début et inférieur égal a date fin !!
J'ai une autre requête pareil mais je compare la date de début, quand la date d'aujourd'hui est égal à la date de début ça l'affiche bien mais si la date de fin est égal à la date d'aujourd'hui ça ne l'affiche pas. Donc le between ne fait pas inférieur ou égal a la date fin mais strictement inférieur !!
Et meme en mettant : now() >= $date_debut AND now() <= $date_fin ça ne marche pas non plus !
Comment faire pour prendre en compte les enregistrements ou date fin est égal a aujourd'hui ?
Posté : 27 juil. 2007, 15:52
par Yosh
Tu utilise des données de quelle type? date ou datetime?
Posté : 27 juil. 2007, 16:00
par angebleu17
de type date
Posté : 27 juil. 2007, 16:06
par Yosh
Dans ta requête "WHERE Now() BETWEEN date_debut AND date_fin" ne veux rien dire.
Par contre tu peux essayer avec date_debut>=Now() AND date_fin = '$date'
Posté : 27 juil. 2007, 16:17
par angebleu17
oui mais je veux récupérer les enregistrements ou la date d'aujourd'hui est entredate debut et date fin et que date fin soit égal à date.
En mettant ce que tu as dit ça ne marche pas non +..
Posté : 27 juil. 2007, 16:18
par Yosh
Je fais qq test et je post.
Posté : 27 juil. 2007, 16:19
par angebleu17
ok

Posté : 27 juil. 2007, 16:38
par Yosh
ok après qq test je ne vois pas comment tu peux essayer de comparer now() sur d'autres champs sachant que now() sera interprété dans la requête comme "20070727 16:36:40".
Si jamais tu trouve une solution, je veux bien la connaitre.
Posté : 30 juil. 2007, 09:24
par angebleu17
en faisant ceci ça marche :
<?
$date_now = date("Y-m-d");
$req = mysql_query("SELECT * FROM matable WHERE '$date_now' BETWEEN date_debut AND date_fin AND date_fin = '$date' ORDER BY date_fin") or die (mysql_error());
?>