Besoin d'aide avec mon code php

Fermé
chaimatn_95 Messages postés 3 Date d'inscription samedi 4 mai 2019 Statut Membre Dernière intervention 5 mai 2019 - Modifié le 5 mai 2019 à 09:53
chaimatn_95 Messages postés 3 Date d'inscription samedi 4 mai 2019 Statut Membre Dernière intervention 5 mai 2019 - 5 mai 2019 à 14:48
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);
  }



 ?>
A voir également:

1 réponse

jordane45 Messages postés 38284 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 11 novembre 2024 4 697
5 mai 2019 à 10:10
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
chaimatn_95 Messages postés 3 Date d'inscription samedi 4 mai 2019 Statut Membre Dernière intervention 5 mai 2019
5 mai 2019 à 11:32
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
jordane45 Messages postés 38284 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 11 novembre 2024 4 697 > chaimatn_95 Messages postés 3 Date d'inscription samedi 4 mai 2019 Statut Membre Dernière intervention 5 mai 2019
5 mai 2019 à 12:21
Quelle sont les structure de tes deux tables users et messages ?
0
chaimatn_95 Messages postés 3 Date d'inscription samedi 4 mai 2019 Statut Membre Dernière intervention 5 mai 2019
5 mai 2019 à 14:48
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