5568 sujets

Sémantique web et HTML

Bonjour à tous,

Bon voilà, j'ai écumé le Web et pas de réponse à cette énigme : Firefox "invente" des balises !
Et bon, cela m'arrache de le dire, mais tout fonctionne correctement avec IE7...

Que ce soit avec Firefox 2.0 ou 3.0, le problème est le même : je génère une liste de liens assez longue en php (une boucle qui exécute n fois les mêmes instructions) et, bizarrement, quelques-uns d'entre eux sont doublés, avec une balise autofermante pour le premier des doublons. En fait, cela donne un truc du genre :


<!-- Balise autofermante "inventée" --> 
<a href="?menu=tests&amp;contenu=tests_affiche&amp;id_jeu=404"/> 

<!-- Balise correcte --> 
<p class="color0"><a href="?menu=tests&amp;contenu=tests_affiche&amp;id_jeu=404">1997 · <span class="titre_jeu">Comanche 3</span> · Novalogic · Simulation</a></p>


Du coup, alors que mon lien devrait être soumis au style <p class="color0">, il devient rouge (style des liens par défaut) et c'est bien moche.

Encore plus étrange, ce problème bien visible à l'écran n'est détecté que par Firebug, parce que quand j'affiche le code avec Web Developper, c'est parfait : il n'y a aucun doublon !

Alors j'ai désinstallé Firebug, en pensant que cela pouvait venir de son système de gestion des CSS en temps réel : pas de différence.

J'ai aussi modifié, en php, la concaténation de chaque lien, qui s'effectue ainsi :


for ($i=0;$i<$nblignes;$i++) 
	{$ligne=mysql_fetch_array($resultat);
	$parite=$i%2;
	$annee=$ligne['annee'];
	$id=$ligne['id'];
	$titre=$ligne['titre'];
	$bouts_chaine=explode("(",$ligne['genre']);
	$genre=rtrim($bouts_chaine[0]);
	$jeu=$annee." &middot; <span class='titre_jeu'>".$titre."</span>";
	verif_test($id);
	$jeu.=" &middot; ".$ligne['editeur']." &middot; ".$genre."";
	echo '<a href="?menu=tests&contenu=tests_affiche&id_jeu='.$id.'"><p class="color'.$parite.'">'.$jeu.'</p></a>';
	}


Mais cela ne change strictement rien.
D'ailleurs, je ne vois pas comment une routine php pourrait "dérailler" de manière aléatoire...

Et bien sûr, le problème est le même en local et en ligne, et sur plusieurs PC différents.

Alors si quelqu'un a une solution à me proposer, je suis preneur, parce que là, j'suis limit nervous breakdown...

Merci d'avance.
Modifié par Raskolnikov (13 Sep 2008 - 19:48)
Salut,

En tant que modérateur, je me dois de te faire remarquer que tu n'as malheureusement pas respecté l'une des Règles de base du forum qui est d'afficher les codes et exemples proprement à l'aide des boutons [ code]... ici ton code HTML, CSS, PHP, etc.[ /code] (sans espace).

Je te remercie par avance de bien vouloir éditer ton message afin de le rendre conforme à cette règle. Smiley cligne

D'ailleurs, je rappelle que le lien qui apparaît en bandeau tout en haut du forum ("Nouveau sur le forum ?...") est important. Il contient des pistes de recherche, des indications sur les règles de vie de la communauté, etc.
Il serait courtois de ta part de bien vouloir en prendre connaissance.

Bonne continuation Smiley smile

upload/1-code.gif
Modérateur
Salut,

As-tu un exemple en ligne ? Ce serait plus simple pour voir si vraiment erreur il y a ou si ce n'est que la manière dont Firebug restitue le code.
Administrateur
Bonjour,

tu sembles imbriquer un paragraphe dans un lien: ce n'est pas valide car un élément de type en ligne ne peut contenir un élément de type bloc (dernière ligne de ton code PHP)
Modérateur
Felipe a écrit :
Bonjour,

tu sembles imbriquer un paragraphe dans un lien: ce n'est pas valide car un élément de type en ligne ne peut contenir un élément de type bloc (dernière ligne de ton code PHP)
+1

Le mieux, à l'heure actuelle, serait de valider ton code avant d'entreprendre tout développement supplémentaire. Smiley cligne
En fait le problème n'est pas que Firefox invente des balises, mais que ton code est invalide. Donc Firefox tente de «récupérer» tes erreurs car, en interne, il a besoin de travailler à partir d'une représentation valide du document.

Si tu écris ceci:
<span><p>Un paragraphe</span></p>

alors Firefox comprendra surement ceci:
<span></span><p><span>Un paragraphe</span></p>

C'est à toi d'utiliser un code valide dès le départ si tu veux éviter ce genre d'erreur d'interprétation. Donc:
<p><span>Un paragraphe</span></p>

