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);
}
?>
A voir également:
- Besoin d'aide avec mon code php
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
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
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
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
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.
jordane45
Messages postés
40050
Statut
Modérateur
4 754
>
chaimatn_95
Messages postés
3
Statut
Membre
Quelle sont les structure de tes deux tables users et messages ?
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.