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�.