Menu

Besoin d'aide avec mon code php

Messages postés
3
Date d'inscription
samedi 4 mai 2019
Statut
Membre
Dernière intervention
5 mai 2019
-
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);
  }



 ?>
Afficher la suite 

Votre réponse

1 réponse

Messages postés
25572
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 mai 2019
1977
0
Merci
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

chaimatn_95
Messages postés
3
Date d'inscription
samedi 4 mai 2019
Statut
Membre
Dernière intervention
5 mai 2019
-
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.
jordane45
Messages postés
25572
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 mai 2019
1977 > chaimatn_95
Messages postés
3
Date d'inscription
samedi 4 mai 2019
Statut
Membre
Dernière intervention
5 mai 2019
-
Quelle sont les structure de tes deux tables users et messages ?
chaimatn_95
Messages postés
3
Date d'inscription
samedi 4 mai 2019
Statut
Membre
Dernière intervention
5 mai 2019
-
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.
Commenter la réponse de jordane45