Comment intégrer le script de pagination et de moteur de recherche pour le forum ?

Beaudelaire

Beaudelaire Le 14 mars 2020 à 01:50 (Édité le 14 mars 2020 à 14:54)

Bonjour le Forum. J'aimerais que vous m'aidiez pour l'intégration du script de la pagination et du moteur de recherche pour le forum. J'ai suivi des tutos concernant la création de forum mais j'ai du mal à intégrer mon script de pagination et de moteur de recherche dans les codes. Merci de m'aider.

PrimFX

PrimFX Le 14 mars 2020 à 12:48 (Édité le 14 mars 2020 à 12:48)

Bonjour @Beaudelaire !

Je pense que quelques informations supplémentaires seront utiles pour pouvoir t'aider : peux-tu nous faire part du code source que tu as déjà mis en place ? des éventuelles erreurs qui apparaissent ? etc.

Je t'invite également à faire un tour sur les règles du forum et à éditer ton message pour y ajouter au moins un p'tit bonjour : tu t'adresses sur ce forum à toutes les personnes de la communauté qui pourraient te venir en aide pour résoudre ton problème 😉

A+

Beaudelaire

Beaudelaire Le 14 mars 2020 à 15:58

Salut @PrimFX ! Je parlais de ton code concernant ton tuto " CRÉER_UN_FORUM_ENPHP-_#4_Lister_les_topics ". Lorsque j'ai suivi à la lettre la vidéo en listant les topics aussi, et que dans le code j'insère le code php permettant de faire des recherches, cela m'affiche tous les topics dans toutes les catégories et sous-catégories; plus chaque catégorie ou sous-catégorie avec son topic et son moteur de recherche comme tu l'as fait pour le forum. Voici mon code :


