Requete OR et AND

Résolu
fredodo13127 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
fredodo13127 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -
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 !

A voir également:

2 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

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

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

0
fredodo13127 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Salut Jordan,

Merci pour ton temps.

Ca passe pas il me prend que les "gite" !
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > fredodo13127 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Montre nous ta requête modifiée et si possible un dump de ta table (structure + quelques données )
0
fredodo13127 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
$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
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > fredodo13127 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
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 )
0
Utilisateur anonyme
 
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 ?
0
fredodo13127 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
Utilisateur anonyme > fredodo13127 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
É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'
.
0
fredodo13127 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
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 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
0