Moteur de recherche sur une table

Fermé
abdoulayecoumba - Modifié par jordane45 le 3/11/2015 à 15:37
 abdoulayecoumba - 7 nov. 2015 à 02:54
Salut Je veux créer un moteur de cherche sur une table nommée ''clients'' et qui comporte les champs ''prenom'' et ''nom'' mais à chaque fois que j'effectue une recherche aucun résultat ne 's'affiche , même pas un message d'erreur , j'ai beau regardé mon code mais je n'arrive pas à trouver la ou ca déconne , est ce que quelqu'un pourrait me fournir son aide<br>merci <br>voici mon code:<br>


<!DOCTYPE html>
 
     <html>
      
         <head>
               <title> Moteur de recherche</title>
               <meta charset ='UTF-8'/>
          
         </head>
          
            <body>
            <?php
            if(isset($_POST['query']) && !empty($_POST['query']))
             
             {
                    $query= preg_replace("#[^a-z?0-9]#i","",$_POST['query']);
                     
                    $sql= "SELECT id,prenom AS title FROM clients WHERE prenom LIKE ? OR nom LIKE ?";
                 
                //conncxion a la base de données
                 
                include("fspeciales/connecter.php");
                 
                $req = $connex->prepare($sql);
                $req->execute(array('%'.$query.'%','%'.$query.'%'));
                 
                $count = $req->rowcount();
                if($count >= 1)
                       
                      {
                         echo "$count le(s) résultat(s) trouvé(s)pour <strong>$query</strong> </hr>";
                             
                            while ($data = $req->fetch(PDO::FETCH_OBJ))
                             
                            {
                              echo "#".$data->id.'- Titre: '.$data->prenom;
                            }
                      }
                else
                      {
                        echo"0 resultat trouvé pour votre recherche :<strong>$query</strong></hr>";
                      }
             }
             
            ?>
               <form action=  "<?php echo $_SERVER['PHP_SELF']; ?> " methode= "post ">
               <br>
               <br>
                   <label for=  "query " >Entrez votre recherche :</label>
                   <input type= "search" name= "query" maxlength= "80" size= "80" id= "query"/>
                   <input type= "submit" value= "Rechercher">
               </form>   
          
            </body>
     </html>


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

5 réponses

jordane45 Messages postés 38169 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 9 mai 2024 4 662
Modifié par jordane45 le 3/11/2015 à 15:35
Bonjour,

Essayes ça :

<?php

// Tant que possible... Placer le code PHP avant le HTML
// c'est plus facile à maintenir ...


// Instruction permettant d'afficher les eventuelles erreurs php
error_reporting(E_ALL);

//Connexion à la BDD:
require_once "fspeciales/connecter.php";

//Récupération des variables "propres"
// à l'aide de ISSET  ou de !Empty
$query = !empty($_POST['query']) ? $_POST['query'] : NULL;



// Si variable QUERY non vide
if($query){
  $query = preg_replace("#[^a-z?0-9]#i","",$query);
 
  //PREPARATION Requete :
 $sql= "SELECT id,prenom AS title 
        FROM clients 
        WHERE prenom LIKE :prenom OR nom LIKE :nom";

      
  $array_variables = array(":prenom"=>'%'.$query.'%'
                          ,":nom"=>'%'.$query.'%');
 
 //EXECUTION Requete :
 try{
    $req = $connex->prepare($sql);
    $req->execute($array_variables);
  
  // on stocke le resultat de la requête dans un array
  $result = $req->fetchAll();
  $count = count($result);
  
  }catch(Exception $e){
    //SI erreur lors de l'execution de la requete
   echo "<br> Error ! 
         <br>".$e->getMessage();
     echo "<br>Variables :<br>";
   print_r($array_variables);
  }
 
 
} //fin if($query)
?>



<!DOCTYPE html>
  <html>
    <head>
   <title> Moteur de recherche</title>
   <meta charset ='UTF-8'/>
  </head>
          
  <body>
   if($query){
   if($count >= 1) {
    foreach($result as $row){
      echo "$count :le(s) résultat(s) trouvé(s)pour <strong>$query</strong> </hr>";
      echo "#".$row['id'].'- Titre: '.$row['prenom'];  
    }
   } else {
    echo"0 resultat trouvé pour votre recherche :<strong>$query</strong></hr>";
   }
   }
   ?>
    <form action=  "<?php echo $_SERVER['PHP_SELF']; ?> " methode= "post ">
    <br>
    <br>
      <label for=  "query " >Entrez votre recherche :</label>
      <input type= "search" name= "query" maxlength= "80" size= "80" id= "query"/>
      <input type= "submit" value= "Rechercher">
    </form>   
 
  </body>
</html>



EDIT correction de la partie affichage:
   if($query){
   if($count >= 1) {
    foreach($result as $row){
      echo "$count :le(s) résultat(s) trouvé(s)pour <strong>$query</strong> </hr>";
      echo "#".$row['id'].'- Titre: '.$row['prenom'];  
    }
   } else {
    echo"0 resultat trouvé pour votre recherche :<strong>$query</strong></hr>";
   }
   }
   ?>


Cordialement,
Jordane
0
merci jordane-45 pour ton aide, j'ai rectifié le code partout ou vous l'aviez suggeré et aussi au niveau de l'affichage mais ca me donne toujours après avoir effectué une recherche, un écran blanc comportant uniquement le formulaire
Pouvez vous jeter encore un coup d'oeil sur le code , il me semble que sur celui que vous m'aviez proposé , 'il doit y exister deux bloc de balise php comme suit:

<?php

// Tant que possible... Placer le code PHP avant le HTML
// c'est plus facile à maintenir ...


// Instruction permettant d'afficher les eventuelles erreurs php
error_reporting(E_ALL);

//Connexion à la BDD:
require_once "fspeciales/connecter.php";

//Récupération des variables "propres"
// à l'aide de ISSET  ou de !Empty
$query = !empty($_POST['query']) ? $_POST['query'] : NULL;



// Si variable QUERY non vide
if($query){
  $query = preg_replace("#[^a-z?0-9]#i","",$query);
 
  //PREPARATION Requete :
 $sql= "SELECT id,prenom AS title 
        FROM clients 
        WHERE prenom LIKE :prenom OR nom LIKE :nom";

      
  $array_variables = array(":prenom"=>'%'.$query.'%'
                          ,":nom"=>'%'.$query.'%');
 
 //EXECUTION Requete :
 try{
    $req = $connex->prepare($sql);
    $req->execute($array_variables);
  
  // on stocke le resultat de la requête dans un array
  $result = $req->fetchAll();
  $count = count($result);
  
  }catch(Exception $e){
    //SI erreur lors de l'execution de la requete
   echo "<br> Error ! 
         <br>".$e->getMessage();
     echo "<br>Variables :<br>";
   print_r($array_variables);
  }
 
 
} //fin if($query)
?>



<!DOCTYPE html>
  <html>
    <head>
   <title> Moteur de recherche</title>
   <meta charset ='UTF-8'/>
  </head>
          
  <body>
  
      //affichage
 <?php
 
     if($query)
    {
       if($count >= 1) 
      {
          foreach($result as $row)
    {
          echo "$count :le(s) résultat(s) trouvé(s)pour <strong>$query</strong> </hr>";
          echo "#".$row['id'].'- Titre: '.$row['prenom'];  
          }
      } 
   
       else 
        {
          echo"0 resultat trouvé pour votre recherche :<strong>$query</strong></hr>";
        }
    }
?>
    <form action=  "<?php echo $_SERVER['PHP_SELF']; ?> " methode= "post ">
    <br>
    <br>
      <label for=  "query " >Entrez votre recherche :</label>
      <input type= "search" name= "query" maxlength= "80" size= "80" id= "query"/>
      <input type= "submit" value= "Rechercher">
    </form>   
 
  </body>
</html>



EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.
d
0
jordane45 Messages postés 38169 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 9 mai 2024 4 662
4 nov. 2015 à 18:17
1 - Merci d'utiliser les balises de code pour poster ton code !

2 - Change ton form
<form action= "<?php echo $_SERVER['PHP_SELF']; ?> " methode= "post "> 

Par :
<form action= "" method= "POST"> 
0
abdoulayecoumba
5 nov. 2015 à 03:44
je l'ai fait jordane mais le probleme demeure

j'ai fait comme ceci:
<form action= "recherche.php" methode= "post ">
0
jordane45 Messages postés 38169 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 9 mai 2024 4 662
5 nov. 2015 à 07:35
...tu as lu ce que j'ai écrit ????

METHOD (sans E) ...
et si tu restes dans la même page... ACTION a vide.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
abdoulayecoumba
7 nov. 2015 à 02:54
j'ai rectifié mais toujours rien, le navigateur m'affiche l'erreur suivante;
Notice: Undefined index: prenom in C:\wamp\www\Nouveau dossier (2)\programme_recherche\jordan.php on line 74
je vous remontre le code rectifié suivants vos recommandations


<?php

// Tant que possible... Placer le code PHP avant le HTML
// c'est plus facile à maintenir ...


// Instruction permettant d'afficher les eventuelles erreurs php
error_reporting(E_ALL);

//Connexion à la BDD:
require_once "fspeciales/connecter.php";

//Récupération des variables "propres"
// à l'aide de ISSET ou de !Empty
$query = !empty($_POST['query']) ? $_POST['query'] : NULL;



// Si variable QUERY non vide
if($query){
$query = preg_replace("#[^a-z?0-9]#i","",$query);

//PREPARATION Requete :
$sql= "SELECT id,prenom AS title
FROM clients
WHERE prenom LIKE :prenom OR nom LIKE :nom";


$array_variables = array(":prenom"=>'%'.$query.'%'
,":nom"=>'%'.$query.'%');

//EXECUTION Requete :
try{
$req = $connex->prepare($sql);
$req->execute($array_variables);

// on stocke le resultat de la requête dans un array
$result = $req->fetchAll();
$count = count($result);

}catch(Exception $e){
//SI erreur lors de l'execution de la requete
echo "<br> Error !
<br>".$e->getMessage();
echo "<br>Variables :<br>";
print_r($array_variables);
}


} //fin if($query)
?>



<!DOCTYPE html>
<html>
<head>
<title> Moteur de recherche</title>
<meta charset ='UTF-8'/>
</head>

<body>

//affichage
<?php

if($query)
{
if($count >= 1)
{
foreach($result as $row)
{
echo "$count :le(s) résultat(s) trouvé(s)pour <strong>$query</strong> </hr>";
echo "#".$row['id'].'- Titre: '.$row['prenom'];
}
}

else
{
echo"0 resultat trouvé pour votre recherche :<strong>$query</strong></hr>";
}
}
?>
<form action= "" method= "POST">

<br>
<br>
<label for= "query " >Entrez votre recherche :</label>
<input type= "search" name= "query" maxlength= "80" size= "80" id= "query"/>
<input type= "submit" value= "Rechercher">
</form>

</body>
</html>
0