Erreur de requête dans une fonction PHP
Résolu/Fermé
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
-
14 déc. 2021 à 15:58
max30_3775 Messages postés 178 Date d'inscription jeudi 4 novembre 2021 Statut Membre Dernière intervention 18 mars 2022 - 16 déc. 2021 à 22:08
max30_3775 Messages postés 178 Date d'inscription jeudi 4 novembre 2021 Statut Membre Dernière intervention 18 mars 2022 - 16 déc. 2021 à 22:08
A voir également:
- Erreur de requête dans une fonction PHP
- Erreur 0x80070643 - Accueil - Windows
- Fonction si et - Guide
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur vidéo freebox ✓ - Forum TV & Vidéo
- Erreur 1001 outlook - Accueil - Bureautique
19 réponses
jordane45
Messages postés
38270
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 novembre 2024
4 695
14 déc. 2021 à 16:52
14 déc. 2021 à 16:52
Déjà ....
L'id_categorie .. c'est un ID ( un IDENTIFIANT ici.. NUMERIQUE ! )
Ce n'est pas le "nom" de la catégorie...
Ensuite... il faudrait le message d'erreur COMPLET....
On peut supposer que le souci vient des parenthèses après le WHERE qui n'ont rien à faire là.
Et après... (déjà ton souci précédent... ) .. tu utilises un alias "nom".
Sauf que tu as ce champ dans la table Annonces ET dans la table catégories...
Et pour finir tu veux faire une recherche sur l'un des critères ou tous les critères ??
Commence par réaliser/tester la requête sql DIRECTEMENT dans ta bdd ( via phpmyadmin) AVANT d'essayer de la mettre dans ton code PHP ...
Une fois que tu auras une requête fonctionnelle.. on verra pour la mettre en pratique dans ton code php.
L'id_categorie .. c'est un ID ( un IDENTIFIANT ici.. NUMERIQUE ! )
Ce n'est pas le "nom" de la catégorie...
Ensuite... il faudrait le message d'erreur COMPLET....
On peut supposer que le souci vient des parenthèses après le WHERE qui n'ont rien à faire là.
Et après... (déjà ton souci précédent... ) .. tu utilises un alias "nom".
Sauf que tu as ce champ dans la table Annonces ET dans la table catégories...
Et pour finir tu veux faire une recherche sur l'un des critères ou tous les critères ??
Commence par réaliser/tester la requête sql DIRECTEMENT dans ta bdd ( via phpmyadmin) AVANT d'essayer de la mettre dans ton code PHP ...
Une fois que tu auras une requête fonctionnelle.. on verra pour la mettre en pratique dans ton code php.
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
14 déc. 2021 à 17:12
14 déc. 2021 à 17:12
Bonjour Jordane,
Dans ma table categories j'ai les champs: id, id_categorieprincipale. nom_fr, nom_en_ nom_es. Pour les nom_ c'est histoire de concaténer grace à $sql_lang, si une langue est choisie. Dans la table Annonces, j'ai peudo, et pas nom.
<<Et pour finir tu veux faire une recherche sur l'un des critères ou tous les critères ??>>
==> Pour le q , ie la saisie de texte dans la barre de recherche sans FORCEMENT qu'un utilisateur choisisse la catégorie, que le texte saisi soit LIKE le titre de l'annonce, OU LA CATEGORIE (car on peut penser que les mots-clés du titre change en fonction de la langue). Donc si ce ce n'est pas like $q, donc like $categorie
<<L'id_categorie .. c'est un ID ( un IDENTIFIANT ici.. NUMERIQUE ! )>>
==> Donc par quoi remplacer
Like % id_categorie?
Dans ma table categories j'ai les champs: id, id_categorieprincipale. nom_fr, nom_en_ nom_es. Pour les nom_ c'est histoire de concaténer grace à $sql_lang, si une langue est choisie. Dans la table Annonces, j'ai peudo, et pas nom.
<<Et pour finir tu veux faire une recherche sur l'un des critères ou tous les critères ??>>
==> Pour le q , ie la saisie de texte dans la barre de recherche sans FORCEMENT qu'un utilisateur choisisse la catégorie, que le texte saisi soit LIKE le titre de l'annonce, OU LA CATEGORIE (car on peut penser que les mots-clés du titre change en fonction de la langue). Donc si ce ce n'est pas like $q, donc like $categorie
<<L'id_categorie .. c'est un ID ( un IDENTIFIANT ici.. NUMERIQUE ! )>>
==> Donc par quoi remplacer
Like % id_categorie?
jordane45
Messages postés
38270
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 novembre 2024
4 695
14 déc. 2021 à 18:00
14 déc. 2021 à 18:00
ben par q
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
Modifié le 14 déc. 2021 à 18:50
Modifié le 14 déc. 2021 à 18:50
On ne peut pas remplacer par q, car ça nous donne aucun résultat.
nb: je vais enlever id_categorie, mais c'était juste pour te montrer
<input type="search" name="q" placeholder= Que rechercher vous/> <input type="submit" value="<?php echo $lang['rechercher'];?>" /> </form> </div> <?php $q = !empty($_GET['q']) ? trim($_GET['q']) : null; $id_categorie= isset($_GET['categorie'])? trim($_GET['categorie']) : null; $villes= isset($_GET['villes'])? trim($_GET['villes']) : null ; if($q || $id_categorie || $villes) { $search= recherche($q, $id_categorie, $villes); if(!empty($search)){ // boucle pour afficher tes résultats.. foreach($search as $rec){ echo' <div class="annoncepub">';
nb: je vais enlever id_categorie, mais c'était juste pour te montrer
jordane45
Messages postés
38270
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 novembre 2024
4 695
14 déc. 2021 à 18:58
14 déc. 2021 à 18:58
Je recommence une fois de plus.....
As-tu tester la requête directement dans phpmyadmin ?????
Qu'est-ce que ça te donne ???
As-tu tester la requête directement dans phpmyadmin ?????
Qu'est-ce que ça te donne ???
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
Modifié le 14 déc. 2021 à 19:23
Modifié le 14 déc. 2021 à 19:23
ça donne ça.
Apparemment ce n'est pas la même syntaxe.
Apparemment ce n'est pas la même syntaxe.
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
14 déc. 2021 à 19:24
14 déc. 2021 à 19:24
jordane45
Messages postés
38270
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 novembre 2024
4 695
>
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
14 déc. 2021 à 19:31
14 déc. 2021 à 19:31
La requête SQL c'est juste
en remplaçant, bien entendu, les variables PHP qui s'y trouvent par de "vraies" valeurs
SELECT A.* ,C.id, C.nom_'.$sql_lang.' AS nom FROM annonces A LEFT JOIN categories C ON C.id = A.id_categorie WHERE (A.titre LIKE "%'.$q.'%" OR nom LIKE "%'.$id_categorie.'%" OR A.ville LIKE "%'.$villes.'%" ) ORDER BY created_date DESC';
en remplaçant, bien entendu, les variables PHP qui s'y trouvent par de "vraies" valeurs
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
Modifié le 14 déc. 2021 à 19:55
Modifié le 14 déc. 2021 à 19:55
C'est le "AS nom" qui nous embêtait, et en l'enlevant a n'affiche pas d'erreur
MAIS ça se répercute sur notre fonction get annonces alors qu'elle marche:
SELECT A.* ,C.id, C.nom_'.$sql_lang.' FROM annonces A LEFT JOIN categories C ON C.id = A.id_categorie WHERE A.titre LIKE "%'.$q.'%" OR C.nom_'.$sql_lang.' LIKE "%'.$categorie.'%" OR A.ville LIKE "%'.$villes.'%" ORDER BY created_date DESC;
MAIS ça se répercute sur notre fonction get annonces alors qu'elle marche:
function getAnnnonces(){ global $bdd; $sql_lang = (!empty(($_SESSION['lang']) && in_array($_SESSION['lang'], ['fr','en','es']) ))? $_SESSION['lang'] : 'fr'; $sql = ' SELECT A.* ,C.nom_'.$sql_lang.' AS CATEGORIE FROM annonces A LEFT JOIN categories C ON C.id = A.id_categorie ORDER BY A.created_date DESC'; try { $req = $bdd->prepare($sql); $req->execute(); $res = $req->fetchAll(PDO::FETCH_ASSOC); } catch (Exception $e) {
jordane45
Messages postés
38270
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 novembre 2024
4 695
14 déc. 2021 à 20:33
14 déc. 2021 à 20:33
Quelle requête SQL as tu testé dans phpmyadmin ( après y avoir remplacé les variables php par de vraies valeurs ???? )
Tu ne m'as toujours pas montré le résultat ...
Comprends tu ce que j'écrit au moins ?
Tu ne m'as toujours pas montré le résultat ...
Comprends tu ce que j'écrit au moins ?
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
14 déc. 2021 à 20:46
14 déc. 2021 à 20:46
La requête:
Voici le résultat si on remplace les variables
J'ai appris plein de truc grâce à toi, et je continue à le faire ;)
SELECT A.* ,C.id, C.nom_fr FROM annonces A LEFT JOIN categories C ON C.id = A.id_categorie WHERE A.titre LIKE "%'.vendre.'%" OR nom_fr LIKE "%'.1.'%" OR A.ville LIKE "%'.no.'%" ORDER BY created_date DESC
Voici le résultat si on remplace les variables
J'ai appris plein de truc grâce à toi, et je continue à le faire ;)
jordane45
Messages postés
38270
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 novembre 2024
4 695
14 déc. 2021 à 20:48
14 déc. 2021 à 20:48
Tu y es presque ..
Pour que ta requête soit valide il faut l'écrire comme ceci
Et avec ça ( tu remarques que nom_fr utilises bien le "q" (ici vendre" ) pour la recherche .. et non son ID ..
Pour que ta requête soit valide il faut l'écrire comme ceci
SELECT A.* ,C.id, C.nom_fr FROM annonces A LEFT JOIN categories C ON C.id = A.id_categorie WHERE A.titre LIKE "%vendre%" OR nom_fr LIKE "%vendre%" OR A.ville LIKE "%no%" ORDER BY created_date DESC
Et avec ça ( tu remarques que nom_fr utilises bien le "q" (ici vendre" ) pour la recherche .. et non son ID ..
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
Modifié le 14 déc. 2021 à 21:10
Modifié le 14 déc. 2021 à 21:10
Oui, j'ai vu. mais on besoin que pour <select de categorie ça recherche l'id (surtout s'il y a des langue)
De plus on a besoin d'un alias pour nom_$sql_lang du genre CATEGORIE afin de faire:
"%LIKE $categorie%". Un utilisateur peut choisir une caégorie sans saisir du texte dans la barre de recherche.
De plus on a besoin d'un alias pour nom_$sql_lang du genre CATEGORIE afin de faire:
CATEGORIE LIKE "%vendre%"
jordane45
Messages postés
38270
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 novembre 2024
4 695
14 déc. 2021 à 21:41
14 déc. 2021 à 21:41
Si dans ton formulaire de recherche que tu ne nous as pas montré au passage... Tu as une liste déroulante contenant la liste de tes catégories il faut bien rechercher sur son id et donc par o par rapport au champ id_categorie de ta table annonce et en aucun cas sur son libellé tel que tu as essayé de le faire
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
Modifié le 15 déc. 2021 à 15:19
Modifié le 15 déc. 2021 à 15:19
Es--ce que a veut dire de passer en méthode POST, on fait
Et par la suite dans notre liste déroulante à laquelle on attribue une variable qui sera aussi égale à
Et à la fin on fait comme ça:
En poste on peut récupérer les images, car en GET, aucune image n'est téléchargée
$id_categorie= trim($_POST['categorie']);
Et par la suite dans notre liste déroulante à laquelle on attribue une variable qui sera aussi égale à
($_POST['categorie']).
Et à la fin on fait comme ça:
<?php $q = !empty($_GET['q']) ? trim($_GET['q']) : null; $variable à donner= trim($_POST['categorie']);; $villes= ($_POST['ville']) ; if($q || $variable à donner || $villes) { $search= recherche($q, $variable à donner, $villes); if(!empty($search)){ // boucle pour afficher tes résultats.. foreach($search as $rec){ echo' <div class="annoncepub">'; //etc....
En poste on peut récupérer les images, car en GET, aucune image n'est téléchargée
jordane45
Messages postés
38270
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 novembre 2024
4 695
15 déc. 2021 à 16:04
15 déc. 2021 à 16:04
POST ou GET sont des méthodes de transmission des données ....
Soit tu envoies les données de ton formulaire en POST ... soit tu les envoies en GET
Pour le reste .. je n'ai rien compris à ton charabia .....
En plus.. que vient faire ici l'envoie de photo dans un formulaire de recherche ???
Pourquoi essayes tu de mélanger du POST et du GET dans la récupération des "variables" ?
Essaye de clarifier les choses dans ta tête avant de revenir nous poser des questions.. car pour l'instant on ne comprend pas ce que tu veux faire ni sur quoi tu bloques... (hormis le fait qu'une formation sur les bases du langages ne serait pas négligeable te concernant... mais ce n'est pas notre rôle...)
Soit tu envoies les données de ton formulaire en POST ... soit tu les envoies en GET
Pour le reste .. je n'ai rien compris à ton charabia .....
En plus.. que vient faire ici l'envoie de photo dans un formulaire de recherche ???
Pourquoi essayes tu de mélanger du POST et du GET dans la récupération des "variables" ?
Essaye de clarifier les choses dans ta tête avant de revenir nous poser des questions.. car pour l'instant on ne comprend pas ce que tu veux faire ni sur quoi tu bloques... (hormis le fait qu'une formation sur les bases du langages ne serait pas négligeable te concernant... mais ce n'est pas notre rôle...)
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
Modifié le 15 déc. 2021 à 17:22
Modifié le 15 déc. 2021 à 17:22
Je pense être plus clair cette fois-ci. En dehors de l'aspect esthétique.
D'une part nous avons un formulaire dans la page formulaire:
Dont le code que tu connais bien pour INSERER EN BDD est le suivant:
nb: $id_categorie= trim($_POST['categorie']); on n'a aucun problème ici. Le formulaire est soumis correctement
La page du formulaire en POST:
ET D'AUTRE PART Là où nous avons es ERREURS.
Maintenant la page d'accueil en photo, dans laquelle nous avons une barre de recherche où l'utilisateur peut CHOISIR la catégorie sans taper du texte:
Son code dans la page accueil:
La commande qui permet d'afficher les résultats de la recherche. ET DONC ON PEUT PAS FAIRE LA RECHERCHE A PARTIR DE LA LISTE DEROULANTE EN NOUS BASANT SUR L'ID DE LA CATEGORIE : NOTRE PROBLEME.
D'une part nous avons un formulaire dans la page formulaire:
Dont le code que tu connais bien pour INSERER EN BDD est le suivant:
nb: $id_categorie= trim($_POST['categorie']); on n'a aucun problème ici. Le formulaire est soumis correctement
<?php function savePhoto($id_annonce,$file,$location){ if(empty($file)){ echo "<br> ERREUR : Aucune image n'est envoyées pour l'upload"; var_dump($_FILES); // juste pour le debug... return false; //pas d'image } $photo = $file['name']; $photo_tmp = $file['tmp_name']; if(move_uploaded_file($photo_tmp,$location.$photo)){ return insertPhoto($id_annonce,$location.$photo); // tu peux retirer le location si tu ne veux que le nom de l'image et pas son chemin complet } } function insertPhoto($id_annonce,$photo){ global $bdd; $sql= "INSERT INTO images_annonces(id_annonce,filepath) VALUES(?,?)"; $datas= array($id_annonce,$photo); //Execution de la requete try{ //Execution pour la deuxième table $requete2 = $bdd -> prepare($sql) ; return $requete2->execute($datas) ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } } //Requete 1 function insertAnnonce($created_by_member,$id_categorie,$pseudo,$telephone,$email,$villes,$titre,$description,$prix){ global $bdd; $sql= "INSERT INTO annonces(created_by_member,id_categorie,pseudo,telephone,email,ville,titre,description,prix) VALUES(?,?,?,?,?,?,?,?,?)"; $datas= array($created_by_member,$id_categorie,$pseudo,$telephone,$email,$villes,$titre,$description,$prix); //Execution de la requete try{ //requete pour la première tabels $requete = $bdd->prepare($sql); $requete->execute($datas); return $bdd->LastInsertId(); }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); return false; } } function getSouscategories(){ global $bdd; $sql_lang = (!empty(($_SESSION['lang']) && in_array($_SESSION['lang'], ['fr','en','es']) ))? $_SESSION['lang'] : 'fr'; // on s'assure que la langue est correcte $sql= "SELECT id , nom_".$sql_lang." AS nom FROM categories ORDER BY id "; try{ $req = $bdd->prepare($sql); $req->execute(); $res = $req->fetchAll(PDO::FETCH_ASSOC); }catch(Exception $e){ echo "Erreur dans la requête " . $sql; $res = false; } return $res; } //----------------------------------------------------------// // CONSTANTES ou variables pour le paramétrage.. //----------------------------------------------------------// $location= "pictures/"; //----------------------------------------------------------// // Traitement du submit //----------------------------------------------------------// if(isset($_POST['formannonce'])) { if(isset($_SESSION['id']) && !empty($_SESSION['id'])){ $created_by_member=1; $pseudo=$_SESSION['pseudo']; $telephone= $_SESSION['telephone']; $email= $_SESSION['email']; } else { $pseudo = trim($_POST['pseudo']); $telephone= intval($_POST['telephone']); $email = trim($_POST['email']); $created_by_member=0; } $villes= trim($_POST['ville']); $titre = trim($_POST['titre']); $prix= intval($_POST['prix']); $description= trim($_POST['description']); $id_categorie= trim($_POST['categorie']); $img1 = ($_FILES['img1']); $img2 = ($_FILES['img2']); $img3 = ($_FILES['img3']); $img4 = ($_FILES['img4']); $img5 = ($_FILES['img5']); //on créé l'annonce $id_annonce = insertAnnonce($created_by_member,$id_categorie,$pseudo,$telephone,$email,$villes,$titre,$description,$prix); // si on a bien un id_product, on upload et insère les images if(!empty($id_annonce)){ savePhoto($id_annonce,$img1,$location); savePhoto($id_annonce,$img2,$location); savePhoto($id_annonce,$img3,$location); savePhoto($id_annonce,$img4,$location); savePhoto($id_annonce,$img5,$location); echo"<h1 style= 'color: green; background-color: white; margin-top: 120px;'>Votre annonce a bien été déposée et sera publiée bientôt. </h1>"; }else{ echo "Erreur : Aucun ID n'a été créé !"; } } ?>
La page du formulaire en POST:
div class= "pub"> <form action="" method="POST" enctype="multipart/form-data"> <fieldset> <p><?php echo $lang['dva'];?></p> <?php if(isset($_SESSION['id'])){ ?> <label for= "pseudo"><?php echo $_SESSION['pseudo'];?></label> <?php } else {?> <label for= "nompseudo"><?php echo $lang['pseudo'];?></label> <input type="text" id="pseudo" name="pseudo"> <?php } ?> <br> <br> <label for="categorieannonce"><?php echo $lang['ca'];?></label> <select name="categorie"> <option value="" disabled selected><?php echo $lang['categorie'];?></option> <?php foreach($categories as $C){ echo "<option value='".$C['id']."'>".$C['nom']."</option>"; } ?> </select> </select> <br> <br> <label for="ville"><?php echo $lang['ville'];?></label> <select name="ville"> <option value="" disabled selected><?php echo $lang['ville'];?></option> <option value= "1"> ville 1</option> <option value= "2"> ville 2</option> </select> <br> <br> <label for= "titre"><?php echo $lang['tva'];?></label> <input type="text" id="titre" name="titre"> <br> <br> <label for= "description"><?php echo $lang['description'];?></label> <textarea id="description" name="description" rows="4" cols="50"> </textarea> <br> <br> <br> <br> <label for= "prix"><?php echo $lang['prix'];?></label> <input type="number" id="prix" name="prix"> <br> <br> <?php if(isset($_SESSION['id'])){ ?> <label for= "telephone"><?php echo $_SESSION['telephone'];?></label><br><br> <?php } else {?> <label for="telephone"><?php echo $lang['phoneclient'];?></label><br><br> <input type="tel" id="phone" name="telephone"> <br> <br> <?php } ?> <?php if(isset($_SESSION['id'])){ ?> <label for= "email"><?php echo $_SESSION['email'];?> </label> <br><br> <?php } else {?> <label for= "email"><?php echo $lang['emailclient'];?> </label> <input type="email" id="email" name="email" /> <br> <br> <?php } ?> <label for= "image"><?php echo $lang['photo1'];?></label> <input type="file" id="img1" name="img1" accept="image/png, image/jpeg, image/jpg" > <br><br> <label for= "image"><?php echo $lang['photo2'];?></label> <input type="file" id="img2" name="img2" accept="image/png, image/jpeg, image/jpg"><br><br> <label for= "image"><?php echo $lang['photo3'];?></label> <input type="file" id="img3" name="img3" accept="image/png, image/jpeg, image/jpg"> <br><br> <label for= "image"><?php echo $lang['photo4'];?></label> <input type="file" id="img4" name="img4" accept="image/png, image/jpeg, image/jpg"> <br><br> <label for= "image"><?php echo $lang['photo5'];?></label> <input type="file" id="img5" name="img5" accept="image/png, image/jpeg, image/jpg"> <br><br> <br> <br> <input type="submit" id='submit' name="formannonce" value='<?php echo $lang['valider'];?>' > </form> </fieldset> </div> </body> </html>
ET D'AUTRE PART Là où nous avons es ERREURS.
Maintenant la page d'accueil en photo, dans laquelle nous avons une barre de recherche où l'utilisateur peut CHOISIR la catégorie sans taper du texte:
Son code dans la page accueil:
<div id="searchbar"> <form method="GET"> <h1><?php echo $lang['qrv'];?></h1> <select name="categorie"> <option value="" disabled selected><?php echo $lang['categorie'];?></option> <?php foreach($categories as $C){ echo "<option value='".$C['id']."'>".$C['nom']."</option>"; } ?> </select> <input type="search" name="q" placeholder=<?php echo $lang['placeholder'];?>/> <select name="villes"> <option value="" disabled selected><?php echo $lang['ville'];?></option> <option value= "1t"> ville 1</option> <option value= "2"> ville 2</option> </select> <input type="submit" value="<?php echo $lang['rechercher'];?>" /> </form> </div>
La commande qui permet d'afficher les résultats de la recherche. ET DONC ON PEUT PAS FAIRE LA RECHERCHE A PARTIR DE LA LISTE DEROULANTE EN NOUS BASANT SUR L'ID DE LA CATEGORIE : NOTRE PROBLEME.
function getImagesAnnonces(){ global $bdd; $sql = "SELECT id_annonce,filepath as IMG FROM images_annonces ORDER BY id_annonce DESC"; try { $req = $bdd->prepare($sql); $req->execute(); $res = $req->fetchAll(PDO::FETCH_GROUP); } catch (Exception $e) { echo "Erreur dans la requête " . $sql; } // le temps des tests pour voir le résultat return $res; } function getSearch($q, $categorie, $villes){ global $bdd; $sql_lang = (!empty(($_SESSION['lang']) && in_array($_SESSION['lang'], ['fr','en','es']) ))? $_SESSION['lang'] : 'fr'; $res = []; $sql = 'SELECT A.* ,C.id, C.nom_'.$sql_lang.' AS CATEGORIE FROM annonces A LEFT JOIN categories C ON C.id = A.id_categorie WHERE (A.titre LIKE "%'.$q.'%" AND CATEGORIE LIKE "%'.$categorie.'%" AND A.ville LIKE "%'.$villes.'%" ) ORDER BY created_date DESC'; try { $req = $bdd->prepare($sql); $req->execute(); $res = $req->fetchAll(PDO::FETCH_ASSOC); } catch (Exception $e) { echo "Erreur dans la requête " . $sql; } // le temps des tests pour voir le résultat return $res; } function recherche($q, $categorie, $villes){ $q = !empty($_GET['q']) ? trim($_GET['q']) : null; $categorie= isset($_GET['CATEGORIE'])? trim($_GET['CATEGORIE']) : null; $villes= isset($_GET['villes'])? trim($_GET['villes']) : null ; $annonces =getSearch($q, $categorie, $villes); $images = getImagesAnnonces(); $res = []; foreach ($annonces as $R) { $res[$R['id']] = $R; $imgs = !empty($images[$R['id']]) ? $images[$R['id']] : NULL; if(!empty($imgs)){ foreach($imgs as $I){ $res[$R['id']]['images'][] = !empty($I['IMG']) ? $I['IMG'] : null; } }else{ $res[$R['id']]['images'] = null; } } return $res; }
<?php $q = !empty($_GET['q']) ? trim($_GET['q']) : null; $categorie= isset($_GET['CATEGORIE'])? trim($_GET['CATEGORIE']) : null; $villes= isset($_GET['villes'])? trim($_GET['villes']) : null ; if($q || $categorie || $villes) { $search= recherche($q, $categorie, $villes); if(!empty($search)){ // boucle pour afficher tes résultats.. foreach($search as $rec){ echo' <div class="annoncepub">'; $images = !empty($rec['images']) ? $rec['images'] : ['/no_image.png']; // array if (!empty($images)) { //boucle sur les images echo'<div class="container">'; echo ' <div class="slider" >'; foreach ($images as $img) { echo '<img class ="active" style="width:90px; height:90px;" src="' . $img . '">'; } echo "</div>"; // fin div slider . echo '<div class="cont-btn" >'; echo ' <div class="btn-nav left" > <'; echo " </div>"; echo ' <div class="btn-nav right" > >'; echo " </div>"; echo "</div>"; echo "</div>"; // fin div container } echo "<span class='category'>" .$rec['CATEGORIE'] . "</span>"; echo "<span class='title'>" .$rec['titre'] . "</span>"; echo "<span class='comment'>" .$rec['description'] . "</span>"; echo "<span class='price'>" .$rec['prix'] . "</span>"; echo "<span class='date'>" . $rec['created_date'] . "</span>"; echo "</div>"; // fin div annoncepubs } }else{ echo "Aucun résultat pour votre recherche..."; } } ?>
jordane45
Messages postés
38270
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 novembre 2024
4 695
15 déc. 2021 à 17:24
15 déc. 2021 à 17:24
Donc,
Ton champ dans le formulaire, pour les catégories se nomme categorie
Dans, dans ta variable GET, tu dois utiliser le "name" de ton champ.
Ensuite,
Pour ta recherche, tu dois cibler l'id de la catégorie ET un like sur le "q" ET l'id de la ville
Pour la ville, j'ai considéré (vu que ta liste contient des valeurs numériques) que comme pour les catégorie, tu enregistres bien l' ID dans la table annonce et pas le "nom" de la ville au format textuel.
Ton champ dans le formulaire, pour les catégories se nomme categorie
<select name="categorie">
Dans, dans ta variable GET, tu dois utiliser le "name" de ton champ.
Ensuite,
Pour ta recherche, tu dois cibler l'id de la catégorie ET un like sur le "q" ET l'id de la ville
$sql = 'SELECT A.* ,C.id, C.nom_'.$sql_lang.' AS CATEGORIE FROM annonces A LEFT JOIN categories C ON C.id = A.id_categorie WHERE A.titre LIKE "%'.$q.'%" AND A.id_categorie = "'.$categorie.'" AND A.ville = "'.$villes.'" ORDER BY created_date DESC';
Pour la ville, j'ai considéré (vu que ta liste contient des valeurs numériques) que comme pour les catégorie, tu enregistres bien l' ID dans la table annonce et pas le "nom" de la ville au format textuel.
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
15 déc. 2021 à 20:13
15 déc. 2021 à 20:13
On y est presque:
1-quand on choisit dans notre liste une catégorie et qu'on valide, elle ne les affiche pas toutes. Exemple: on recherche une maison, c'est la dernière maison publiée qui va apparaitre dans notre recherche.
2-quand on choisit dans notre liste une catégorie et qu'on valide, c'est l'image d'une autre annonce qui apparait. Voir photo:
3-quand on saisit un texte dans la barre de recherche, nous avons toujours: AUCUN RESULTAT...
le q ne marche pas.
Voici le code:
Page des commandes:
Page d'affichage.
1-quand on choisit dans notre liste une catégorie et qu'on valide, elle ne les affiche pas toutes. Exemple: on recherche une maison, c'est la dernière maison publiée qui va apparaitre dans notre recherche.
2-quand on choisit dans notre liste une catégorie et qu'on valide, c'est l'image d'une autre annonce qui apparait. Voir photo:
3-quand on saisit un texte dans la barre de recherche, nous avons toujours: AUCUN RESULTAT...
le q ne marche pas.
Voici le code:
Page des commandes:
function getSearch($q, $categorie, $villes){ global $bdd; $sql_lang = (!empty(($_SESSION['lang']) && in_array($_SESSION['lang'], ['fr','en','es']) ))? $_SESSION['lang'] : 'fr'; $res = []; $sql = 'SELECT A.* ,C.id, C.nom_'.$sql_lang.' AS CATEGORIE FROM annonces A LEFT JOIN categories C ON C.id = A.id_categorie WHERE A.titre LIKE "%'.$q.'%" AND A.id_categorie = "'.$categorie.'" AND A.ville = "'.$villes.'" ORDER BY created_date DESC'; try { $req = $bdd->prepare($sql); $req->execute(); $res = $req->fetchAll(PDO::FETCH_ASSOC); } catch (Exception $e) { echo "Erreur dans la requête " . $sql; } // le temps des tests pour voir le résultat return $res; } function recherche($q, $categorie, $villes){ $q = !empty($_GET['q']) ? trim($_GET['q']) : null; $categorie= isset($_GET['categorie'])? trim($_GET['categorie']) : null; $villes= isset($_GET['villes'])? trim($_GET['villes']) : null ; $annonces =getSearch($q, $categorie, $villes); $images = getImagesAnnonces(); $res = []; foreach ($annonces as $R) { $res[$R['id']] = $R; $imgs = !empty($images[$R['id']]) ? $images[$R['id']] : NULL; if(!empty($imgs)){ foreach($imgs as $I){ $res[$R['id']]['images'][] = !empty($I['IMG']) ? $I['IMG'] : null; } }else{ $res[$R['id']]['images'] = null; } } return $res; }
Page d'affichage.
<?php $q = !empty($_GET['q']) ? trim($_GET['q']) : null; $categorie= isset($_GET['categorie'])? trim($_GET['categorie']) : null; $villes= isset($_GET['villes'])? trim($_GET['villes']) : null ; if($q || $categorie || $villes) { $search= recherche($q, $categorie, $villes); if(!empty($search)){ // boucle pour afficher tes résultats.. foreach($search as $rec){ echo' <div class="annoncepub">'; $images = !empty($rec['images']) ? $rec['images'] : ['/no_image.png']; // array if (!empty($images)) { //boucle sur les images echo'<div class="container">'; echo ' <div class="slider" >'; foreach ($images as $img) { echo '<img class ="active" style="width:90px; height:90px;" src="' . $img . '">'; } echo "</div>"; // fin div slider . echo '<div class="cont-btn" >'; echo ' <div class="btn-nav left" > <'; echo " </div>"; echo ' <div class="btn-nav right" > >'; echo " </div>"; echo "</div>"; echo "</div>"; // fin div container } echo "<span class='category'>" .$rec['CATEGORIE'] . "</span>"; echo "<span class='title'>" .$rec['titre'] . "</span>"; echo "<span class='comment'>" .$rec['description'] . "</span>"; echo "<span class='price'>" .$rec['prix'] . "</span>"; echo "<span class='date'>" . $rec['created_date'] . "</span>"; echo "</div>"; // fin div annoncepubs } }else{ echo "Aucun résultat pour votre recherche..."; } } ?>
jordane45
Messages postés
38270
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 novembre 2024
4 695
15 déc. 2021 à 20:58
15 déc. 2021 à 20:58
Fais un echo de la variable $sql
Et une fois que tu auras récupéré la requête qui est généré, tu est là dans phpmyadmin et dis-nous si tu obtiens des résultats
Et une fois que tu auras récupéré la requête qui est généré, tu est là dans phpmyadmin et dis-nous si tu obtiens des résultats
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
15 déc. 2021 à 21:18
15 déc. 2021 à 21:18
Si tu veux dire ajouter la requête dans php myadmin pour voir ce que ça donne, voilà:
Sinon où faudrait-il echo $sql?
SELECT A.* ,C.id, C.nom_fr FROM annonces A LEFT JOIN categories C ON C.id = A.id_categorie WHERE A.titre LIKE "%'maison'%" AND A.id_categorie = 1 AND A.ville = 1 ORDER BY created_date DESC
Sinon où faudrait-il echo $sql?
jordane45
Messages postés
38270
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 novembre 2024
4 695
15 déc. 2021 à 21:48
15 déc. 2021 à 21:48
Là tu n'as pas fait le echo de la requête.
Tu as juste essayé de remplacer les variables php dedans (mais en faisant des erreurs ... )
Donc, commence par faire ça
lances ta recherche, copie le résultat du echo dans phpmyadmin et regarde si ça retourne des résultats....
Tu as juste essayé de remplacer les variables php dedans (mais en faisant des erreurs ... )
Donc, commence par faire ça
$sql = 'SELECT A.* ,C.id, C.nom_'.$sql_lang.' AS CATEGORIE FROM annonces A LEFT JOIN categories C ON C.id = A.id_categorie WHERE A.titre LIKE "%'.$q.'%" AND A.id_categorie = "'.$categorie.'" AND A.ville = "'.$villes.'" ORDER BY created_date DESC'; echo $sql; try { $req = $bdd->prepare($sql); $req->execute(); $res = $req->fetchAll(PDO::FETCH_ASSOC); } catch (Exception $e) { echo "Erreur dans la requête " . $sql; }
lances ta recherche, copie le résultat du echo dans phpmyadmin et regarde si ça retourne des résultats....
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
Modifié le 15 déc. 2021 à 22:13
Modifié le 15 déc. 2021 à 22:13
Quand on choisit une catégorie, ça nous affiche tous les résultats en bdd.
Ce que a donne en bdd:
Mais 1 seul résultat sur la page d'affichage. Ce que a donne sur la page d'affichage:
Pour le q, la requête est correcte, mais rien ne s'affiche en bdd, et "Aucun resultat" dans la page d'affichage.
SELECT A.* ,C.id, C.nom_fr AS CATEGORIE FROM annonces A LEFT JOIN categories C ON C.id = A.id_categorie WHERE A.titre LIKE "%%" AND A.id_categorie = "1" AND A.ville ="" ORDER BY created_date DESC
Ce que a donne en bdd:
Mais 1 seul résultat sur la page d'affichage. Ce que a donne sur la page d'affichage:
Pour le q, la requête est correcte, mais rien ne s'affiche en bdd, et "Aucun resultat" dans la page d'affichage.
jordane45
Messages postés
38270
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 novembre 2024
4 695
15 déc. 2021 à 23:22
15 déc. 2021 à 23:22
Et bien allons-y par étape ...
Fais des var_dump de tes variables dans ta fonction et regarde ce que ça retourne ...
par exemple
En faisant ça, tu devrais constater que la valeur de l'ID qui est retourné .. est celui de la catégorie et non celui de l'annonce...
En fait, dans la capture écran que tu nous montres.. on voit bien que tu as deux fois un champ portant le même nom .. et ça .. php ne sait pas faire la différence...
Il faut que tu retires le
Mais bon, la valeur de ce champ se trouve déjà dans la table annonce : A.id_categorie .. ça ne sert donc à rien de le remettre....
Fais des var_dump de tes variables dans ta fonction et regarde ce que ça retourne ...
par exemple
function recherche($q, $categorie, $villes){ /** INUTILE PUISQUE TU LES PASSE EN PARAMETRES DE TA FONCTION !!!! $q = !empty($_GET['q']) ? trim($_GET['q']) : null; $categorie= isset($_GET['categorie'])? trim($_GET['categorie']) : null; $villes= isset($_GET['villes'])? trim($_GET['villes']) : null ; */ $annonces = getSearch($q, $categorie, $villes); $images = getImagesAnnonces(); //le temps des tests : echo "<pre> Annonces : <br>" ; var_dump($annonces); echo "<br> Images : <br>" ; var_dump($images); echo "</pre>"; $res = []; foreach ($annonces as $R) { $res[$R['id']] = $R; $imgs = !empty($images[$R['id']]) ? $images[$R['id']] : NULL; if(!empty($imgs)){ foreach($imgs as $I){ $res[$R['id']]['images'][] = !empty($I['IMG']) ? $I['IMG'] : null; } }else{ $res[$R['id']]['images'] = null; } } //le temps des tests : echo "<pre> res: <br>" ; var_dump($res); echo "</pre>"; return $res; }
En faisant ça, tu devrais constater que la valeur de l'ID qui est retourné .. est celui de la catégorie et non celui de l'annonce...
En fait, dans la capture écran que tu nous montres.. on voit bien que tu as deux fois un champ portant le même nom .. et ça .. php ne sait pas faire la différence...
Il faut que tu retires le
,C.idde ta requête ... ou que tu lui mettes un alias.
Mais bon, la valeur de ce champ se trouve déjà dans la table annonce : A.id_categorie .. ça ne sert donc à rien de le remettre....
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
Modifié le 15 déc. 2021 à 23:38
Modifié le 15 déc. 2021 à 23:38
En enlevant l' id comme tu as dit, ça marche bien. Les annonces d'une catégorie choisie s'affichent.
en var dump:
Mais quand on saisi du texte sur la barre de recherche, on n'a rien.
Résultat du var_dump quand on saisi du texte:
en var dump:
C:\wamp64\www\Projetsite\cmdaffichage.php:98: array (size=1) 0 => array (size=12) 'id' => string '3' (length=1) 'created_by_member' => string '0' (length=1) 'id_categorie' => string '10' (length=2) 'pseudo' => string 'essai3' (length=6) 'telephone' => string '22368' (length=5) 'email' => string 'essai3@g.fr' (length=11) 'ville' => string '' (length=0) 'titre' => string 'Vélos pour vendre' (length=18) 'description' => string 'Appelez.' (length=8) 'prix' => string '415' (length=3) 'created_date' => string '2021-12-15' (length=10) 'CATEGORIE' => string 'velos' (length=5) Images : C:\wamp64\www\Projetsite\cmdaffichage.php:100: array (size=5) 6 => array (size=1) 0 => array (size=1) 'IMG' => string 'pictures/maison.jpg' (length=19) 4 => array (size=1) 0 => array (size=1) 'IMG' => string 'pictures/maison.jpg' (length=19) 3 => array (size=2) 0 => array (size=1) 'IMG' => string 'pictures/velo1.jpg' (length=18) 1 => array (size=1) 'IMG' => string 'pictures/velo2.jpg' (length=18) 2 => array (size=1) 0 => array (size=1) 'IMG' => string 'pictures/moto2.jpg' (length=18) 1 => array (size=1) 0 => array (size=1) 'IMG' => string 'pictures/maison5.jpg' (length=20) res: C:\wamp64\www\Projetsite\cmdaffichage.php:120: array (size=1) 3 => array (size=13) 'id' => string '3' (length=1) 'created_by_member' => string '0' (length=1) 'id_categorie' => string '10' (length=2) 'pseudo' => string 'essai3' (length=6) 'telephone' => string '22368' (length=5) 'email' => string 'essai3@g.fr' (length=11) 'ville' => string '' (length=0) 'titre' => string 'Vélos pour vendre' (length=18) 'description' => string 'Appelez.' (length=8) 'prix' => string '415' (length=3) 'created_date' => string '2021-12-15' (length=10) 'CATEGORIE' => string 'velos' (length=5) 'images' => array (size=2) 0 => string 'pictures/velo1.jpg' (length=18) 1 => string 'pictures/velo2.jpg' (length=18)
Mais quand on saisi du texte sur la barre de recherche, on n'a rien.
Résultat du var_dump quand on saisi du texte:
C:\wamp64\www\Projetsite\cmdaffichage.php:98: array (size=0) empty Images : C:\wamp64\www\Projetsite\cmdaffichage.php:100: array (size=5) 6 => array (size=1) 0 => array (size=1) 'IMG' => string 'pictures/maison.jpg' (length=19) 4 => array (size=1) 0 => array (size=1) 'IMG' => string 'pictures/maison.jpg' (length=19) 3 => array (size=2) 0 => array (size=1) 'IMG' => string 'pictures/velo1.jpg' (length=18) 1 => array (size=1) 'IMG' => string 'pictures/velo2.jpg' (length=18) 2 => array (size=1) 0 => array (size=1) 'IMG' => string 'pictures/moto2.jpg' (length=18) 1 => array (size=1) 0 => array (size=1) 'IMG' => string 'pictures/maison5.jpg' (length=20) res: C:\wamp64\www\Projetsite\cmdaffichage.php:120: array (size=0) empty Aucun résultat pour votre recherche...
jordane45
Messages postés
38270
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 novembre 2024
4 695
15 déc. 2021 à 23:45
15 déc. 2021 à 23:45
Refais un écho de la variable SQL et teste la dans phpmyadmin...
Combien de fois vais-je devoir te le dire ?
Combien de fois vais-je devoir te le dire ?
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
15 déc. 2021 à 23:53
15 déc. 2021 à 23:53
En testant sur phpmyadmin:
Nous obtenons un bdd vide:
MySQL a retourné un résultat vide (c'est à dire aucune ligne). (traitement en 0,0328 seconde(s).)
SELECT A.* ,C.nom_fr AS CATEGORIE FROM annonces A LEFT JOIN categories C ON C.id = A.id_categorie WHERE A.titre LIKE "%maison%" AND A.id_categorie = "" AND A.ville LIKE "" ORDER BY created_date DESC
Nous obtenons un bdd vide:
MySQL a retourné un résultat vide (c'est à dire aucune ligne). (traitement en 0,0328 seconde(s).)
jordane45
Messages postés
38270
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 novembre 2024
4 695
16 déc. 2021 à 00:00
16 déc. 2021 à 00:00
Ben oui visiblement tu n'as sélectionner aucune catégorie ni aucune ville..
Il faudrait construire ta requête SQL en fonction des critères de recherche que tu envoies ou non.
En gros, le mettre la condition sur la catégorie que si ta variable n'est pas vide.
Idem pour la ville ou pour le texte
Il faudrait construire ta requête SQL en fonction des critères de recherche que tu envoies ou non.
En gros, le mettre la condition sur la catégorie que si ta variable n'est pas vide.
Idem pour la ville ou pour le texte
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
16 déc. 2021 à 15:44
16 déc. 2021 à 15:44
Bonjour,
Je pense que je l'ai bien fait dans la page d'affichage
Où faut-il inclure un if dans une requête sql contenant des left join, des where, AND... ?
Je pense que je l'ai bien fait dans la page d'affichage
$q = !empty($_GET['q']) ? trim($_GET['q']) : null; $categorie= !empty($_GET['categorie'])? trim($_GET['categorie']) : null; $villes= !empty($_GET['villes'])? trim($_GET['villes']) : null ; if($q || $categorie || $villes) { $search= recherche($q, $categorie, $villes);
Où faut-il inclure un if dans une requête sql contenant des left join, des where, AND... ?
jordane45
Messages postés
38270
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 novembre 2024
4 695
Modifié le 16 déc. 2021 à 17:10
Modifié le 16 déc. 2021 à 17:10
je te parle de la requête sql ( autrmeent dit .. le contenu de ta variable $sql )
Et oui, il va falloir ajouter des IF ..
par exemple
Et oui, il va falloir ajouter des IF ..
par exemple
$sql = 'SELECT A.* ,C.id, C.nom_'.$sql_lang.' AS CATEGORIE FROM annonces A LEFT JOIN categories C ON C.id = A.id_categorie WHERE 1 = 1 '; //pour le ttire if(!empty($q)){ $sql .= " AND A.titre LIKE "%'.$q.'%" "; } // Faire pareil pour les deux autres condtitions //--- //on fini par ajouter le order by $sql .= " ORDER BY created_date DESC" ;
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
16 déc. 2021 à 19:34
16 déc. 2021 à 19:34
ça m'affiche les erreurs suivantes:
Warning: A non-numeric value encountered in C
Fatal error: Uncaught DivisionByZeroError: Modulo by zero in C
Warning: A non-numeric value encountered in C
Fatal error: Uncaught DivisionByZeroError: Modulo by zero in C
$sql = "SELECT A.* ,C.id, C.nom_'.$sql_lang.' AS CATEGORIE FROM annonces A LEFT JOIN categories C ON C.id = A.id_categorie WHERE 1 = 1 "; //pour le ttire if(!empty($q)){ $sql .= " AND A.titre LIKE "%'.$q.'%" "; } if(!empty($categorie)){ $sql .= " AND A.id_categorie = '.$categorie.' "; } if(!empty($villes)){ $sql .= " AND A.ville= '.$villes.' "; } //on fini par ajouter le order by $sql .= " ORDER BY created_date DESC" ;
jordane45
Messages postés
38270
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 novembre 2024
4 695
Modifié le 16 déc. 2021 à 20:45
Modifié le 16 déc. 2021 à 20:45
J'ai fait une inversion de guillemets
Et toi tu t'es planté sur la première
$sql .= " AND A.titre LIKE '%".$q."%"' ";
Et toi tu t'es planté sur la première
$sql = 'SELECT A.* ,C.id, C.nom_'.$sql_lang.' AS CATEGORIE FROM annonces A LEFT JOIN categories C ON C.id = A.id_categorie WHERE 1 = 1 ';
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
16 déc. 2021 à 21:32
16 déc. 2021 à 21:32
Tout marche bien. Peut-on en saisissant du texte dans la barre de recherche en anglais par exemple, et que ce mot n'a pas une annonce en anglais, que la recherche soit effectuée grâce à la catégorie?
Exemple, je tape sur la barre de recherche "cars", sauf que que les annonces de celles-ci sont en français dans la catégorie voitures. Est-ce possible de les faire apparaitre, si on a nom_sql_lang AS CATEGORIE?
Exemple, je tape sur la barre de recherche "cars", sauf que que les annonces de celles-ci sont en français dans la catégorie voitures. Est-ce possible de les faire apparaitre, si on a nom_sql_lang AS CATEGORIE?
jordane45
Messages postés
38270
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 novembre 2024
4 695
Modifié le 16 déc. 2021 à 22:23
Modifié le 16 déc. 2021 à 22:23
Je ne suis pas sûr d'avoir compris ce que tu as essayé d'écrire.....
Mais j'ai l'impression que tu aimerais pouvoir rechercher également par rapport au nom de la catégorie.
EDIT : Ajout de parenthèse pour prioriser si jamais tu as les autres condtions dans ta requete
Mais j'ai l'impression que tu aimerais pouvoir rechercher également par rapport au nom de la catégorie.
$sql .= " AND ( A.titre LIKE '%".$q."%' OR C.nom_".$sql_lang." LIKE '%".$q."% )"' ;
EDIT : Ajout de parenthèse pour prioriser si jamais tu as les autres condtions dans ta requete
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
16 déc. 2021 à 22:08
16 déc. 2021 à 22:08
Excellent!!!! Pas de qualificatif :) Merci pour tout Super Jordane, et surtout pour ta patience :). Bien à toi :)