Connexion
S'inscrire
Actualités
Quoi de neuf
Activités générales
Auteurs
Forums
Nouveaux messages
Rechercher un forum
Quoi de neuf
Nouveaux messages
Nouveaux messages de profil
Activités générales
Membres
Membres inscrits
Visiteurs actuels
Nouveaux messages de profil
Rechercher dans les messages des profils
Teams
Créé ton équipe
Quoi de neuf ?
Nouveaux messages
Rechercher un forum
Menu
Connexion
S'inscrire
Install the app
Install
Forums
Forums généraux
Informatique
Développement
Questions, aides et recherches
Résolus
Mettre plusieurs valeur dans une requete
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
Vous utilisez un navigateur non à jour ou ancien. Il ne peut pas afficher ce site ou d'autres sites correctement.
Vous devez le mettre à jour ou utiliser un
navigateur alternatif
.
Répondre à la discussion
Message
<blockquote data-quote="Paul GTP" data-source="post: 7401706" data-attributes="member: 315249"><p>Ouuuuuuuuuuuulaaaaaa <img src="/data/assets/smilies/joueur.gif" class="smilie" loading="lazy" alt=":p" title="Joueur :p" data-shortname=":p" /></p><p></p><p>Par où commencer <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite375" alt=":trollface:" title="Trollface :trollface:" loading="lazy" data-shortname=":trollface:" /></p><p></p><p>Alors, premièrement, j'ose espérer que tu utilises GET à la place de POST car tu ne traites pas les données d'un formulaire ?</p><p>Ensuite, j'ose espérer que tu utilises PDO pour ta connexion base de données et pas mysqli ou pire mysql</p><p></p><p>On n'utilise JAMAIS des variables dans les requêtes ->query(), on utilise les requêtes préparées pour ça</p><p></p><p>En gros tu as le droit de faire ça</p><p>[CODE]</p><p>$req = $bdd->query('SELECT * FROM membres ORDER BY date Desc LIMIT 20');</p><p>[/CODE]</p><p>mais pas ça</p><p>[CODE]</p><p>$req = $bdd->query('SELECT * FROM membres WHERE CONCAT(produit, description) LIKE "%'.$annonce.'%" ORDER BY date DESC');</p><p>[/CODE]</p><p></p><p>Je suppose en lisant ton code que tu utilises mysqli car si tu utilisais PDO, query renverrait une instance de PDOStatement et pas le résultat de ta requête, tu devrais changer ça et passer à PDO si ce n'est pas le cas, je te laisse te renseigner sur internet ou si tu as vraiment besoin d'aide je te donnerai un exemple rapide mais sur Openclassrooms tu trouves ça facilement</p><p></p><p>Ensuite il faudrait que tu te poses les bonnes questions pour réfléchir en SQL et responsabilités:</p><p>- Qu'est-ce que je cherche, où, comment ?</p><p>- Qui a quel rôle ? Qu'est-ce que je gère avec mon langage de programmation ? Qu'est-ce que je gère avec ma base de données</p><p></p><p>Petit hors sujet ; quand tu inclus une variable PHP dans une string, il vaut mieux utiliser cette forme là:</p><p>[CODE]</p><p>$req = $bdd->query("SELECT * FROM membres WHERE CONCAT(produit, description) LIKE '%{$annonce}%' ORDER BY date DESC");</p><p>[/CODE]</p><p>C'est tout de suite plus lisible d'avoir un {$variable} dans le code (pour ça tu dois forcément avoir ton string entourés de guillemets double - les accolades sont facultatives mais je te les recommande pour la lisibilité)</p><p></p><p>--</p><p></p><p>Soit tu n'as aucune connaissance en SQL et ton problème est plutôt simple, soit je n'ai pas compris ta demande.</p><p>Est-ce que tu cherches juste à rajouter une condition sur l'adresse également ? Si oui voilà ta requête actuelle:</p><p></p><p>[CODE]</p><p>SELECT * FROM membres WHERE CONCAT(produit, description) LIKE "%'.$annonce.'%" ORDER BY date DESC</p><p>[/CODE]</p><p></p><p>Si je la décompense je vois ça:</p><p></p><p>[CODE]</p><p>SELECT</p><p> *</p><p>FROM</p><p> membres</p><p>WHERE</p><p> CONCAT(produit, description) LIKE "%'.$annonce.'%"</p><p>ORDER BY</p><p> date</p><p>DESC</p><p>[/CODE]</p><p></p><p>Donc toi, si tu veux juste rajouter une condition sur l'adresse, tu dois rajouter une condition dans le where. Que ce soit un OR ou un AND, voici à quoi ça ressemblerait</p><p></p><p>[CODE]</p><p>SELECT</p><p> *</p><p>FROM</p><p> membres</p><p>WHERE</p><p> CONCAT(produit, description) LIKE "%'.$annonce.'%"</p><p> AND adresse LIKE "%'.$adresse.'%"</p><p>ORDER BY</p><p> date</p><p>DESC</p><p>[/CODE]</p><p>ou encore</p><p>[CODE]SELECT * FROM membres WHERE CONCAT(produit, description) LIKE "%'.$annonce.'%" AND adresse LIKE "%'.$adresse.'%" ORDER BY date DESC[/CODE]</p><p></p><p><strong><span style="color: red">ATTENTION</span></strong>: C'est une très mauvaise pratique, utilise PDO pour les requêtes préparées, tu auras même plus besoin de htmlspecialchars().</p><p>Et tu es sûr de la pertinence de ta requête actuelle ? ça me paraît très enthousiaste, c'est pour quel usage ? <img src="/data/assets/smilies/mmh.gif" class="smilie" loading="lazy" alt=":mmh:" title="Mmh :mmh:" data-shortname=":mmh:" /></p></blockquote><p></p>
[QUOTE="Paul GTP, post: 7401706, member: 315249"] Ouuuuuuuuuuuulaaaaaa :p Par où commencer :troll: Alors, premièrement, j'ose espérer que tu utilises GET à la place de POST car tu ne traites pas les données d'un formulaire ? Ensuite, j'ose espérer que tu utilises PDO pour ta connexion base de données et pas mysqli ou pire mysql On n'utilise JAMAIS des variables dans les requêtes ->query(), on utilise les requêtes préparées pour ça En gros tu as le droit de faire ça [CODE] $req = $bdd->query('SELECT * FROM membres ORDER BY date Desc LIMIT 20'); [/CODE] mais pas ça [CODE] $req = $bdd->query('SELECT * FROM membres WHERE CONCAT(produit, description) LIKE "%'.$annonce.'%" ORDER BY date DESC'); [/CODE] Je suppose en lisant ton code que tu utilises mysqli car si tu utilisais PDO, query renverrait une instance de PDOStatement et pas le résultat de ta requête, tu devrais changer ça et passer à PDO si ce n'est pas le cas, je te laisse te renseigner sur internet ou si tu as vraiment besoin d'aide je te donnerai un exemple rapide mais sur Openclassrooms tu trouves ça facilement Ensuite il faudrait que tu te poses les bonnes questions pour réfléchir en SQL et responsabilités: - Qu'est-ce que je cherche, où, comment ? - Qui a quel rôle ? Qu'est-ce que je gère avec mon langage de programmation ? Qu'est-ce que je gère avec ma base de données Petit hors sujet ; quand tu inclus une variable PHP dans une string, il vaut mieux utiliser cette forme là: [CODE] $req = $bdd->query("SELECT * FROM membres WHERE CONCAT(produit, description) LIKE '%{$annonce}%' ORDER BY date DESC"); [/CODE] C'est tout de suite plus lisible d'avoir un {$variable} dans le code (pour ça tu dois forcément avoir ton string entourés de guillemets double - les accolades sont facultatives mais je te les recommande pour la lisibilité) -- Soit tu n'as aucune connaissance en SQL et ton problème est plutôt simple, soit je n'ai pas compris ta demande. Est-ce que tu cherches juste à rajouter une condition sur l'adresse également ? Si oui voilà ta requête actuelle: [CODE] SELECT * FROM membres WHERE CONCAT(produit, description) LIKE "%'.$annonce.'%" ORDER BY date DESC [/CODE] Si je la décompense je vois ça: [CODE] SELECT * FROM membres WHERE CONCAT(produit, description) LIKE "%'.$annonce.'%" ORDER BY date DESC [/CODE] Donc toi, si tu veux juste rajouter une condition sur l'adresse, tu dois rajouter une condition dans le where. Que ce soit un OR ou un AND, voici à quoi ça ressemblerait [CODE] SELECT * FROM membres WHERE CONCAT(produit, description) LIKE "%'.$annonce.'%" AND adresse LIKE "%'.$adresse.'%" ORDER BY date DESC [/CODE] ou encore [CODE]SELECT * FROM membres WHERE CONCAT(produit, description) LIKE "%'.$annonce.'%" AND adresse LIKE "%'.$adresse.'%" ORDER BY date DESC[/CODE] [b][color=red]ATTENTION[/color][/b]: C'est une très mauvaise pratique, utilise PDO pour les requêtes préparées, tu auras même plus besoin de htmlspecialchars(). Et tu es sûr de la pertinence de ta requête actuelle ? ça me paraît très enthousiaste, c'est pour quel usage ? :mmh: [/QUOTE]
Insérer les citations…
Vérification
Publier la réponse
Forums
Forums généraux
Informatique
Développement
Questions, aides et recherches
Résolus
Mettre plusieurs valeur dans une requete
Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
Acceptez
En savoir plus.…
Haut