Modifié par Florent V. (13 Sep 2008 - 19:12)
Je n'ai pas commis d'erreur d'imbrication de balises, je ne suis pas débutant à ce point là... mais effectivement, placer un élément "bloc" dans un "en ligne" n'est pas valide, et il semble, d'après les essais que j'effectue actuellement, que cela soit bien ça le coeur du problème. Il faudra juste m'expliquer pourquoi IE n'y voit que du feu...
Sinon, la validation, c'est bien, mais il me détecte une foultitude d'erreurs qui n'existent pas (des balises fermantes non ouverte par exemple). Il n'y aurait pas un problème avec le code généré en php ?
En tout état de cause, j'avance, j'avance... et c'est grâce à vous. Merci.
Modérateur
Raskolnikov a écrit :
Sinon, la validation, c'est bien, mais il me détecte une foultitude d'erreurs qui n'existent pas (des balises fermantes non ouverte par exemple). Il n'y aurait pas un problème avec le code généré en php ?
A partir du moment où certaines erreurs sont commises, le validateur est susceptible de générer des erreurs qui n'existent pas dans la suite de son analyse. Donc rassure-toi, tu n'as pas 216 erreurs. Smiley cligne

Tu n'as qu'à corriger systématiquement la première indiquée et les autres diminueront comme par enchantement.

Concernant PHP, celui-ci ne te génère du code invalide que parce que c'est ce que tu lui demandes actuellement. Celui-ci ne se soucie guère de la validation (X)HTML; il ne fait que reproduire et n'est en aucun cas générateur d'erreurs de par son fonctionnement. Il faut donc bien faire attention au code (X)HTML que tu inclues dans tes instructions avant de lancer des boucles, ou autres...
P'tain, les mecs, c'est ça.
J'ai placé les liens dans les paragraphes, effectué deux/trois modifs dans les css, et ça marche !
Je n'ai pas creusé cette piste parce que, de mon point de vue, le problème aurait dû être présent sur TOUT les liens, et pas un ou deux, au hasard... ce qui reste assez étrange, quand même...
Bon ben, mon site est maintenant impec sur Firefox, IE6 et IE7... mais, sur vos conseils, je vais faire les correctifs nécessaires à sa validation (enfin, l'essentiel des correctifs, parce que placer des alt sur des images qui apparaissent ensuite au survol de la souris, sur IE, je préfère éviter).
Bon, je vais voir comment on déclare un topic résolu, et je reviens...
Un grand merci à vous.
Modifié par Raskolnikov (13 Sep 2008 - 19:43)
Modérateur
Le alt est important pour toutes images faisant office de contenu. C'est ce qui permet d'avoir un rendu de l'information que les images soit présentes ou non.

Pour le cas d'IE qui affiche le alt, il suffit d'ajouter un title vide pour supprimer cet effet.
Je sais à quel point les alt sont importants et j'en ajoute un à chaque fois que cela me paraît nécessaire (y compris, et surtout, sur les boutons de navigation)... mais ton title="" va me permettre d'en ajouter sur des images "décoratives" (non affichables en background par css parce que sélectionnées aléatoirement en php) dont je ne voulais pas que, sous IE, elles affichent un bidule au survol de la souris...
Bref, une soirée très très instructive. Smiley biggrin
Merci.
Bonsoir,

Juste histoire d'éclaircir un peu plus les choses : pour les images décoratives, il faut aussi que le alt soit vide...
Bien sûr, s'ils ne sont porteurs d'aucune information...
Mais, dans le cas d'un alt vide, le validateur W3C ne tique pas ?
Enfin, remarque, je vérifierai moi-même...
Bonjour chez vous.
Raskolnikov a écrit :
Mais, dans le cas d'un alt vide, le validateur W3C ne tique pas ?

Non, c'est:
1. valide (présence d'un attribut alt requis);
2. conseillé pour les images purement décoratives.
Donc pas de problème.
Merci pour l'info.
Bon, j'ai corrigé 95% des anomalies détectées par le validateur du W3C. Je finirai demain parce que là, j'ai les yeux qui piquent.
Sinon, un truc marrant, le validateur refuse les & qui proviennent de ma base de données ("Might & Magic", par exemple), en exigeant que je les corrige en &amp; ! C'est quand même un truc de furieux, le XHTML 1.0 Strict...
Allez, bonne nuit.
[HS]
Félicitations pour le site en tout cas, très beau boulot, je me suis surpris à relire des tests que j'avais déjà lu à l'époque...
[/HS]

Et à part ça euh, non c'est tout Smiley lol
Modifié par Tymlis (14 Sep 2008 - 04:03)
Ben, merci beaucoup.
Cela m'encourage à en enrichir le contenu (encore très pauvre).
Mais avant ça, je vais le rendre conforme aux exigences du W3C. Je n'en suis plus qu'à quelques encablures... Smiley smile