IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

trois requêtes identiques avec différents résultats [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Points : 197
    Points
    197
    Par défaut trois requêtes identiques avec différents résultats
    Bonjour,

    J'ai un p'tit problème dans ma plantation, pk ... oups, j'voulais dire sur mon site ... :p

    Dans le moteur de recherche mis à disposition, je fais une requête sur le nom d'une entreprise qui s'appelerait "l'arbre". En faisant une telle recherche je ne retourne aucune réponse. Voici le code source :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $donnee = mysql_query("SELECT id_entreprises, nom, localite, code_postal FROM entreprises WHERE validation_admin='1' " . $chaine . " ORDER BY cardrank DESC");
     
    //Où $chaine est égal à : AND nom LIKE '%l'arbre%'


    Par contre en écrivant en tout lettre la requête, j'ai retrouve bien l'entreprise dans la table. Voici le code temporaire que j'ai rajouté pour tester cette hypothèse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $donnee = mysql_query("SELECT id_entreprises, nom, localite, code_postal FROM entreprises WHERE validation_admin='1' AND nom LIKE '%l'arbre%' ORDER BY cardrank DESC");
    On pourrait croire dés lors que c'est la concaténation qui a un problème, mais nan ... en effectuant des recherches sur d'autres entreprises, il n'y a aucun problème ... même en recherchant "l arbre", sans guillement cette fois, on trouve l'entreprise.

    De même en effectuant ce troisième code, là aussi ça fonctionne ... j'en perds mon php ... oui, dsl j'connais pas le latin ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $chaine = 'l'arbre';
    $donnee = mysql_query("SELECT id_entreprises, nom, localite, code_postal FROM entreprises WHERE validation_admin='1' AND nom LIKE '%" . $chaine . "%' ORDER BY cardrank DESC");
    En résumé, mon problème est de faire fonctionner le premier code ... seul code des trois qui fonctionne pas et dont j'ai besoin ...

    Je ne comprend pas pourquoi, il me semble que ce sont trois fois le même code ...

    D'avance merci pour vos réponses.



    xenos

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    Bonsoir, c'pas trop mon truc mais essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $donnee = mysql_query("SELECT id_entreprises, nom, localite, code_postal FROM entreprises WHERE validation_admin='1' '" . $chaine . "' ORDER BY cardrank DESC");
    Voila en espèrant que cela fonctionne

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    En fait je pense que tu as tout un tas de probleme dues à tes débuts / fins de chaine de caractères.
    En effet, il vaut mieux utiliser les syntaxes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $chaine="l'arbre";  //marche chaine vaut l'arbre
    $chaine='l'arbre'; // ne devrait pas marcher
    $chaine='l\'arbre'; // marche
    Et dans ton code, on retrouve de tout.
    Donc a ta place je ferai la chose suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $rechercher=$chaine_a_chercher
    $requete="select * from X where nom like '%".$rechercher."%'";
    Pour moi, ton probleme vient donc des échappements de caractères notamment sur les quotes.

  4. #4
    Membre habitué
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Points : 197
    Points
    197
    Par défaut
    Merci de vos réponses Ajite et Raideman.

    J'ai réussi à résoudre le problème. Le problème venait d'ailleurs.

    Lorsque je fesais une recherche sur l'arbre, il devait transcrire en l&#039 ;arbre. Mais il rajoutait un amp; ... de la manière suivante : l'arbre.

    Un simple str_replace('amp;', '', $chaine) permet de résoudre le problème.

    Bonne journée à tous et bon développement !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD19] Requête SELECT avec n résultats aléatoires
    Par EriCstoFF dans le forum WinDev
    Réponses: 4
    Dernier message: 24/07/2014, 09h39
  2. Requête Like avec différent de
    Par Mickael33 dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/12/2013, 16h49
  3. Help requête sql avec 2 résultats?
    Par 2pass dans le forum Langage SQL
    Réponses: 1
    Dernier message: 22/04/2013, 08h31
  4. Envoie de requêtes HTTP avec différentes IP
    Par tupac25 dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 02/05/2011, 09h35
  5. [MySQL] Deux requêtes identiques et résultats différents
    Par iris15 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 16/10/2008, 14h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo