Besoin d'aide avec mon code php

chaimatn_95 Messages postés 3 Statut Membre -  
chaimatn_95 Messages postés 3 Statut Membre -
Bonjour, je souhaite faire une barre de recherche mais le problème à chaque fois il me met que aucun ne correspond à ma recherche.
<?php

  require_once "functions.php";
  require_once "forme.php";
  
  

  echo '<h2> Recherche </h2>';

  if ( isset($_GET['s'])  && !empty($_GET['s']) ){
      $search = htmlentities($_GET['s']);
      recherche($search);
  }


  function recherche( $search ) {
        $connex = connexion_db();
        $req = 'SELECT * FROM messages WHERE message LIKE "%$search%"';
        $result = mysqli_query($connex,$req);
        $lenght =  mysqli_num_rows($result);

        if ( $result && ($lenght > 0 )) {
          while($row = $result->fetch_assoc()) {
              $id_mes=$row['id'];
              $messagec=$row['message'];
              $id_user=$row['id'];
              echo '<div id="liste"> <a href="forum.php?id_mes='.$id_mes.'">'.$message.'</a> ';
              $req2 = "SELECT * FROM users WHERE id='$id_user'";
              $result2 = mysqli_query($connex,$req2);
              if ($result2){
                $row2 = $result2->fetch_assoc();
                echo $row2['pseudo'];
              }
              echo '</div><hr>';
            }
        } else {
          echo "Il n'y a rien qui correspond à votre recherche";
        }
        mysqli_close($connex);
  }



 ?>

1 réponse

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour,

    J'ai effectué quelques corrections
    - Ne pas mélanger l'écriture mysqli objet et procédurale,
    - Ne pas utiliser le htmlentities ou le htmpspecialchar autre que pour de l'affichage (jamais pour des requetes )
    - Ajout de gestion d'erreur sur la requête
    - Ecriture du code de façon logique
    - Utiliser un "return" dans une fonction au lieu d'y mettre directement des echo
    - Utilisation de jointure dans la requête au lieu de faire des "sous requêtes" dans des boucles
    - Correction de certaines variables ..

    bref
    //require
    require_once "functions.php";
    require_once "forme.php";
      
    //fonctions  
    function recherche($search) {
      $connex = connexion_db();
      $req = 'SELECT M.*
                    ,U.pseudo  
              FROM messages M
              LEFT JOIN users U ON U.id = M.id_user
              WHERE message LIKE "%'.mysqli_real_escape_string($connex, $search) .'%"';
      $result = mysqli_query($connex,$req);
      if(!$result){
       return " Error description: " . mysqli_error($connex);
      }
      if ( mysqli_num_rows($result)> 0 ) {
        $return = ""; //variable qui contiendra le resultat à retourner
        while($row = mysqli_fetch_row($result)) {
            $id_mes = $row['id'];
            $message = $row['message']; //variable non utilisée ?
            $id_user = $row['id_user']; //j'ai corrigé cette ligne...
            $pseudo = $row['pseudo'];
            $return .=  '<div id="liste"> <a href="forum.php?id_mes='.$id_mes.'">'.$message.'</a> ';
            $return .=  $pseudo;
            $return .=  '</div><hr>';
          }
      } else {
        $return = "Il n'y a rien qui corresponde à votre recherche 
            <br> dans la requete : $req ";
      }
      mysqli_close($connex);
      return $return;
    } 
    
    
    //récupération propre des variables avant de les utiliser
      $search = !empty($_GET['s']) ? $_GET['s'] : NULL;
    
      
    //début de l'affichage :
    echo '<h2> Recherche </h2>';
    if ($search ){
      $resultat = recherche($search);
      echo $resultat;
    }
    


    Et si ça ne fonctionne toujours pas, tu devrais avoir, dans le message de retour la requête qui devrait apparaitre.
    De là... tu la copie/colle directement dans ton phpmyadmin et tu regarde si elle fonctionne ou non....
    Si elle n'y fonctionne pas.. ton souci vient de ta requete

    0
    1. chaimatn_95 Messages postés 3 Statut Membre
       
      Merci beaucoup pour ton aide et tes corrections. Merci encore :) Il me dise que 'U.pseudo' est inconnue dans ma field liste alors qu'elle existe bel et bien je ne comprend pas trop.
      0
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > chaimatn_95 Messages postés 3 Statut Membre
         
        Quelle sont les structure de tes deux tables users et messages ?
        0
    2. chaimatn_95 Messages postés 3 Statut Membre
       
      Salut! J'ai finalement réussie à résoudre le problème je n'ai plus de message d'erreur mais il me dit qu'aucune recherche ne correspond à ma demande . Merci encore :) Désolé je suis débutante dans le domaine.
      0