Besoin d'aide avec mon code php
chaimatn_95
Messages postés
3
Statut
Membre
-
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
-
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