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 :

Requête avec LIKE '%$variable%' [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Par défaut Requête avec LIKE '%$variable%'
    Bonjour,

    Je fais face à un problème de requête. Le but étant de récupérer l'ID d'un auteur à partir de son nom (nom_auteur) et prénom (prenom_auteur), récupérés à partir d'une liste déroulante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $nom_auteur = $_POST["nom_auteur"] ;
     
    $req2 = mysql_query ("SELECT id_auteur FROM auteurs
    WHERE nom_auteur LIKE '%".$nom_auteur."%'
    AND prenom_auteur LIKE '%".$nom_auteur."%'");
     
    $aut=mysql_fetch_array($req2);
    $id_aut = $aut['id_auteur'];
    echo $nom_auteur; m'affiche correctement le nom et prénom.
    nom_auteur LIKE '%Dupont%' m'affiche aussi l'ID de l'auteur voulu, mais lorsque je tente d'utiliser ma variable $nom_auteur dans le LIKE, rien ne fonctionne plus !

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    active le trace_mode,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ini_set('mysql.trace_mode', true);

  3. #3
    Membre confirmé Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Par défaut
    j'ai rajouté "ini_set('mysql.trace_mode', true);" avant ma requête, mais aucune erreur ne s'affiche, le echo n'affiche toujours rien.

  4. #4
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 494
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 494
    Par défaut
    Salut,
    t'as essaye d'afficher ta requete SQL generee puis de la copier/coller dans phpmyadmin ?

    ps : le nom et le prenom doivent etre les memes ?!?
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  5. #5
    Membre confirmé Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Par défaut
    Quand je teste la requête dans phpmyadmin avec des valeurs textuelles (pas de variable $nom_auteur), elle fonctionne correctement.

    Le problème est qu'il peut y avoir plusieurs auteurs portant le même nom de famille, donc ma liste déroulante intègre également le prénom.
    Quand je récupère la valeur sélectionnée, elle est du type "nom prénom" et je ne peux donc que passer par un LIKE pour tester le nom et le prénom, il me semble.

  6. #6
    Membre confirmé Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Par défaut
    Quoi qu'en y réfléchissant bien, n'y a-t-il pas un moyen de passer l'ID de l'auteur en champ caché dans ma liste déroulante et de récupérer sa valeur lors du POST ?

  7. #7
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 494
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 494
    Par défaut
    Citation Envoyé par razorlok Voir le message
    Quoi qu'en y réfléchissant bien, n'y a-t-il pas un moyen de passer l'ID de l'auteur en champ caché dans ma liste déroulante et de récupérer sa valeur lors du POST ?
    si, mais ca depend du contexte...
    mais tu n'as visiblement pas suivis mon conseil : afficher la requete SQL generee et non pas "en mettant des valeures a la main"
    fais un
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo "SELECT id_auteur FROM auteurs
    WHERE nom_auteur LIKE '%".$nom_auteur."%'
    AND prenom_auteur LIKE '%".$nom_auteur."%'";
    et copie/colle la requete affiche a l'ecran
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  8. #8
    Membre confirmé Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Par défaut
    quand je fais un echo sur la requête, ça me donne :

    SELECT id_auteur FROM auteurs WHERE nom_auteur LIKE '%Dupont Jean%' AND prenom_auteur LIKE '%Dupont Jean%'
    La variable $nom_auteur est bien récupérée, mais le résultat du LIKE apparemment pas.

  9. #9
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 494
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 494
    Par défaut
    phpmyadmin t'affiche une erreur ? ou la requete ne retourne juste rien ?
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  10. #10
    Membre confirmé Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Par défaut
    Je viens de tester la requête sous phpmyadmin avec les variables $nom_auteur mais elle ne m'affiche aucune erreur, seulement pas de résultats (puisque j'utilise des variables).

    Je pense qu'il manque une subtilité dans le LIKE pour récupérer le nom_auteur et le prenom_auteur à partir du résultat du POST sur ma liste déroulante .

    Elle est générée ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<option>".$nom_auteur."&nbsp;".$prenom_auteur."</option>\n";
    Ma variable récupère donc le NOM (espace) PRENOM (mais lors du POST, je ne vois pas comment les séparer).

  11. #11
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 494
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 494
    Par défaut
    avec explode()
    tu devrais pouvoir faire un truc genre :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $nom_auteur=$_POST["nom_auteur"];
    $nom_auteur = explode(" ", $nom_auteur);
    $nom = $nom_auteur[0];
    $prenom = $nom_auteur[1];
    ps : code ecris a la volee... (pas teste)
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  12. #12
    Membre confirmé Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Par défaut
    Ouf, merci pour la fonction explode() ! Je l'avais complètement oubliée depuis le temps...
    J'ai réussi à séparer le nom et le prénom et l'ID est bien renvoyée par la requête.
    En fait, l'explode ne fonctionnait pas au début à cause du &nbsp; entre nom et prénom dans la liste déroulante...

    Merci pour le coup de main !

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

Discussions similaires

  1. Requête avec paramètres variables
    Par dahu17 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 30/05/2007, 10h38
  2. [Débutant] Requête avec Like
    Par nellynew dans le forum Access
    Réponses: 3
    Dernier message: 27/09/2006, 07h30
  3. Requête avec like et un champ de formulaire
    Par Sly2k dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 31/07/2006, 15h46
  4. requête avec une variable
    Par papilou86 dans le forum Access
    Réponses: 4
    Dernier message: 22/05/2006, 18h32
  5. PB proc stock avec like variable %
    Par pseudomh dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 31/03/2005, 11h49

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