Besoin d'aide avec mon code php
chaimatn_95
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
chaimatn_95 Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
chaimatn_95 Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
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
Date d'inscription
Statut
Membre
Dernière intervention
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
38486
Date d'inscription
Statut
Modérateur
Dernière intervention
4 752
>
chaimatn_95
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
Quelle sont les structure de tes deux tables users et messages ?
chaimatn_95
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
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.