Webmaster Hub: Eviter les balises vides - Webmaster Hub

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Eviter les balises vides Noter : -----

#1 L'utilisateur est hors-ligne   Ndeko 

  • Groupe : Membre
  • Messages : 10
  • Inscrit(e) : 09-juillet 04

Posté 15 juillet 2004 - 16:14

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">
<?php
if(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 :

Citation

<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
0

#2 L'utilisateur est hors-ligne   Tizel 

  • Groupe : Fondateur
  • Messages : 1 363
  • Inscrit(e) : 23-septembre 03
  • Genre:Homme
  • Localisation:France

Posté 15 juillet 2004 - 16:30

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
0

#3 Invité_Ldo_*

  • Groupe : Invité

Posté 15 juillet 2004 - 16:52

cela devrait t'aider

"Barbouillache" dit :

<?php

$req
= mysql_query($sql)
if(
mysql_num_rows($req) == 0)
{
    echo
"aucun resultat";
}
else
{
    while(
$data = mysql_fetch_array($req))
    {
        [...]
    }
}

?>


:D

#4 L'utilisateur est hors-ligne   Ndeko 

  • Groupe : Membre
  • Messages : 10
  • Inscrit(e) : 09-juillet 04

Posté 15 juillet 2004 - 17:14

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 !

Ce message a été modifié par Ndeko - 15 juillet 2004 - 17:15.

0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)