Ndeko Posté 15 Juillet 2004 Posté 15 Juillet 2004 J'ai un formulaire de recherche, + l'affichage des résultats sous la forme d'une liste de définition. <div id="formulaire_recherche><form action="#resultat" method="post"><input type="Text" name="mot" size="20" /><input type="Submit" value="Traduire" /></form></div><div id="resultats"><?phpif(isset($_POST['mot'])) {$mot = $_POST['mot'];$db = mysql_connect('localhost', 'user', '***');mysql_select_db('base',$db);$sql = "SELECT ... FROM dictionnaire,fr_entree WHERE fr_entree_val='$mot' AND fr_entree.id_mot = dictionnaire.id_mot ORDER BY 'mot_fr' ";$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());echo '<dl>';while($data = mysql_fetch_array($req)) {echo '<dt>'.$data['mot_fr'].' ('.$data['mot_cat'].')</dt><dd>'.$data['mot_ln'].'</dd>';}echo '</dl>';mysql_close();}?></div> Le problème que je n'arrive pas à résoudre : Si aucun enregistrement ne correspond à la requête, la page html affichera : <div id="resultats"><dl></dl> </div> Autrement dit des balises dl vides. Ce qui n'est pas top... Comment peut-on éviter cela ? J'ai essayé plusieurs trucs, sans succès. Je pense m'être approché d'une solution en utilisant mysql_num_rows() , mais n'y suis pas arrivé... A l'aide, svp ! -- Pascal Grouselle
Tizel Posté 15 Juillet 2004 Posté 15 Juillet 2004 Si tu entre dans le while, c'est que tu fait au moin 1 echo. Avant le while, initialise une variable à 0. Si, quand tu entre dans le while, ta variable est à 0, tu fait echo '<dl>'; variable=variable+1; quand tu sort de ton while, si la variable est à 1, tu fait : echo '</dl>'; variable=variable-1; l'état de variable correspond alors au nombre de dl ouvertes et avec ce système, tu peux les imbriquer... Tizel
Guest Ldo Posté 15 Juillet 2004 Posté 15 Juillet 2004 cela devrait t'aider <?php $req = mysql_query($sql) if(mysql_num_rows($req) == 0) { echo "aucun resultat"; } else { while($data = mysql_fetch_array($req)) { [...] } } ?>
Ndeko Posté 15 Juillet 2004 Auteur Posté 15 Juillet 2004 (modifié) Merci Ldo, cela m'a aidé effectivement : en essayant d'utiliser "if (mysql_num_rows..." , j'avais oublié de refermer des accolades. Moralité : je placerai désormais toutes mes accolades sur des lignes isolées, et les indenterai par des tabulations ! Modifié 15 Juillet 2004 par Ndeko
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant