PHP

Afficher les résultats des recherches avec liens

Résolu

Bonjour à tous,


Je suis en train de créer la barre de recherche afin que l'utilisateur effectue une recherche sur plusieurs établissements scolaires.


J'ai suivi ce tuto de Sitedudev sur YouTube afin de créer la barre de recherche. En suivant le tuto j'ai réussi à afficher les résultats les noms d'établissements scolaires dans la page resultats.php.


Lorsque l'utilisateur effectue une recherche sur l'un d'établissement scolaire dans la barre de recherche, il sera redirigé vers une page resultats.php contenant les résultats avec plusieurs liens qui s'affichent.


Je voudrais savoir comment il faut afficher les résultats des noms établissements scolaires avec plusieurs liens dans la page resultats.php ?


Est-ce que c'est possible de le faire avec la méthode de tuto ?


Car j'ai créé les pages qui contiennent les informations sur plusieurs établissements scolaires.


Pour l'instant j'ai essayé d'afficher les résultats avec plusieurs liens avec le code que j'ai créé, mais ça m'affiche les double résultats :


<?php
    session_start();
    include("connexionDB.php");

    $result = "";

    $data = "";

    if(isset($_GET['contenu'])){
        $valid = true;
        $contenu = (string) trim($_GET['contenu']);
        if(empty($contenu)){
            $valid = false;
            $message_er = "Mettre un recherche";
        }

        if($valid){
            $req_search = $DB->query("SELECT id, title
                FROM recherche
                WHERE title LIKE ?
                ORDER BY id, title
                LIMIT 100",
                array($contenu . "%"));
            $req_search = $req_search->fetchAll();
        }
    }

    if(!empty($_POST)){
        extract($_POST);
        $valid = true;
    }
?>
<!DOCTYPE html>
<html>
<head>
    <title>Resultats</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" href="css/resultats-1.css">
</head>
<body><div id="home">
        <div class="container" style="margin-top: 140px;">
            <div class="row justify-content-md-center">
                
                <div class="col-sm-12 col-md-8 col-lg-6">
                    
                    <h1 style="text-align: center;">Resultats de la récherche</h1>
                        
                            
                    <?php
                        if(isset($message_er)){
                            echo $message_er;
                        }

                        if(isset($_GET['contenu']) && $valid){

                            if(count($req_search) == 0){
                                echo "Aucun resultat";
                            }

                            foreach ($req_search as $rs) {
                                ?><div class="resultrow"><a href='lycee-comercial.php?id=<?= $rs['id'] ?>'><?= $rs['title'] ?></a></div><br><?php
                                ?><div class="resultrow"><a href='lycee-technique.php?id=<?= $rs['id'] ?>'><?= $rs['title'] ?></a></div><br><?php
                                /*$result = $result .'<div class="search-result"><a href="http://resultats.php?id='.$data["id"].'">'.$data['title'].'</a></div>';*/
                            }
                        }
                    ?>
                </div>
            </div>
        </div>
    </div>
</body>


Voici les codes des sources du fichier :


accueil-2.php

<?php
    session_start();

    include("connexionDB.php");

    if(!empty($_POST)){
        extract($_POST);
        $valid = true;

        if(isset($_POST['search'])){
            $contenu = (string) trim($contenu);
            if(empty($contenu)){
                $valid = false;
                $message_er = "Mettre un recherche";
            }
            if($valid){
                $req_search = $DB->query("SELECT id, title
                    FROM recherche
                    WHERE title LIKE ?
                    ORDER BY id, title
                    LIMIT 100",
                    array($contenu . "%"));
                $req_search = $req_search->fetchAll();
            }
        }
    }
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <!--Bootstrap CSS-->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
    <!--CSS-->
    <link rel="stylesheet" type="text/css" href="css/styles.css">
    <title>Accueil</title>
</head>
<body><div class="frame">
            <div class="text-2">
                <h1 class="text-15"><strong>Rechercher un établissement</strong></h1>
            </div>
            
            <strong><hr class="news1"></strong>
                    
                    
            <div class="search">
                <form method = "get" action="resultats.php">
                    <div class="form-group" style="display: flex; justify-content: center;">
                        <input class="form-control" value="<?php if(isset($contenu)){echo $contenu;}?>" name="contenu" type="text" placeholder="Lycée, collège, etc.." />
                        <input type="submit" style="margin-left: 15px;" class="btn btn-primary"  value="Rechercher"/>
                    </div>
                </form>
                <?php
                    if(isset($message_er)){
                        echo $message_er;
                    }

                    if(isset($_POST['search']) && $valid){

                        if(count($req_search) == 0){
                            echo "Aucun resultat";
                        }
                        foreach ($req_search as $rs) {
                            echo"<div style='color: black'>" . $rs['id'] . " " . $rs['title'] . "</div><br>";
                        }
                    }
                ?>
            </div>
        </div>
</body>
</html>


resultats.php

