DCO Posté 26 Février 2008 Posté 26 Février 2008 Bonjour, J'ai un ensemble de formulaires en php et mysql et dont l'un est un moteur de recherche. Lors de la recherche j'aimerai que cela m'affiche le nombre de résultat que la recherche à trouver. Pouvez vous m'aider? voici le code de ma page de recherche: CODE <?php/* *********************** A T T E N T I O N *************************/ /* Veillez à indiquer le bon chemin vers votre fichier connexion.php */ require("../include/connexionDB.php"); /* Connexion au serveur MySQL */ $connection=mysql_connect ($serveur, $username, $password, $table); if (!$connection) { die("Impossible de se connecter au serveur : " . mysql_error()); } /* Sélection de la base de données */ $db_selected = mysql_select_db($database, $connection); if (!$db_selected) { die ("Impossible d'utiliser la base de données : " . mysql_error()); } ?> <html> <head> <title>Rechercher</title> <link href="css/style2.css" rel="stylesheet" type="text/css"> </head> <body> <?php $query="select * from $table"; $result=mysql_query($query); $totenreg=mysql_num_rows($result); if ($totenreg==0) echo "<td colspan=9 align=center bgcolor='#000000'><h2>IL N'Y A PAS D'ENREGISTREMENT A RECHERCHER</td>"; else if (!(empty($_POST["recherche"]))) { echo "<table width=100% border=1 align=center>"; echo "<tr bgcolor='#FFFF00'>"; echo "<td colspan=9><h2>XXXX Résultat de la Recherche</td>"; echo "</tr>"; echo "<tr align=center bgcolor=#87CEEB>"; echo "<td><h4 class='h41'>Numéro</td>"; echo "<td><h4 class='h41'>Latitude</td>"; echo "<td><h4 class='h41'>Longitude</td>"; echo "<td><h4 class='h41'>Type</td>"; echo "<td><h4 class='h41'>Nom</td>"; echo "<td><h4 class='h41'>Adresse</td>"; echo "<td><h4 class='h41'>Code Postal</td>"; echo "<td><h4 class='h41'>Ville</td>"; echo "</tr>"; $i=0; while ($row=mysql_fetch_array($result)) { if (stristr($row[$_POST["choix"]], $_POST["recherche"])) { if ($i==0) { echo "<tr bgcolor=#D3D3D3>"; $i++; } else { echo "<tr bgcolor=#FFFFFF>"; $i--; } echo "<td><h5>".$row["id"]."</td>"; echo "<td><h5>".$row["latitude"]."</td>"; echo "<td><h5>".$row["longitude"]."</td>"; echo "<td><h5>".$row["type"]."</td>"; echo "<td><h5>".$row["nom"]."</td>"; echo "<td><h5>".$row["adresse"]."</td>"; echo "<td><h5>".$row["codepostal"]."</td>"; echo "<td><h5>".$row["ville"]."</td>"; echo "</tr>"; } } echo "</table>"; } else echo "<h4>Veuillez remplir le champ recherche !"; ?> </body> </html>
Portekoi Posté 26 Février 2008 Posté 26 Février 2008 Bonjour, Après ceci : $query="select * from $table";$result=mysql_query($query); Ajoute : $nb_resultat = mysql_num_rows($result); Puis dans ton code, <?=$nb_resultat?>
DCO Posté 26 Février 2008 Auteur Posté 26 Février 2008 Bonjour et merci pour cette réponse rapide, J'ai fait comme indiqué j'ai rajouté $nb_resultat = mysql_num_rows($result); qui me semble est identique à $totenreg=mysql_num_rows($result); a l'endroit indiqué et ensuite ceci <?=$nb_resultat?> à la place des XXX à cet endroit echo "<td colspan=9><h2>XXXX Résultat de la Recherche</td>"; Mais cela ne donne rien. Merci pour votre aide.
Portekoi Posté 26 Février 2008 Posté 26 Février 2008 Erf, oui, j'avais pas vu ton $totenreg Juste après le $totenreg=mysql_num_rows($result);, ajoute un "echo $totenreg;" Juste après.... la ligne en dessous quoi pour voir ce qu'il retourne
DCO Posté 26 Février 2008 Auteur Posté 26 Février 2008 cela me sort le nombre d'enregistrement qu'il y a dans la table
Sanguo Posté 26 Février 2008 Posté 26 Février 2008 $row=mysql_fetch_row($result);$totenreg = $row[0];
DCO Posté 26 Février 2008 Auteur Posté 26 Février 2008 C'est toujours le même résultat, c'est le nombre d'enregistrement dans la base qui ressort et non le résultat de la recherche.
Anonymus Posté 26 Février 2008 Posté 26 Février 2008 C'est donc au niveau de la requète que ca ne marche pas. Ca affiche le nb d'enregistrement trouvé pour la requète donnée. Affiches la requète, pour voir ce qu'elle contient avant de l'envoyer à mysql_fetch_row. Nico.
Anonymus Posté 26 Février 2008 Posté 26 Février 2008 Bonjour, Je n'avais pas regardé ton code.... Mais je ne le comprends pas. Tu fais un formulaire de recherche, ok, et ensuite tu veux afficher quoi ? Parce que là, ce que tu veux afficher d'après ton code, c'est TOUS les enregistrements de la base : $query="select * from $table"; Là, effectivement, tu auras tous les enregistrements. Inutile de chercher à compter les enregistrements concernés par la recherche, puisque tu ne cherches pas vis à vis de la base. Par contre, visiblement, tu mets en surbrillance les champs concernés par la recherche : echo "<tr bgcolor=#D3D3D3>"; $i++; Si ca marche, alors rajoutes un compteur : $cpt++; que tu affiches plus bas : echo $cpt; Et là, tu auras le nombre d'enregistrements concernés par la recherche. Mais à partir du formulaire et non à partir de la table. Nicolas.
DCO Posté 27 Février 2008 Auteur Posté 27 Février 2008 Merci, Ca fonctionne et ça me retourne bien le nombre d'enregistrements trouvés. Je ne voudrai pas abuser mais comment faire pour rechercher à partir d'une liste déroulante voici mon fichier: <html><head><title>Rechercher</title><link href="/enreg_form/css/style2.css" rel="stylesheet" type="text/css"></head><body> <form action='/enreg_form/scripts/recherche.php' target="rechbas" method='post' name="rechercher" enctype="multipart/form-data"> <table width=50% align=center> <tr> <td align=rigth><input class='text' type="text" name="recherche" size=50 maxlength=50></td> <td align=left><input class="bouton" type="submit" name="Rechercher" value="Rechercher"></td> </tr> </table> <table width=60% align=center> <tr> <td><input type="radio" name="choix" value="id">Numéro</td> <td><input type="radio" name="choix" value="civilite" checked>Mr, Mme; Mlle</td> <td><input type="radio" name="choix" value="nom" checked>Nom</td> <td><input type="radio" name="choix" value="codepostal">C.P.</td> <td><input type="radio" name="choix" value="ville">Ville</td> <td><input type="radio" name="choix" value="type">Statut</td> <td><input type="radio" name="choix" value="date">Date</td> </tr> </table> </form></body></html> Et je voudrai, par exemple à la place du bouton radio Date, pouvoir sélectionner une date dans une liste déroulante. J'ai fait cela mais ça ne fonctionne pas: <select name="choix" value="date"> <option selected value='".$row["date"]."'>".$row["date"].""; if ($row["date"]=="") { <option value='07 et 21 juin 2008'>07 et 21 juin 200 <option value='30 août 2008'>30 août 2008 } </select> Et merci encore pour votre aide et votre patience.
Sanguo Posté 27 Février 2008 Posté 27 Février 2008 (modifié) On ne peut pas mélanger PHP et HTML comme tu le fais. $row est une variable PHP. Si tu veux l'utiliser dans une page HTML, tu dois entourer ton code de balise PHP du type <?php $row ?>. De plus si tu veux afficher le contenu de la variable PHP dans du HTML pour l'utiliser tu dois la donner. En clair on aura un truc du genre : <option selected value='<?php echo $row["date"] etc ... ?> Modifié 27 Février 2008 par Sanguo
DCO Posté 27 Février 2008 Auteur Posté 27 Février 2008 bon j'ai essayé avec ça mais ça ne fonctionne pas: <option selected value='<?php".$row["date"]."'>".$row["date"].""; if ($row["date"]=="") { <option value='07 et 21 juin 2008'>07 et 21 juin 200 <option value='30 août 2008'>30 août 2008 }?> Quel serai le code exact? Merci d'avance.
Sanguo Posté 28 Février 2008 Posté 28 Février 2008 Ici, un exemple de liste déroulante avec utilisation de PHP (voir l'exercice en bas de page) : http://www.siteduzero.com/tuto-3-180-1-php...ormulaires.html
DCO Posté 28 Février 2008 Auteur Posté 28 Février 2008 Bonjour et merci pour cette réponse, Et effectivement j'ai déjà fait comme le tuto du site du zero et maintenant j'ai dans mon formulaire de recherche 3 liste déroulantes qui s'affichent comme il faut. Et encore merci pour toute l'aide.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant