8791 sujets

Développement web côté serveur, CMS

Bonsoir à toutes et à tous,

Difficile de trouver un autre titre, tellement mon problème est bizarre.

J'ai une page que j'inclus sur deux ou trois pages dans mon site. Cette page, est une présentation sommaire d'un des biens immobiliers du patrimoine. Et ce de manière aléatoire.
J'affiche une miniature, le nom, l'adresse, la superficie, une petite description, et le lien vers la fiche complète.

Tout fonctionne parfaitement sauf le lien vers la fiche complète. D'autant plus, que sur les 30 bâtiments, il fonctionne parfaitement une fois sur un seul bâtiment.
A noter, que lorsque je dis que cela ne fonctionne pas, en fait le lien "En savoir plus..." n'apparaît pas sur la page. Et quand il apparaît, il fonctionne.

Je vous joins mon code PHP :


<?php
$liendb = mysql_connect('localhost', 'XXX', 'XXX');
mysql_select_db ('acanthe');

$sql = ('SELECT * FROM `patrimoine` ORDER BY RAND() LIMIT 1');
$resultat = mysql_query ($sql);

		while ($infos = mysql_fetch_array ($resultat))
		{
			$id = $infos['id'];
			$nom_rep_photo = $infos['nom_rep_photo'];
			$photo_1 = $infos['photo_1'];
			$nom = $infos['nom'];
			$description = $infos['description'];
			$ville = $infos['ville'];
			$surface = $infos['surface'];

			echo "<h2 class=\"zoom-sur\">ZOOM SUR</h2>
			<h3 class=\"zoom-sur\">$nom</h3>
			<p class=\"description\">$description</p>
			<p><img src=\"http://localhost:8888/acanthe/acan/fr/patrimoine/photos/$nom_rep_photo/minis/$photo_1.jpg\" alt=\"$nom\" /></p>
			<p class=\"description\">Surface : $surface m&#178;
			<br/>Cet immeuble est situ&#233; &#224; $ville.</p>
			<p class=\"description\"><a href=\"http://localhost:8888/acanthe/acan/fr/patrimoine/index.php?page=batiments&id=$id\">En savoir plus...</a></p>";
		}
		
mysql_close($liendb);

?>


En espérant que vous pourrez résoudre ce mystère, je vous souhaite une bonne soirée Smiley cligne
Modifié par seby2027 (27 Mar 2009 - 17:38)
Salut

Tu n'aurais pas des caractères spéciaux qui trainerait dans par exemple la variable $ville.
Par exemple une fermeture de balise.

Le mieux c'est de regarder ton code source et voir si il est valide.

Edit : D'ailleurs un htmlspecialchars sur chaque variable est plus que nécessaire
Modifié par benj (26 Mar 2009 - 23:27)
Hello,

ben je ne vois aucune raison pour que le lien ne s'affiche pas... ce ne serait pas tout simplement un problème de css (chevauchement d'un bloc conteneur ou autre) ? Pour s'en assurer il suffit d'afficher la source du html généré.
Alors, comme vous me l'avez conseillé, j'ai regardé le code généré.
Et mon lien est bien généré avec le bon ID.

Ouf, PHP ne débloque pas Smiley smile

Le problème vient donc du CSS, et pourquoi M. s'affiche que pour un cas sur trente ?
Et là je me suis souvenu que Safari posait quelques problèmes avec les CSS parfois.
J'ai donc démarré ce bon vieux FireFox 3, et là... nickel chrome (sans jeu de mots) ça fonctionne très bien ! Smiley biggrin

Mais alors je ne comprends pas pourquoi Safari met le bazar.

Je vous copie mon code CSS :

.description a, a:link, a:visited {
	color : navy;
	text-decoration : none;
}


A noter que j'ai cherché sur Google et que je n'ai rien trouvé de très concluant.
Modifié par seby2027 (27 Mar 2009 - 14:15)
Avec si peux, on ne va pas pouvoir t'aider.
As tu essayé d'enlever simplement tous le css de ta page pour voir si ça vient de lui.

- Si c'est lui, essaie de localiser d'ou vient le bug dans ta feuille de style.
- Si c'est pas le css, ça vient du html. Et comme je te l'ai dit précédement vérifie si ton code est valide avec le validateur du W3C.
J'ai testé ma page au validateur W3C HTML, elle n'est pas valide.
Il y a 3 erreurs et 4 warnings. Les 7 erreurs sont toutes situées à la même ligne, et elles sont toutes dans le lien généré (celui qui ne se voit pas).
Pour ne pas vous flooder avec les erreurs je ne vous mets que la première.

J'ai déjà eu ce type d'erreurs sur d'autres site, mais elles ne posaient pas de problèmes comme je rencontre aujourd'hui.

a écrit :
Line 24, Column 130: cannot generate system identifier for general entity "id"
…patrimoine/index.php?page=batiments&id=28">En savoir plus...</a></p></div>
&#9993;
An entity reference was found in the document, but there is no reference by that name defined. Often this is caused by misspelling the reference name, unencoded ampersands, or by leaving off the trailing semicolon (;). The most common cause of this error is unencoded ampersands in URLs as described by the WDG in "Ampersands in URLs".

Entity references start with an ampersand (&) and end with a semicolon (;). If you want to use a literal ampersand in your document you must encode it as "&amp;" (even inside URLs!). Be careful to end entity references with a semicolon or your entity reference may get interpreted in connection with the following text. Also keep in mind that named entity references are case-sensitive; &Aelig; and &aelig; are different characters.

If this error appears in some markup generated by PHP's session handling code, this article has explanations and solutions to your problem.

Note that in most documents, errors related to entity references will trigger up to 5 separate messages from the Validator. Usually these will all disappear when the original problem is fixed.


Lorsque je désactive tous les styles, je vois bien mon lien "En savoir plus...", avec tous les navigateurs.

Je pense que le problème vient de Safari vs. CSS.
Et je n'arrive pas à trouver d'où vient le bug.
Cette erreur est simple à corriger. Remplace le caractère & par sont entité html : &amp;
Mais ce ne doit pas être en effet la cause de ton problème...

Pour localiser ton problème dans ton css, tu peux supprimer chaque bloc de déclaration un par un, jusqu'a que ton lien apparaisse.
J'ai enfin trouvé le problème.

Avant :

.description a, a:link, a:visited {
	color : navy;
	text-decoration : none;
}


Après :

.bloc-lateral .description a, a:link, a:visited {
	color : navy;
	text-decoration : none;
}


J'en déduis que Safari a besoin de la classe parente.

En fait c'était un problème de CSS.
Désolé pour l'erreur de catégorie donc.

Bonne journée à tous.