WHERE titreAnnonce LIKE '%motrecherche%' AND descriptionObjet LIKE '%descriprecherche%' AND code postal LIKE '%cprecherche%'
Coté performance, afin d'améliorer la vitesse de résultat, il est vivement conseillé de créer des INDEX sur les champs où tu opéres ta recherche dans ta BDD. DE plus, je te conseille de ne retourner seulement le nombre de résultat dont tu as besoin pour ton affichage, c'est à dire que si tu ne veux en afficher que 10, ajoute la clause LIMIT 10 à ta requete sql. il ne sert a rien de prendre plus que neccessaire dans le traitement.if(isset($_POST['recherche']) AND $_POST['recherche'] == TRUE)
{
if(isset($_POST['gategorie']) AND $_POST['gategorie'] == TRUE OR empty($_POST['gategorie']))
{
if(isset($_POST['codePostal']) AND $_POST['codePostal'] == TRUE OR empty($_POST['codePostal']))
{
$recherche = htmlspecialchars(trim($_POST['recherche']));
$gategorie = htmlspecialchars(trim($_POST['gategorie']));
$codePostal = htmlspecialchars(trim($_POST['codePostal']));
include ('dbconnect.php'); // conexion a la BDD
$req = $bdd->prepare("SELECT id, titreAnnonce, gategorie, photoObjet, prix, codePostal, ville, descriptionObjet
FROM annonceEnLigne
WHERE titreAnnonce LIKE '%$recherche%' OR descriptionObjet LIKE '%$recherche%'
AND gategorie LIKE '%$gategorie%' AND codePostal LIKE '%$codePostal%' ");
$req->execute();
$donnees = $req->fetchAll();
}
}
}
j'ai pas très bien compris pour les INDEX je doit les rajout dans phpmyadmin !? c'est AUTO INCREMENT ou aucun rapport?SELECT id, titreAnnonce, gategorie, photoObjet, prix, codePostal, ville, descriptionObjet
FROM annonceEnLigne
WHERE titreAnnonce LIKE '%$recherche%'
OR descriptionObjet LIKE '%$recherche%'
AND gategorie LIKE '%$gategorie%'
AND codePostal LIKE '%$codePostal%'
ta requète écrite comme ceci suppose que toute les conditions doivent etre rempli pour que ta requete soit fonctionnelle. gategorie LIKE '%1%' AND codePostal LIKE '%1%' . les deux conditions doivent etre remplis. si l'une ou l'autre n'est pas rempli la requete n'abouti pas. C'est le principe du AND.$requete = "SELECT id, titreAnnonce, gategorie, photoObjet, prix, codePostal, ville, descriptionObjet
FROM annonceEnLigne
WHERE (titreAnnonce LIKE '%$recherche%' OR descriptionObjet LIKE '%$recherche%')";
if(!empty ($_GET['gategorie'])) {
$requete. ="AND gategorie LIKE '%$gategorie%'";
}
if(!empty ($_GET['gategorie'])) {
$requete. ="AND codePostal LIKE '%$codePostal%'";
}
if(!empty($_POST['gategorie']))
{
$req. = "AND gategorie LIKE '%$gategorie%' " ; // ligne 71
}
if(!empty($_POST['codePostal']))
{
$req. = "AND codePostal LIKE '%$codePostal%' " ;
}
$req->execute();
a pare sa tu ma pas répondu pour l'INDEX if(!empty($_POST['gategorie']))
{
$req .= "AND gategorie LIKE '%$gategorie%' " ; // ligne 71
}
if(!empty($_POST['codePostal']))
{
$req .= "AND codePostal LIKE '%$codePostal%' " ;
}
$req->execute();
Depuis le 8 novembre, tu cours après ça ???????Ou tu pourrais essayer de trouver la réponse par toi même...je passe a autre choses quand je vois qu'on me répond pas
Je peu t'assurer que si j'avais trouver la réponses (ou un tuto) moi même j'aurai pas demander de l'aide sur le forumOu tu pourrais essayer de trouver la réponse par toi même...
Un forum c'est là pour aider pas pour mâcher le travail
//Je commence par construire ma requête avec mes clauses
$lRequete = "SELECT id, titreAnnonce, gategorie, photoObjet, prix, codePostal, ville, descriptionObjet
FROM annonceEnLigne
WHERE (titreAnnonce LIKE '%$recherche%' OR descriptionObjet LIKE '%$recherche%')";
if(!empty($_POST['gategorie'])){
$lRequete .= " AND gategorie LIKE '%$gategorie%' " ; // ligne 71
}
if(!empty($_POST['codePostal'])){
$lRequete .= " AND codePostal LIKE '%$codePostal%' " ;
}
//Je prépare la requête
$lSql= $bdd->prepare($lRequete);
//J'exécute la requête et je récupère les fetch
$lSql->execute();
$lDonnees = $lSql->fetchAll();
$req->execut();
Après les 2 condition en pensent que temps que la requête n'est pas exécuter on peu la concatenes $lRecherche = str_replace(array(',', '.'), '', $_POST['recherche']);
Ensuite il faut splitter la chaîne par rapport aux espaces laissés pour récupérer tous les mots.
$lTabRecherche = explode(' ', $lRecherche);
Tu obtiens alors un tableau à n éléments, n étant le nombre de mots dans la chaîne.//On initialise notre variable comme un string
$lSqlRecherche = '';
//On liste les éléments du tableau
foreach($lTabRecherche AS $lOneTab){
//Pour chaque élément, on concatène notre sql
//A la première itération on ne met pas OR on le met seulement à partir de la deuxième
if($lKey > 0){
$lSqlRecherche .= "OR";
}
$lSqlRecherche .= " titreAnnonce LIKE '%$lOneTab%' OR descriptionObjet LIKE '%$lOneTab%' ";
}
On a alors notre condition sur la recherche, on peut l'insérer dans la requête:
//Je commence par construire ma requête avec mes clauses
$lRequete = "SELECT id, titreAnnonce, gategorie, photoObjet, prix, codePostal, ville, descriptionObjet
FROM annonceEnLigne
WHERE ( $lSqlRecherche )";
if(!empty($_POST['gategorie'])){
$lRequete .= " AND gategorie LIKE '%$gategorie%' " ; // ligne 71
}
if(!empty($_POST['codePostal'])){
$lRequete .= " AND codePostal LIKE '%$codePostal%' " ;
}
//Je prépare la requête
$lSql= $bdd->prepare($lRequete);
//J'exécute la requête et je récupère les fetch
$lSql->execute();
$lDonnees = $lSql->fetchAll();
Ci dessous le code dans globalité:
//On enlève les virgules et les points
$lRecherche = str_replace(array(',', '.'), '', $_POST['recherche']);
//On explose notre chaîne sur les espaces
$lTabRecherche = explode(' ', $lRecherche);
//On initialise notre variable sql comme un string
$lSqlRecherche = '';
//On liste les éléments du tableau
foreach($lTabRecherche AS $lKey => $lOneTab){
//Pour chaque élément, on concatène notre sql
//A la première itération on ne met pas OR on le met seulement à partir de la deuxième
if($lKey > 0){
$lSqlRecherche .= "OR";
}
$lSqlRecherche .= " titreAnnonce LIKE '%$lOneTab%' OR descriptionObjet LIKE '%$lOneTab%' ";
}
//Je commence par construire ma requête avec mes clauses
$lRequete = "SELECT id, titreAnnonce, gategorie, photoObjet, prix, codePostal, ville, descriptionObjet
FROM annonceEnLigne
WHERE ( $lSqlRecherche )";
if(!empty($_POST['gategorie'])){
$lRequete .= " AND gategorie LIKE '%$gategorie%' " ;
}
if(!empty($_POST['codePostal'])){
$lRequete .= " AND codePostal LIKE '%$codePostal%' " ;
}
//Je prépare la requête
$lSql= $bdd->prepare($lRequete);
//J'exécute la requête et je récupère les fetch
$lSql->execute();
$lDonnees = $lSql->fetchAll();
A tester pour voir si ça marche...