Ouuuuuuuuuuuulaaaaaa
Par où commencer
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');
mais pas ça
Code:
$req = $bdd->query('SELECT * FROM membres WHERE CONCAT(produit, description) LIKE "%'.$annonce.'%" ORDER BY date DESC');
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");
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
Si je la décompense je vois ça:
Code:
SELECT
*
FROM
membres
WHERE
CONCAT(produit, description) LIKE "%'.$annonce.'%"
ORDER BY
date
DESC
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
ou encore
Code:
SELECT * FROM membres WHERE CONCAT(produit, description) LIKE "%'.$annonce.'%" AND adresse LIKE "%'.$adresse.'%" ORDER BY date DESC
ATTENTION: 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 ?