<?php
    session_start();
    include("connexionDB.php");

    $result = "";

    $data = "";

    if(isset($_GET['contenu'])){
        $valid = true;
        $contenu = (string) trim($_GET['contenu']);
        if(empty($contenu)){
            $valid = false;
            $message_er = "Mettre un recherche";
        }

        if($valid){
            $req_search = $DB->query("SELECT id, titre
                FROM recherche
                WHERE title LIKE ?
                ORDER BY id, title
                LIMIT 100",
                array($contenu . "%"));
            $req_search = $req_search->fetchAll();
        }
    }

    if(!empty($_POST)){
        extract($_POST);
        $valid = true;
    }
?>
<!DOCTYPE html>
<html>
<head>
    <title>Resultats</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" href="css/resultats-1.css">
</head>
<body><div id="home">
        <div class="container" style="margin-top: 140px;">
            <div class="row justify-content-md-center">
                
                <div class="col-sm-12 col-md-8 col-lg-6">
                    
                    <h1 style="text-align: center;">Resultats de la récherche</h1>
                        
                            
                    <?php
                        if(isset($message_er)){
                            echo $message_er;
                        }

                        if(isset($_GET['contenu']) && $valid){

                            if(count($req_search) == 0){
                                echo "Aucun resultat";
                            }

                            foreach ($req_search as $rs) {
                                ?><div class="resultrow"><a href='lycee-comercial.php?id=<?= $rs['id'] ?>'><?= $rs['title'] ?></a></div><br><?php
?><div class="resultrow"><a href='lycee-technique.php?id=<?= $rs['id'] ?>'><?= $rs['title'] ?></a></div><br><?php
                                /*$result = $result .'<div class="search-result"><a href="http://resultats.php?id='.$data["id"].'">'.$data['title'].'</a></div>';*/
                            }
                        }
                    ?>
                </div>
            </div>
        </div>
    </div> 
</body>
</html>


Merci d'avance pour vos réponses.

915 vues
08 avril 2021 à 16:37 (Édité)
Cette pub permet au site de vivre ...

5 commentaires

Re @Space001,


Ce que je voulais faire c'est afficher les résultats avec des liens afin que l'utilisateur puisse cliquer sur le lien pour consulter les informations sur l'un d'établissement scolaire qu'il recherche.


Par exemple lorsque l'utilisateur recherche "Lycée Technique" et dans la page resultats.php je veux afficher "Lycée Technique" avec un lien afin qu'il se redirige vers la page lycee-technique.php où il pourrait consulter les informations sur l'établissement Lycée Technique.


J'ai déjà résolu le problème avec l'aide de cette réponse.


Pour afficher les résultats des recherches avec un lien, il faut d'abord créer une colonne page_name et dans cette colonne j'ai stocker le nom de la page par exemple "lycee-technique.php."


Ensuite j'ai affiché les résultats des recherches avec liens à l'aide ce code :


echo "<a href='../pages/{$rs['page_name']}'><h3>{$rs['title']}</h3></a>";


Je te remercie pour ta réponse

Re @Epeny,


Pour faire une barre de recherche et afficher les résultats, ce n'est pas compliqué 😁

Je t'invite à consulter cet article de formations 😉

Bonjour @Space001,


Je m'excuse de te répondre en retard, car mon compte a été bloqué pendant une semaine.


J'ai modifié le sujet de topic, je souhaite afficher les établissements scolaires avec plusieurs liens lorsque l'utilisateur sera redirigé vers la page resultats.php après avoir effectué une recherche sur l'un d'établissement scolaire dans la barre de recherche.


Je souhaite faire une barre de recherche par exemple comme celui de Google où lorsqu'on effectue une recherche et en cliquant sur le bouton rechercher il y a des résultats de recherche qui sont affichés avec plusieurs liens.


J'ai essayé d'afficher les résultats avec plusieurs liens avec ce code, mais les noms d'établissements scolaires s'affichent deux fois avec liens :


 <?php
      if(isset($message_er)){
          echo $message_er;
      }

      if(isset($_GET['contenu']) && $valid){

         if(count($req_search) == 0){
             echo "Aucun resultat";
         }

         foreach ($req_search as $rs) {
             ?><div class="resultrow"><a href='lycee-comercial.php?id=<?= $rs['id'] ?>'><?= $rs['title'] ?></a></div><br><?php
             ?><div class="resultrow"><a href=' lycee-technique.php?id=<?= $rs['id'] ?>'><?= $rs['title'] ?></a></div><br><?php
             /*$result = $result .'<div class="search-result"><a href="http://resultats.php?id='.$data["id"].'">'.$data['title'].'</a></div>';*/
         }
      }
?>



Re @Epeny,


On attend une réponse de ta part...

Ton problème est résolu ? 🤔

Bonsoir @Epeny,


En résumé tu souhaiterais qu'au lieu de campus.php le lien soit centre-metier.php ?

Si c'est le cas, remplace cette ligne de ton fichier resulats.php :


<div class="resultrow"><a href='campus.php?id=<?= $rs['id'] ?>'><?= $rs['titre'] ?></a></div>


par :


<div class="resultrow"><a href='centre-metier.php?id=<?= $rs['id'] ?>'><?= $rs['titre'] ?></a></div>


C'est aussi simple que ça 👌

Cette pub permet au site de vivre ...