Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/01/2012, 10h25   #1
Membre du Club
 
Avatar de razorlok
 
Inscription : novembre 2006
Messages : 190
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 190
Points : 66
Points : 66
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 :
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 !
__________________
Wear some golf shoes, otherwise we'll never get out of this place alive.
razorlok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 10h45   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 250
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 250
Points : 8 635
Points : 8 635
active le trace_mode,
Code :
ini_set('mysql.trace_mode', true);
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 10h49   #3
Membre du Club
 
Avatar de razorlok
 
Inscription : novembre 2006
Messages : 190
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 190
Points : 66
Points : 66
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.
__________________
Wear some golf shoes, otherwise we'll never get out of this place alive.
razorlok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 10h58   #4
Membre Expert
 
Avatar de Doksuri
 
Tiger Scott
Développeur Web
Inscription : juin 2006
Messages : 1 250
Détails du profil
Informations personnelles :
Nom : Tiger Scott
Âge : 42

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2006
Messages : 1 250
Points : 1 513
Points : 1 513
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.

N'oubliez pas le Le tag resolu.

Need_!
Doksuri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 11h13   #5
Membre du Club
 
Avatar de razorlok
 
Inscription : novembre 2006
Messages : 190
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 190
Points : 66
Points : 66
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.
__________________
Wear some golf shoes, otherwise we'll never get out of this place alive.
razorlok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 11h14   #6
Membre du Club
 
Avatar de razorlok
 
Inscription : novembre 2006
Messages : 190
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 190
Points : 66
Points : 66
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 ?
__________________
Wear some golf shoes, otherwise we'll never get out of this place alive.
razorlok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 11h32   #7
Membre Expert
 
Avatar de Doksuri
 
Tiger Scott
Développeur Web
Inscription : juin 2006
Messages : 1 250
Détails du profil
Informations personnelles :
Nom : Tiger Scott
Âge : 42

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2006
Messages : 1 250
Points : 1 513
Points : 1 513
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 :
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.

N'oubliez pas le Le tag resolu.

Need_!
Doksuri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 11h39   #8
Membre du Club
 
Avatar de razorlok
 
Inscription : novembre 2006
Messages : 190
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 190
Points : 66
Points : 66
quand je fais un echo sur la requête, ça me donne :

Citation:
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.
__________________
Wear some golf shoes, otherwise we'll never get out of this place alive.
razorlok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 11h42   #9
Membre Expert
 
Avatar de Doksuri
 
Tiger Scott
Développeur Web
Inscription : juin 2006
Messages : 1 250
Détails du profil
Informations personnelles :
Nom : Tiger Scott
Âge : 42

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2006
Messages : 1 250
Points : 1 513
Points : 1 513
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.

N'oubliez pas le Le tag resolu.

Need_!
Doksuri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 11h50   #10
Membre du Club
 
Avatar de razorlok
 
Inscription : novembre 2006
Messages : 190
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 190
Points : 66
Points : 66
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 :
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).
__________________
Wear some golf shoes, otherwise we'll never get out of this place alive.
razorlok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 11h58   #11
Membre Expert
 
Avatar de Doksuri
 
Tiger Scott
Développeur Web
Inscription : juin 2006
Messages : 1 250
Détails du profil
Informations personnelles :
Nom : Tiger Scott
Âge : 42

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2006
Messages : 1 250
Points : 1 513
Points : 1 513
avec explode()
tu devrais pouvoir faire un truc genre :
Code php :
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.

N'oubliez pas le Le tag resolu.

Need_!
Doksuri est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/01/2012, 12h19   #12
Membre du Club
 
Avatar de razorlok
 
Inscription : novembre 2006
Messages : 190
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 190
Points : 66
Points : 66
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 !
__________________
Wear some golf shoes, otherwise we'll never get out of this place alive.
razorlok est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h57.


 
 
 
 
Partenaires

Hébergement Web