Requete OR et AND [Résolu]

fredodo13127 15 Messages postés samedi 30 mai 2015Date d'inscription 23 avril 2017 Dernière intervention - 21 avril 2017 à 11:07 - Dernière réponse : fredodo13127 15 Messages postés samedi 30 mai 2015Date d'inscription 23 avril 2017 Dernière intervention
- 23 avril 2017 à 11:14
Bonjour,

J'ai un petit problème avec ma requete sql, si quulqu'un peux m'aider...

Je chercher à selectionner dans le champs type, tous les intitulés ou il y a marqué gite ou hote.

$sql = "SELECT * FROM etablissement where (type LIKE 'gite' OR type LIKE 'hote') AND ville = '$decode' AND visible='1'";

Merci à tous !

Afficher la suite 

9 réponses

Répondre au sujet
jordane45 19246 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 14 décembre 2017 Dernière intervention - 21 avril 2017 à 11:18
0
Utile
4
Bonjour,

Si tu veux " contient" ... il faut utiliser des %

(`type` LIKE '%gite%' OR `type` LIKE '%hote%') 

fredodo13127 15 Messages postés samedi 30 mai 2015Date d'inscription 23 avril 2017 Dernière intervention - 21 avril 2017 à 11:27
Salut Jordan,

Merci pour ton temps.

Ca passe pas il me prend que les "gite" !
jordane45 19246 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 14 décembre 2017 Dernière intervention > fredodo13127 15 Messages postés samedi 30 mai 2015Date d'inscription 23 avril 2017 Dernière intervention - 21 avril 2017 à 11:39
Montre nous ta requête modifiée et si possible un dump de ta table (structure + quelques données )
fredodo13127 15 Messages postés samedi 30 mai 2015Date d'inscription 23 avril 2017 Dernière intervention - 21 avril 2017 à 11:51
$sql = "SELECT * FROM etablissement WHERE (`type` LIKE '%gite%' OR `type` LIKE '%hote%') AND ville = '$decode' AND visible='1'";


Structure :
2 type varchar(20) utf8_general_ci

et dans le champs type on trouve 3 choix possible : gite / camping / hote

En faites, seul camping n'est pas à prendre
jordane45 19246 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 14 décembre 2017 Dernière intervention > fredodo13127 15 Messages postés samedi 30 mai 2015Date d'inscription 23 avril 2017 Dernière intervention - 21 avril 2017 à 12:01
Si les champs ont comme valeur (exactement..) : gite ou camping ou hote...
le like n'est pas nécéssaire ..
A la place .. utilise un =

SELECT * 
FROM etablissement 
WHERE visible = '1
  AND (`type` = 'gite' OR `type` ='hote')'
  AND ville = '$decode' 


par contre .. quand je parle de structure + données ... c'est via un DUMP (un export au format SQL qui monrte le SHOW CREATE et le INSERT INTO avec quelques données de ta table )
Commenter la réponse de jordane45
le père. 5988 Messages postés mardi 15 mai 2012Date d'inscription 14 décembre 2017 Dernière intervention - 22 avril 2017 à 00:01
0
Utile
3
Bonjour

Si ça prend les 'gite', ça prend aussi les 'hote' avec cette requête.
Si ça n'en trouve pas, c'est qu'il n'y a aucune donnée avec 'hote' qui satisfasse les deux autres critères.
Ce ne serait pas 'hôtel' au lieu de 'hote' par hasard ?
fredodo13127 15 Messages postés samedi 30 mai 2015Date d'inscription 23 avril 2017 Dernière intervention - 23 avril 2017 à 08:38
Bonjour,

Tjrs pas !

@lepere oui je suis sur que c'est bien hote et pas hotel !


<?php
SELECT * FROM etablissement WHERE visible = '1 AND (`type` = 'gite' OR `type` ='hote')' AND ville = '$decode' ;
if($result = mysqli_query($link, $sql)){
if(mysqli_num_rows($result) > 0){
while($row = mysqli_fetch_array($result)){
?>


J'ai un erreur par contre maintenant :
Parse error: syntax error, unexpected 'etablissement' (T_STRING) in /homepages/8/d246321979/htdocs/mada/gite.php on line 2

Bon dimanche à tous
le père. 5988 Messages postés mardi 15 mai 2012Date d'inscription 14 décembre 2017 Dernière intervention > fredodo13127 15 Messages postés samedi 30 mai 2015Date d'inscription 23 avril 2017 Dernière intervention - 23 avril 2017 à 10:13
Évidemment, tu mets la requête SQL directement dans le code PHP. Il faut la mettre dans une chaîne de caractères, comme tu le faisais avant :
$sql="ta requête";
.
Par ailleurs, je maintiens ce que j'ai dit : si tu n'obtiens pas de résultats avec hote, ce n'est pas la requête qui marche mal, c'est qu'il n'y a pas de données qui y répondent. Peux-tu faire un
echo $sql;
d'une requête avec hote qui ne donne pas de résultats, et nous montrer une ligne de ta table qui devrait sortir ?

Remarque supplémentaire : ça ne sert à rien d'essayer de mélanger l'ordre des conditions réunies par des AND. Sauf à te faire faire des bêtises, comme oublier le $sql=, ou l'apostrophe après le 1 dans
visible='1'
.
fredodo13127 15 Messages postés samedi 30 mai 2015Date d'inscription 23 avril 2017 Dernière intervention - 23 avril 2017 à 11:14
En faites je crois que je m'étais totalement trompé et la requete fonctonnait bien !!!

désolé pr le temps perdu et bon dimanche encore

Le cote est bien :


$sql = "SELECT * FROM etablissement WHERE (type = 'hote' OR type = 'gite') AND ville = '$decode' AND visible = '1'";



MERCI A TOUS !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Commenter la réponse de le père.