Des images qui font répéter le nombre de publication
Résolu/Fermé
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
-
Modifié le 8 déc. 2021 à 13:34
jordane45 Messages postés 38441 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 février 2025 - 13 déc. 2021 à 20:54
jordane45 Messages postés 38441 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 février 2025 - 13 déc. 2021 à 20:54
A voir également:
- Des images qui font répéter le nombre de publication
- Des images - Guide
- Supprimer publication facebook - Guide
- Brouillon publication instagram - Guide
- Nombre facile - Télécharger - Outils professionnels
- Comment retrouver une publication sur facebook - Guide
28 réponses
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
10 déc. 2021 à 18:13
10 déc. 2021 à 18:13
Ok, j'ai compris. Cela a marché. Mais il reste la deuxième partie concernant la catégorie: ça vient pas. On a :
De plus le LIKE ne fait pas sortir les mots qui se ressemblent. Par exemple si on tape telephone et que l'utilisateur a écrit téléphone, ça ne passe pas. Y a t-il un moyen dans notre requête de faire:
J'ai fait ainsi pour que ça marche
$categorie= isset($_GET['CATEGORIE'])? trim($_GET['CATEGORIE']) : null;Et comme tu sais on ne peut pas mettre = POST['categorie'] car ça renvoie vers les id ajoutés dans les options values.
De plus le LIKE ne fait pas sortir les mots qui se ressemblent. Par exemple si on tape telephone et que l'utilisateur a écrit téléphone, ça ne passe pas. Y a t-il un moyen dans notre requête de faire:
A.titre LIKE "%'.$q.'%" OR A.titre LIKE "%'.$categorie.'%"comme ça boucle la barre de recherche
J'ai fait ainsi pour que ça marche
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; }:
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
10 déc. 2021 à 19:43
10 déc. 2021 à 19:43
J'ai ça quand je fais un var_dump:
Et ça n'affiche aucun résultat
C:\wamp64\www\Projetsite\accueil.php:162: array (size=2) 'categorie' => string 'voitures' (length=8) 'q' => string '' (length=0)
Et ça n'affiche aucun résultat
jordane45
Messages postés
38441
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 février 2025
4 737
10 déc. 2021 à 21:40
10 déc. 2021 à 21:40
Il y a plusieurs soucis dans ton code.
1 - Ta requête SQL devrait utiliser des OR et non pas des AND
2 - Dans ton formulaire de recherche... tu devrais renvoyer l'id de la catégorie et non son libellé...
Il me semblait qu'on avait déjà abordé cette question et que tu m'avais indiqué avoir "compris" ...
Pour commencer, tu devrais créer une fonction qui te permettrait de lister les catégories disponibles dans ta table
Puis, dans tes formulaires, utiliser cette fonction pour créer ta liste déroulante
par exemple
et quand tu récupéreras les données du formulaire.. c'est bien "categorie" en MINUSCULE que tu devras utiliser
Tu feras donc bien la recherche en te basant sur l'ID de la catégorie... et non son libellé ...
1 - Ta requête SQL devrait utiliser des OR et non pas des AND
2 - Dans ton formulaire de recherche... tu devrais renvoyer l'id de la catégorie et non son libellé...
Il me semblait qu'on avait déjà abordé cette question et que tu m'avais indiqué avoir "compris" ...
Pour commencer, tu devrais créer une fonction qui te permettrait de lister les catégories disponibles dans ta table
function getCategories(){ global $bdd; $sql="SELECT C.id , C.nom FROM categories C ORDER BY C.nom"; 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; }
Puis, dans tes formulaires, utiliser cette fonction pour créer ta liste déroulante
par exemple
<?php $categories = getCategories(); ?> <select name="categorie"> <?php foreach($categories as $C){ echo "<option value='".$C['id']."'>".$C['nom']."</option>"; } ?> </select>
et quand tu récupéreras les données du formulaire.. c'est bien "categorie" en MINUSCULE que tu devras utiliser
$id_categorie= isset($_GET['categorie'])? trim($_GET['categorie']) : null;
Tu feras donc bien la recherche en te basant sur l'ID de la catégorie... et non son libellé ...
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
10 déc. 2021 à 22:06
10 déc. 2021 à 22:06
Le formulaire renvoie bien l'id de la catégorie jusqu'à présent.
Question: comment faire avec cette partie du code si à la place j'ai les langues:
Exemple dans le formulaire
A part ça le code que tu as envoyé est clair.
Question: comment faire avec cette partie du code si à la place j'ai les langues:
".$C['nom']."</option>";
Exemple dans le formulaire
<option value= "1"> <?php echo $lang['appa'];?></option> <option value= "2"> <?php echo $lang['mv'];?></option>:
A part ça le code que tu as envoyé est clair.
jordane45
Messages postés
38441
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 février 2025
4 737
10 déc. 2021 à 22:22
10 déc. 2021 à 22:22
je ne sais pas..
As tu fais une Table de langues comme pour les catégories ??
Si oui, ben.. c'est exactement le même principe..
rassures moi ... tu ne fais pas que copier/coller bêtement les codes que je te donne .. tu les comprends .. hein ??
Sinon ça ne sert à rien..
As tu fais une Table de langues comme pour les catégories ??
Si oui, ben.. c'est exactement le même principe..
rassures moi ... tu ne fais pas que copier/coller bêtement les codes que je te donne .. tu les comprends .. hein ??
Sinon ça ne sert à rien..
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
11 déc. 2021 à 14:25
11 déc. 2021 à 14:25
J'ai dû créer une table pour les langues. Le code marche bien.
Pour les codes que tu me donnes, je pense que je les comprends de mieux en mieux.
Remerciements pour tes explications :)
Pour les codes que tu me donnes, je pense que je les comprends de mieux en mieux.
Remerciements pour tes explications :)
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
13 déc. 2021 à 19:02
13 déc. 2021 à 19:02
En apportant une modification:
au lieu de $_POST['categorie'], nous avons l'erreur suivante: Erreur ! SQLSTATE[23000]: Integrity constraint violation: 1048 Le champ 'id_categorie' ne peut être vide.
Quand c'était $_POST le formulaire était soumis.
Est-ce à cause de cette ligne?
$id_categorie= isset($_GET['categorie'])? trim($_GET['categorie']) : null;
au lieu de $_POST['categorie'], nous avons l'erreur suivante: Erreur ! SQLSTATE[23000]: Integrity constraint violation: 1048 Le champ 'id_categorie' ne peut être vide.
Quand c'était $_POST le formulaire était soumis.
Est-ce à cause de cette ligne?
<form action="" method="POST" enctype="multipart/form-data">
jordane45
Messages postés
38441
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 février 2025
4 737
13 déc. 2021 à 19:21
13 déc. 2021 à 19:21
Vu que dans ton formulaire tu as
Pourquoi essaye tu de récupérer la valeur en get ??
method="POST"
Pourquoi essaye tu de récupérer la valeur en get ??
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
Modifié le 13 déc. 2021 à 19:43
Modifié le 13 déc. 2021 à 19:43
Si j'ai bien compris, je laisse
Dans ce cas où mettre cette partie:
$id_categorie= trim($_POST['categorie']);parce que ça marche.
Dans ce cas où mettre cette partie:
$id_categorie= isset($_GET['categorie'])? trim($_GET['categorie']) : null;. Est-ce cette partie qui remplace le LIKE? dans la fonction getsearch ou recherche. Et que faire du Like si oui.
$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 nom FROM annonces A LEFT JOIN categories C ON C.id = A.id_categorie WHERE (A.titre LIKE "%'.$q.'%" AND nom 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; }
jordane45
Messages postés
38441
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 février 2025
4 737
13 déc. 2021 à 20:01
13 déc. 2021 à 20:01
oula... on devrait changer ton pseudo par "paic" ..
:-)
Alors
Le second.. remplace le premier ...
Si tu ne sais pas ce que c'est, renseignes toi sur l'écriture ternaire ( sorte de if/else )
ça t'aidera à comprendre.
par contre, tu n'as toujours pas corrigé la requête SQL ...
Je t'ai déjà à deux reprises qu'il ne faut pas utiliser des AND mais des OR dans ce que tu essaies de faire ...
NB: La question est marquée en RESOLUE .... il serait donc bien que dorénavant, pour tes prochains soucis.. tu créés une nouvelle discussion.
paic citron quand y'en a plus y'en a encore
:-)
Alors
Si j'ai bien compris, je laisse $id_categorie= trim($_POST['categorie']); parce que ça marche.
Dans ce cas où mettre cette partie: $id_categorie= isset($_GET['categorie'])? trim($_GET['categorie']) : null; .
Le second.. remplace le premier ...
Si tu ne sais pas ce que c'est, renseignes toi sur l'écriture ternaire ( sorte de if/else )
ça t'aidera à comprendre.
par contre, tu n'as toujours pas corrigé la requête SQL ...
Je t'ai déjà à deux reprises qu'il ne faut pas utiliser des AND mais des OR dans ce que tu essaies de faire ...
NB: La question est marquée en RESOLUE .... il serait donc bien que dorénavant, pour tes prochains soucis.. tu créés une nouvelle discussion.
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
Modifié le 13 déc. 2021 à 20:24
Modifié le 13 déc. 2021 à 20:24
Si le second remplace le premier, faudrait-il donc remplacer method="POST" par get pour que ça n'affiche pas l'erreur:
Erreur ! SQLSTATE[23000]: Integrity constraint violation: 1048 Le champ 'id_categorie' ne peut être vide.
Que mettre à sa place donc pour éviter cette erreur?
OK, la requête sera corrigé. Mais c'était pour comprendre comment on remplace un $id_categorie= $_POST par un $_get dans un formulaire avec "POST" comme méthode.
Je créerai une nouvelle discussion, le topic étant résolu.
Erreur ! SQLSTATE[23000]: Integrity constraint violation: 1048 Le champ 'id_categorie' ne peut être vide.
Que mettre à sa place donc pour éviter cette erreur?
OK, la requête sera corrigé. Mais c'était pour comprendre comment on remplace un $id_categorie= $_POST par un $_get dans un formulaire avec "POST" comme méthode.
Je créerai une nouvelle discussion, le topic étant résolu.
jordane45
Messages postés
38441
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 février 2025
4 737
13 déc. 2021 à 20:54
13 déc. 2021 à 20:54
Je te parle de la forme d'écriture le ternaire comme je te l'ai déjà expliqué bien entendu si tu veux envoyer ton formulaire en poste ce que je te conseille au passage, oui il faut bien remplacer les $_GET par des $_POST
10 déc. 2021 à 18:52
Je doute que ça soit CATEGORIE ....