Signaler

Requete OR et AND [Résolu]

Posez votre question fredodo13127 15Messages postés samedi 30 mai 2015Date d'inscription 23 avril 2017 Dernière intervention - Dernière réponse le 23 avril 2017 à 11:14 par fredodo13127
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 !

Utile
+0
plus moins
Bonjour,

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

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

fredodo13127 15Messages 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" !
Répondre
jordane45 18417Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 15 octobre 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 )
Répondre
fredodo13127 15Messages 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
Répondre
jordane45 18417Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 15 octobre 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 )
Répondre
Donnez votre avis
Utile
+0
plus moins
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 15Messages 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
Répondre
le père. 5971Messages postés mardi 15 mai 2012Date d'inscription 15 octobre 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'
.
Répondre
fredodo13127 15Messages 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 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !