balise </tr> sur categorizator

WRInaute discret
Bonjour

Avec le script d'annuaire categorizator les balises <tr> et <td> ne sont pas ferme, j'ai reussi à mettre le </td> mais pas le </tr> qui doit ce mettre tous les 2 cellules pour avoir 2 colonnes

je suis passer de 160 erreurs à 35 sur le validateur XHTML, mais là je séche

merci pour votre aide


<table width="650" border=0 align="center" cellspacing="15">
<?php
//tableau des categories

//pour chaque categories meres trouvees on les affiche avec leurs X premieres sous-cat
$i=0;
while ($une_categorie = mysql_fetch_array($res_cat,MYSQL_ASSOC))
{
if ($i%2 == 0) //colonne de gauche et donc nouvelle ligne
echo "<tr>\n";
$i++;

//on affiche la categorie mere
?>
<td valign="top" width="600">
<img src="img/dossier.gif" alt="img categorie" />
<a href="<?php echo id_to_url($une_categorie["id"],$une_categorie["cat_name"],'1'); ?>" class="link_cat_index_annuaire"><?php echo htmlspecialchars($une_categorie["cat_name"]); ?></a>
<span class="nb_scat_index_annuaire">(<?php echo get_nbsites($une_categorie["id"]); ?>)</span>
<?php
//on va voir si il n'y a pas des sous-categories
$sql_scat = "SELECT id,cat_name FROM $T_categories WHERE id_cat_mere = '$une_categorie[id]' AND activation = '1' ORDER BY position ASC, cat_name ASC LIMIT 0,$nb_scats_onindex ";
$res_scat = send_sql($sql_scat,"trouver les sous-catégories");
echo "\n<br />\n";
//on affiche les sous-categories
while ($une_souscat = mysql_fetch_array($res_scat,MYSQL_ASSOC))
{
?>
<a href="<?php echo id_to_url($une_souscat["id"],$une_souscat["cat_name"],'1'); ?>" class="link_scat_index_annuaire"><?php echo htmlspecialchars($une_souscat["cat_name"]); ?></a><a href="<?php echo id_to_url($une_souscat["id"],$une_souscat["cat_name"],'1'); ?>" class="link_scat_index_annuaire"> |</a>

<?php
}
echo "<br /><br /></td>\n";
}
?>


</table>
 
WRInaute discret
Bonsoir,
je suis comme toi, sur la page d'accueil j'ai réussis à supprimer toutes les erreurs sauf celle là.
 
WRInaute passionné
Une solution pourrait être de tout faire passer en div... Cela demande un peu de travail... le mien est désormais full-valid... mais trés remanié.
PS : je n'ai pas cherché à conserver <tr>, <td> et cie...
 
WRInaute accro
la même en bas

if ($i%2 == 0) echo "</tr>\n";

pourquoi == et non pas !=, parceque tu as déjà fait ton $i++. sinon tu vire le $i++, et en bas :
if ($i%2 != 0) echo "</tr>\n";
$i++
 
WRInaute discret
merci e-kiwi

mais le </tr> s'affiche seulement un seul fois en bas et donc seulement une balise de ferme, il en reste 4.

j'ai mis ça en bas

<?php

if ($i%2 == 0) echo "</tr>\n";

?>
 
WRInaute discret
ça marche j'avais oublier une parenthese (je suis à 24 erreurs maintenant)

merci e-kiwi

le code correct :



<table width="650" border="0" align="center" cellspacing="15">
<?php
//tableau des categories

//pour chaque categories meres trouvees on les affiche avec leurs X premieres sous-cat
$i=0;
while ($une_categorie = mysql_fetch_array($res_cat,MYSQL_ASSOC))
{
if ($i%2 == 0) //colonne de gauche et donc nouvelle ligne
echo "<tr>\n";
$i++
//on affiche la categorie mere
?>
<td valign="top" width="600">
<img src="img/dossier.gif" alt="img categorie" />
<a href="<?php echo id_to_url($une_categorie["id"],$une_categorie["cat_name"],'1'); ?>" class="link_cat_index_annuaire"><?php echo htmlspecialchars($une_categorie["cat_name"]); ?></a>
<span class="nb_scat_index_annuaire">(<?php echo get_nbsites($une_categorie["id"]); ?>)</span>
<?php
//on va voir si il n'y a pas des sous-categories
$sql_scat = "SELECT id,cat_name FROM $T_categories WHERE id_cat_mere = '$une_categorie[id]' AND activation = '1' ORDER BY position ASC, cat_name ASC LIMIT 0,$nb_scats_onindex ";
$res_scat = send_sql($sql_scat,"trouver les sous-catégories");
echo "\n<br />\n";
//on affiche les sous-categories
while ($une_souscat = mysql_fetch_array($res_scat,MYSQL_ASSOC))
{
?>
<a href="<?php echo id_to_url($une_souscat["id"],$une_souscat["cat_name"],'1'); ?>" class="link_scat_index_annuaire"><?php echo htmlspecialchars($une_souscat["cat_name"]); ?></a><a href="<?php echo id_to_url($une_souscat["id"],$une_souscat["cat_name"],'1'); ?>" class="link_scat_index_annuaire"> |</a>

<?php
}
echo "<br /><br /></td>\n";

?>
<?php
if ($i%2 == 0) echo "</tr>\n";

}
?>
</table>
 
WRInaute accro
voilou. mais dans le cas ou il y ai plsu de 2 colonnes, c est mieux de faire le $i++ tout à la fin, pour pouvoir vérifier si $i est divisible par 3. ici ca marche car l'intervale est que de 2.
 
WRInaute discret
j'ai essayé tes deux solutions d'e-kiwi, mais quand la colonne de gauche comprend une catégorie de plus que celle de droite, il ne ferme pas le </tr>.
 
WRInaute accro
"uand la colonne de gauche comprend une catégorie de plus que celle de droite"

ce n est poassible que pour la derniere ligne, non ? dans ce cas il suffit de rajouter une condition apres la parenthese fermante : si la derniere catégorie est à gauche, rajouter <td>&nbsp;</td></tr> (il faut bien avoir 2 colonnes tout le temps, meme en derniere ligne :))
 
WRInaute discret
j'ai remis un if après l'accolade fermante et cela semble fonctionner, mais je suis pas sur que cela soit ça, si quelqu'un pouvait me rassurer.
Code:
			<?php
		}
		echo "<br /><br /></td>\n"; 
			?>
			<?php
		if ($i%2 != 0)
			echo "</tr>\n";
		$i++;
	}
		if ($i%2 != 0)
			echo "<td>&nbsp;</td></tr>\n";
	?>
	</table>
 
WRInaute accro
je sais pas, difficile de tete sans voir le code source généré par ton serveur :) tu dois bien le voir si c'est ok, non ?
 
WRInaute discret
Quand je regarde la source le </tr> est bien là, j'ai testé avec une catégorie d'écart entre les colonnes et avec le même nombre de catégorie dans chaque colonne et ça m'a l'air bon.
Quand je le passe à la validation du W3C il me dit que c'est bon aussi, ma dernière erreur n'éxiste plus.
merci de ton aide.
 
Discussions similaires
Haut