<?php
        error_reporting(E_ERROR|E_PARSE);

            require_once("../php/config.php");

            if(isset($_GET['categorie']) AND !empty($_GET['categorie'])){

                $get_categorie = htmlspecialchars($_GET['categorie']);

                $categories = array();

                $req_categories = $bdd->query('SELECT * FROM av_categories');

                while($c = $req_categories->fetch()){

                    array_push($categories, array($c['id'],$c['nom']));

                }

                foreach($categories as $cat){
                    if(in_array($get_categorie, $cat)){

                       $id_categorie = intval($cat[0]);

                    }
                }

            if(@$id_categorie){         

                if(isset($_GET['souscategorie']) AND !empty($_GET['souscategorie'])){

                    $get_souscategorie = htmlspecialchars($_GET['souscategorie']);

                    $souscategories = array();

                    $req_souscategories = $bdd->prepare('SELECT * FROM av_souscategories WHERE id_categories = ?');

                    $req_souscategories->execute(array($id_categorie));

                    while($c = $req_souscategories->fetch()){

                         array_push($souscategories, array($c['id'], $c['nom']));

                    }

                    foreach($souscategories as $cat){

                        if(in_array($get_souscategorie, $cat)){

                            $id_souscategorie = intval($cat[0]);

                        }

                    } 
                }

                $req = "SELECT *, annonces.id annonces_base_id FROM annonces 
                        LEFT JOIN av_annonces_categories ON annonces.id = av_annonces_categories.id_annonces 
                        LEFT JOIN av_categories ON av_annonces_categories.id_categories = av_categories.id
                        LEFT JOIN av_souscategories ON av_annonces_categories.id_souscategories = av_souscategories.id
                        LEFT JOIN membres ON annonces.id_createur = membres.id
                        WHERE av_categories.id = ? ";

                if(@$id_souscategorie){

                $req .= ' AND av_souscategories.id = ? ' ;

                        $exec_array = array($id_categorie,$id_souscategorie);

                }else{

                        $exec_array = array($id_categorie); 
                }

                $req .= ' ORDER BY annonces.id DESC LIMIT 0,24';

                $annoncesVi = $bdd->prepare($req);

                $annoncesVi->execute($exec_array);

                /*CODE POUR LA BARRE DE RECHERCHE*/

                if(isset($_GET['q']) AND !empty($_GET['q'])){

                    $q = htmlspecialchars($_GET['q']);

                    $annoncesVi = $bdd->query('SELECT titre FROM annonces 
                        WHERE titre LIKE "%'.$q.'%" ORDER BY id DESC ');

                } 
               /*FIN DU CODE DE LA BARRE DE RECHERCHE*/

            }else{

                die('Erreur: Catégorie introuvable...');

            }

            }else{

                die('Erreur: Aucune catégorie sélectionnée...');
            }           

            require_once("affichages_annonces_view.php");       
?>
 Merci de m'aider. 
PrimFX

PrimFX Le 15 mars 2020 à 11:19

Salut @Beaudelaire !

Assez difficile de te donner une solution directe à première vue, mais je pense déjà pouvoir te donner quelques conseils qui devraient te permettre d’arriver à débugguer ton code :

  • Eviter les @ devant les variables pour laisser apparaître d’éventuels messages d’erreur (les @ ne font que masquer l’erreur sans la corriger, je préconise de les utiliser seulement dans des cas très particuliers)
  • Faire des var_dump() et/ou print_r() de tes variables régulièrement dans ton code pour voir si toutes tes variables contiennent bien les valeurs que tu attends et pour vérifier que tu entres bien dans les conditions souhaitées
  • Il y a certaines boucles while/foreach que tu peux, je pense, simplifier (en n’utilisant qu’une seule boucle au lieu de deux à chaque fois)

Enfin, concernant le problème spécifique des recherches, le $_GET[‘q’] est vérifié uniquement dans le cas où une catégorie et une sous-catégorie sont déjà indiquées dans l’URL. De plus, la requête SQL ne se base que sur la recherche et non plus sur les catégories et sous-catégories.

➡ A mon avis : il faudrait soit sortir ton traitement de la recherche des conditions de catégorie/sous-catégorie soit simplement ajouter à ta requête SQL (dans la variable $req) la condition WHERE titre LIKE "%'.$q.'%" 😉

En espérant avoir pu t’aider,

A+

Beaudelaire

Beaudelaire Le 17 mars 2020 à 15:43

Merci @PrimFX pour ta réaction à nouveau. Mais le problème n'est pas résolu. J'espère que tu feras un tuto dans les prochains jours nous montrant comment tu as intégrer ton code php du moteur de recherche pour nous permettre à faire des recherches dans les catégories et sous-catégories sur ce forum ! 🎃

Profil supprimé

Profil supprimé Le 20 mars 2020 à 17:53

Hello @Beaudelaire,

Si les tutos de @PrimFX ne t'ont pas aider, il faut toujours se tourner vers une autre personne qui explique différemment 😉 Essaye la série de vidéo de @Clouder concernant la barre de recherche 😉 Tu as également des articles de formations sur ce sujet 😉

Beaudelaire

Beaudelaire Le 24 mars 2020 à 10:55 (Édité le 24 mars 2020 à 10:58)

Bonjour @Profil_supprimé !

En réalité, ce n'est pas le script pour la barre de recherche qui pose problème. Le souci, c'est comment il a ( @PrimFX ) pu intégrer le code php pour les récherches et pour la pagination dans son code pour affichage des topics ?

Puisque c'est exactement son code (code de @PrimFX ) pour le listage des topics (voir le tuto " CRÉER_UN_FORUM_ENPHP-#4_Lister_les_topics " de @PrimFX) que j'ai mis ci-haut.

S'il peut ou vous pouvez m'aider à nouveau, j'en serai ravis.

Je suis entrain de créer un forum pour un établissement et çà ne me reste que l'intégration de ces deux choses pour finaliser.

Votre aide me fera beaucoup plaisir !

Merci !

Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte