Salut. Génial ! Ça marche. Perso j’utilise la première méthode. Par contre je 
n’arrive pas à comprendre la différence entre bindparam et bindvalue. Si 
quelqu’un peut me l’expliquer je suis preneur. En tous cas c’est cool car 
maintenant mes recherches sont beaucoup plus souples avec les % 
Bonne journée à tous et un grand merci pour l’existence de cette liste 


> Le 31 juil. 2017 à 12:54, Abdel <abdelkrim.bens...@free.fr> a écrit :
> 
> Coucou Christophe,
> 
> Pour passer des paramètres à une requête préparée avec l'extension PDO, 
> j'utilise personnellement 2 méthodes, qui sont les suivantes :
> 
> 1. Méthode 1 :
> 
> $stmt->bindValue(':pseudo', '%'.$pseudo.'%', PDO::PARAM_STR);
> $stmt->execute ();
> 
> 2. Méthode 2 :
> 
> Je passe directement les paramètres lors de l'exécution de la requête 
> préparée, comme suit :
> 
> $stmt->execute (array ('pseudo', '%'.$pseudo.'%'));
> 
> Remarque que dans la seconde méthode, je ne mets pas le ":" pour faire 
> référence au marqueur nominatif.
> 
> bindParam ne fonctionne pas très bien avec PDO chez moi aussi, tu n'es pas le 
> seul.
> 
> Autrement, dans l'exemple de mon précédent message, le nom de la table 
> "membres" est au pluriel, tu dois la mettre au singulier pour ton cas, car 
> apparemment, ta table "membre" est au singulier.
> 
> Voili voilou, merci à toi.
> 
> Bien amicalement,
> Abdel.
> 
> -----Message d'origine----- From: Christophe Garnier
> Sent: Monday, July 31, 2017 10:46 AM
> To: Proglist
> Subject: [progliste] Re: Recherche de car actères et base de données
> 
> Salut Abdel et tous
> Merci beaucoup pour ton code. En fait j’utilise déjà pro et les requêtes 
> préparées avec bindparap
> Malheureusement bindparap n’excepte pas ce que je lui entre. Voici la ligne 
> et le message d’erreur.
> //Je mets la requête dans une constante
> const CHERCHERMEMBRE = 'select id, pseudo from membre where pseudo like 
> :pseudo';
> //La ligne qui ne marche pas.
> $stmt->bindParam(":pseudo", '%'.$pseudo.'%', PDO::PARAM_STR);
> Voici le message d’erreur dans le blog
> [31-Jul-2017 11:31:32 Europe/Berlin] PHP Fatal error:  Uncaught Error: Cannot 
> pass parameter 2 by reference in 
> /Applications/MAMP/htdocs/classe/MembreManager.php:132
> Merci d’avance
> 
> 
> 
> 
> 
>> Le 30 juil. 2017 à 00:33, Abdel <abdelkrim.bens...@free.fr> a écrit :
>> 
>> Resalut Christophe,
>> 
>> En PDO, je vais te donner la syntaxe entière pour préparer une requête de 
>> recherche dans une BDD, avec les commentaires qui vont avec.
>> 
>> Je suis certain que tu vas apprécier la simplicité d'utilisation de cette 
>> extension !
>> 
>> Le fichier view.php est en PJ, si tu veux, tu pourras le définir comme 
>> action à ton formulaire.
>> 
>> Tu devras bien entendu préciser le nom de ta bdd, ainsi que le nom 
>> d'utilisateur et le mot de passe.
>> 
>> Le nom du serveur devra être modifié également s'il est différent de 
>> localhost.
>> 
>> <!-- début du code -->
>> <?php
>> // Récupération du pseudo à partir du formulaire.
>> $pseudo = $_POST['pseudo'];
>> // Connexion à la BDD.
>> $db = new PDO('mysql:host=localhost;dbname=nomDeLaBDD;charset=utf8', 
>> 'nomDutilisateur', 'motDePasse');
>> // Création de la requête préparée en utilisant un marqueur nominatif.
>> $query = $db->prepare('SELECT id, pseudo FROM membres WHERE pseudo LIKE 
>> :pseudo');
>> // Exécution de la requête en lui passant le pseudo en paramètre entourée 
>> des symboles '%'.
>> $query->execute(array('pseudo' => '%' . $pseudo . '%'));
>> // Si le nombre de résultats est supérieur à 0.
>> if ($query->rowCount() > 0)
>> {
>> // On crée un tableau pour accueillir les données résultantes de la 
>> recherche.
>> echo "<table border=\"1\">\n";
>> // Récupération des données dans un tableau associatif pour chaque ligne de 
>> résultat.
>> foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) {
>> // On extrait uniquement les clés des tableaux dans une variable $clé.
>> extract ($row);
>> echo "<tr><td>'$id'</td><td>'$pseudo'</td></tr>\n";
>> }
>> echo '</table>';
>> }
>> else
>> {
>> // Le nombre de résultats est égal à 0, rien trouvé !
>> echo '<p>Pas de résultats !</p>';
>> }
>> ?>
>> <!-- Fin du code -->
>> 
>> Voila, dis-moi ce que tu en penses !
>> 
>> Bien amicalement,
>> Abdel.
>> 
>> 
>> 
>> -----Message d'origine----- From: Abdel
>> Sent: Saturday, July 29, 2017 5:31 PM
>> To: progliste@ml.free.fr
>> Subject: [progliste] Re: Recherche de caractères et base de données
>> 
>> Salut Christophe,
>> 
>> Dans ce cas, tu peux utiliser une requête préparée avec marqueur
>> non-nominatif "?".
>> 
>> Quelle méthode utilise-tu pour exécuter ta requête préparée?
>> 
>> Quelle est la version du PHP que tu utilises sur ton serveur?
>> 
>> Si elle  est assez récente, je te conseille vivement de passer à mysqli ou
>> PDO, car ces 2 extensions proposent la méthode prepare en orienté objet, qui
>> est fort appréciable et beaucoup plus d'actualité.
>> 
>> Si tu veux toutefois rester avec mySQL, essai ce qui suit :
>> 
>> PREPARE recherche FROM 'SELECT id, pseudo FROM membre WHERE pseudo LIKE ?';
>> SET @pseudo = CONCAT ('%', $_POST['pseudo'], '%';
>> EXECUTE recherche USING @pseudo;
>> 
>> Bien amicalement,
>> Abdel.
>> 
>> -----Message d'origine----- From: Christophe Garnier
>> Sent: Friday, July 28, 2017 9:34 AM
>> To: Proglist
>> Subject: [progliste] Re: Recherche de caractères et b ase de données
>> 
>> 
>> Être Bonjour. Merci beaucoup pour ces explications mais ça ne fonctionne
>> pas. Concrètement j’utilise des requêtes préparées avec des marqueurs et non
>> des variables ;
>> Ma requête de base est
>> 'select id, pseudo from membre where pseudo =:pseudo';
>> Si je la modifie avec like % j’ai essayé
>> 'select id, pseudo from membre where pseudo like "%:pseudo%"';
>> Quand je dis ça marche pas je veux dire précisément que la recherche ne
>> donne aucun résultat même en mettant le pseudo complet dans la recherche.
>> Merci
>> 
>> 
>> 
>>> Le 27 juil. 2017 à 08:25, Abdel <abdelkrim.bens...@free.fr> a écrit :
>>> 
>>> Coucou Christophe,
>>> 
>>> Je corrige tout d'abord le sujet de la discussion car il est un peu confus 
>>> avec ces caractères illisibles.
>>> 
>>> Lorsque tu soumets ton formulaire en utilisant la méthode "post", à un 
>>> fichier script de traitement PHP, tu dois savoir que les champs de ton 
>>> formulaire soumis se transforment automatiquement en variables PHP de type 
>>> tableau associatif.
>>> 
>>> Ainsi, un champ "pseudo" dans le formulaire original verra sa valeur 
>>> stockée dans une variable $_POST['pseudo'] une fois dans le script de 
>>> traitement PHP.
>>> 
>>> Puisque ta version de PHP t'autorise encore à utiliser mysql, voici comment 
>>> tu devras orienter ta requête.
>>> 
>>> // On stocke le champ pseudo dans une variable $pseudo.
>>> $pseudo = $_POST['pseudo'];
>>> // Voici maintenant la requête de recherche des occurrences saisies dans le 
>>> formulaire.
>>> $requete = mysql_query ("select id, pseudo from membre where pseudo like 
>>> '%$pseudo%'");
>>> 
>>> Si ta bdd comporte des données personnelles, il est préférable d'échapper 
>>> les occurrences saisies avec la fonction mysql_real_escape_string, afin de 
>>> protéger tes données contre les injections SQL.
>>> 
>>> // On stocke le champ pseudo dans une variable $pseudo en échappant les 
>>> caractères spéciaux.
>>> $pseudo = mysql_real_escape_string($_POST['pseudo']);
>>> // Voici maintenant la requête de recherche des occurrences saisies dans le 
>>> formulaire.
>>> $requete = mysql_query ("select id, pseudo from membre where pseudo like 
>>> '%$pseudo%'");
>>> 
>>> En fait, on peut considérer que notre ami Yannick a répondu à 90% de ta 
>>> demande, je me suis chargé des 10% restants en répondant à ta seconde 
>>> question.
>>> 
>>> Voili voilou, teste et dis-nous si ça marche.
>>> 
>>> Bien amicalement,
>>> Abdel.
>>> 
>>> -----Message d'origine----- From: Christophe Garnier
>>> Sent: Tuesday, July 25, 2017 2:24 PM
>>> To: Proglist
>>> Subject: [progliste] 
>>> �tf-8?B?UmU6IFtwcm9nbGlzdGVdIO+/vXRmLTg/UT9SZWNoZXJjaGVfZGVf?�tf-8?B?Y2FyYWN0w6hyZXNfZXRfYmFzZV9kZV9kb25uw6llc18/TWVzc2FnZS1JZDog?�tf-8?B?PDFGNkM3RSAyQS1DQzVGLTQ4NTctQUI3RS1ENUVDNDY1RDI4RDNAZ21haWwu?�tf-8?B?Y29tPg�Date:
>>>  Tue, 25 Jul 2017 15:24:17 +0200
>>> 
>>> bonjour. Merci c’est très claire.  Mais dans l’administration du site je 
>>> veux par exemple dans un champ de formulaire, rechercher un utilisateur qui 
>>> s’appelle christophe. Mais admettons que je ne sache pas exactement comment 
>>> ça s’écrit. Je veux rentrer par exemple tophe dans mon champ de formulaire. 
>>> ensuite je veux qu’en validant la recherche, qu’elle  trouve tous les 
>>> éléments qui contiennent tophe. Je traite ça en php et mysql via des 
>>> requêtes préparées. Pour l’instant voici la requête que j’avais effectué 
>>> avant de poser la question sur le forum.
>>> 
>>> 
>>> 'select id, pseudo from membre where pseudo =:pseudo';
>>> Merci
>>> 
>>> 
>>>> Le 25 juil. 2017 à 13:45, Yannick Youalé <mailtoloco2...@gmail.com> a 
>>>> écrit :
>>>> 
>>>> Salut Christophe,
>>>> 
>>>> 
>>>> Pour résoudre ton problème tu dois apprendre à placer le caractère % dans 
>>>> tes requêtes mysql et utiliser le mot clé de comparaison "LIKE".
>>>> 
>>>> 
>>>> Exemple pour trouver un nom qui commence par "yan" voici une requête:
>>>> 
>>>> 
>>>> SELECT nom FROM membres WHERE nom LIKE 'yan%'
>>>> 
>>>> 
>>>> Si tu veux trouver les noms qui ont la chaîne "yan" à l'intérieur, tu peux 
>>>> employer une requête de ce genre:
>>>> 
>>>> SELECT nom WHERE nom LIKE '%yan%'
>>>> 
>>>> 
>>>> Et là, quelle que soit la position de la chaîne "yan" dans le nom, il sera 
>>>> retenu.
>>>> 
>>>> 
>>>> J'espère que tu as compris le truc.
>>>> 
>>>> 
>>>> Yannick Daniel Youalé
>>>> La programmation est une religion. Aimez-la, ou quittez-la.
>>>> www.visuweb.net
>>>> 
>>>> 
>>>> Le 25/07/2017 à 09:30, Christophe Garnier a écrit :
>>>>> Salut à tous.
>>>>> Je crée une interface d’administration de mon site pour par exemple avoir 
>>>>> la liste des membres, supprimer un ou tous les membres…
>>>>> J’utilise mysql pour la bdd.
>>>>> Si je cherche un membre par son pseudo complet ça fonctionne bien. Par 
>>>>> contre si je frappe par exemple les 4 premières lettres du pseudo, il 
>>>>> n’est pas trouvé. Quelle est la solution pour que ça fonctionne ?
>>>>> Merci
>>>>> 
>>>>> Progliste :
>>>>> Pour se d�sinscrire de la liste : 
>>>>> mailto:progliste-requ...@ml.free.fr?subject=unsubscribe
>>>>> 
>>>>> Pour voir les archives de la liste :
>>>>> http://www.mail-archive.com/progliste@ml.free.fr/
>>>>> 
>>>>> Je vous rappelle que les pi�ces jointe sont activ�s leur taille est 
>>>>> limit� � 2 MO
>>>>> 
>>>>> Pour acc�der aux fichiers de la liste
>>>>> http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
>>>>> Ou en utilisant la nouvelle page de partage :
>>>>> http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
>>>>> Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en priv�, 
>>>>> je vous r�pondrez en priv�.
>>>>> 
>>>>> 
>>>>> 
>>>>> ---
>>>>> Cet email a fait l'objet d'une analyse antivirus par AVG.
>>>>> http://www.avg.com
>>>>> 
>>>> 
>>>> 
>>>> Progliste :
>>>> Pour se d�sinscrire de la liste : 
>>>> mailto:progliste-requ...@ml.free.fr?subject=unsubscribe
>>>> 
>>>> Pour voir les archives de la liste :
>>>> http://www.mail-archive.com/progliste@ml.free.fr/
>>>> 
>>>> Je vous rappelle que les pi�ces jointe sont activ�s leur taille est limit� 
>>>> � 2 MO
>>>> Pour acc�der aux fichiers de la liste
>>>> http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
>>>> Ou en utilisant la nouvelle page de partage :
>>>> http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
>>>> Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en priv�, 
>>>> je vous r�pondrez en priv�.
>>>> 
>>>> 
>>> 
>>> Progliste :
>>> Pour se d�sinscrire de la liste : 
>>> mailto:progliste-requ...@ml.free.fr?subject=unsubscribe
>>> 
>>> Pour voir les archives de la liste :
>>> http://www.mail-archive.com/progliste@ml.free.fr/
>>> 
>>> Je vous rappelle que les pi�ces jointe sont activ�s leur taille est limit� 
>>> � 2 MO
>>> 
>>> Pour acc�der aux fichiers de la liste
>>> http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
>>> Ou en utilisant la nouvelle page de partage :
>>> http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
>>> Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en priv�, je 
>>> vous r�pondrez en priv�.
>>> 
>>> Progliste :
>>> Pour se d�sinscrire de la liste : 
>>> mailto:progliste-requ...@ml.free.fr?subject=unsubscribe
>>> 
>>> Pour voir les archives de la liste :
>>> http://www.mail-archive.com/progliste@ml.free.fr/
>>> 
>>> Je vous rappelle que les pi�ces jointe sont activ�s leur taille est limit� 
>>> � 2 MO
>>> Pour acc�der aux fichiers de la liste
>>> http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
>>> Ou en utilisant la nouvelle page de partage :
>>> http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
>>> Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en priv�, je 
>>> vous r�pondrez en priv�.
>>> 
>>> 
>> 
>> Progliste :
>> Pour se d�sinscrire de la liste :
>> mailto:progliste-requ...@ml.free.fr?subject=unsubscribe
>> 
>> Pour voir les archives de la liste :
>> http://www.mail-archive.com/progliste@ml.free.fr/
>> 
>> Je vous rappelle que les pi�ces jointe sont activ�s leur taille est limit� �
>> 2 MO
>> 
>> Pour acc�der aux fichiers de la liste
>> http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
>> Ou en utilisant la nouvelle page de partage :
>> http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
>> Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en priv�, je
>> vous r�pondrez en priv�.
>> 
>> Progliste :
>> Pour se d�sinscrire de la liste : 
>> mailto:progliste-requ...@ml.free.fr?subject=unsubscribe
>> 
>> Pour voir les archives de la liste :
>> http://www.mail-archive.com/progliste@ml.free.fr/
>> 
>> Je vous rappelle que les pi�ces jointe sont activ�s leur taille est limit� � 
>> 2 MO
>> 
>> Pour acc�der aux fichiers de la liste
>> http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
>> Ou en utilisant la nouvelle page de partage :
>> http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
>> Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en priv�, je 
>> vous r�pondrez en priv�.
>> <view.php>
> 
> Progliste :
> Pour se d�sinscrire de la liste : 
> mailto:progliste-requ...@ml.free.fr?subject=unsubscribe
> 
> Pour voir les archives de la liste :
> http://www.mail-archive.com/progliste@ml.free.fr/
> 
> Je vous rappelle que les pi�ces jointe sont activ�s leur taille est limit� � 
> 2 MO
> 
> Pour acc�der aux fichiers de la liste
> http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
> Ou en utilisant la nouvelle page de partage :
> http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
> Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en priv�, je 
> vous r�pondrez en priv�.
> 
> Progliste :
> Pour se d�sinscrire de la liste : 
> mailto:progliste-requ...@ml.free.fr?subject=unsubscribe
> 
> Pour voir les archives de la liste :
> http://www.mail-archive.com/progliste@ml.free.fr/     
> 
> Je vous rappelle que les pi�ces jointe sont activ�s leur taille est limit� � 
> 2 MO 
> Pour acc�der aux fichiers de la liste
> http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
> Ou en utilisant la nouvelle page de partage :
> http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
> Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en priv�, je 
> vous r�pondrez en priv�.
>       
>       

Progliste :
Pour se d�sinscrire de la liste : 
mailto:progliste-requ...@ml.free.fr?subject=unsubscribe

Pour voir les archives de la liste :
http://www.mail-archive.com/progliste@ml.free.fr/       

Je vous rappelle que les pi�ces jointe sont activ�s leur taille est limit� � 2 
MO 

Pour acc�der aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en priv�, je 
vous r�pondrez en priv�.
        
        

Répondre à