8797 sujets

Développement web côté serveur, CMS

Bonjour j'ai voulu valider une de mes pages que j'ai faite pour mon site web, malheureusement avec le php présent dans mes pages sa pose des problèmes que je n'arrive pas à résoudre.

Voici le code source de la page en question:
<?php
        include('../securise/fonction.php');            
        connexionbdd();

		setLocale(LC_TIME, "fr_FR", "FRA");
		$mois = strftime("%B");
		$mois = "'$mois'";	
		$annee = strftime("%Y");
		$annee = "'$annee'";
		

		$requete_news = mysql_query("SELECT news.id, news.titre, news.contenu, news.auteur, news.njour, news.mois, news.annee, COUNT(commentaires.id) AS nb_commentaires FROM news LEFT JOIN commentaires ON news.id=commentaires.idnews WHERE news.valide=1 and news.mois=".$mois." and news.annee=".$annee." GROUP BY news.id ORDER BY news.id DESC LIMIT 0, 5");

            while ($donnees_news = mysql_fetch_assoc($requete_news))
				{ echo '<div class="page1">';
                  echo "<h3 class='titrenews1'>";
				  echo html_entity_decode($donnees_news['titre']);
                  echo " posté le ";
                  echo html_entity_decode($donnees_news['njour']);
				  echo " ";
				  echo html_entity_decode($donnees_news['mois']);
				  echo " ";
				  echo html_entity_decode($donnees_news['annee']);
                  echo " par ";
                  echo html_entity_decode($donnees_news['auteur']);
				  echo "</h3>";
                  echo "<p class='contenunews'>";
                  $contenu = html_entity_decode($donnees_news['contenu']);
				  echo substr ($contenu,0,500);
				  echo '<a href="Acceuil.php?page=Actualite&id_news= '.$donnees_news['id'].'"> ... lire la suite </a>';
				  echo "</p>";
				  echo '<div class="comnews">';
				  echo '<a href="Acceuil.php?page=commentaires&id_news= '.$donnees_news['id'].'">Il y a '.$donnees_news['nb_commentaires'].' commentaires</a>';
				  echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
				  echo '<a href="Acceuil.php?page=ajout_commentaire&idnews= '.$donnees_news['id'].'">Ajouter un Commentaire </a>';
				  echo '</div>';
                  echo "</div>";
                } // Fin de la boucle des news
			 
			mysql_close(); // fermeture de la connexion
			?> 


et voici les erreurs afficher que je n'arrive pas à résoudre :
#  Warning  Line 116, Column 672: cannot generate system identifier for general entity "id_news".

…o<a href="Acceuil.php?page=Actualite&id_news= 66"> ... lire la suite </a></p>
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.


# Error Line 116, Column 672: general entity "id_news" not defined and no default entity.
…o<a href="Acceuil.php?page=Actualite&id_news= 66"> ... lire la suite </a></p>

This is usually a cascading error caused by a an undefined entity reference or use of an unencoded ampersand (&) in an URL or body text. See the previous message for further details.
Salut Thibautg,
Thibautg a écrit :
Bonjour j'ai voulu valider une de mes pages que j'ai faite pour mon site web, malheureusement avec le php présent dans mes pages sa pose des problèmes que je n'arrive pas à résoudre.
Le php n'intervient pas dans les erreurs qui te sont retournées par la validation w3c car seule la page html générée (donc après interprétation du php) est validée Smiley cligne !

Et d'après les messages je pense qu'il s'agit des & (esperluette) qu'il faut remplacer par des &amp; (entité html) Smiley smile .

A+

Edit: d'ailleurs la FAQ en parle.
Modifié par Heyoan (24 Jan 2008 - 02:12)
Merci de ta réponse, effectivement la validation ne se fait pas sur le php, je voulais dire que mon erreur vient de génération de php.

Le probléme c'est que je ne peut pas modifier cela par exemple :
 echo '<a href="Acceuil.php?page=Actualite&id_news= '.$donnees_news['id'].'"> ... lire la suite </a>'

dans cette instruction le & doit rester comme sa puisque c'est pour transmettre dans l'url en get.

j'ai essayer de mettre sa: "ini_set('arg_separator.output', '&amp;');" en début de php mais j'ai l'erreur suivante :
Warning: ini_set() has been disabled for security reasons in d:\www\tgillardeau.com\htdocs\php\Actualites.php on line 2


De plus dans les lien que tu ma fourni ils parlent de sessionstart, moi je ne l'utilise pas .

Voici le lien vers la page en questions si sa peut aider Par IcI
As-tu seulement essayé de remplacer le & par un &amp; dans la génération de l'url? Parce que cela doit résoudre ton problème et cela ne doit pas gener le navigateur qui le remplacera bien par un & dans l'url...
Effectivement je vient de penser a un truc j'avais essayer sa :

echo '<a href="Acceuil.php?page=Actualite&ampid_news= '.$donnees_news['id'].'"

Mais malheureusement cela ne marché pas
mais j'ai trouvé la solution et je la marque pour ceux qui rencontreré éventuellement le problème

echo '<a href="Acceuil.php?page=Actualite'&amp'id_news= '.$donnees_news['id'].'"

il faut fermer les guillemet mettre le &amp puis réouvrir les guillemets.

Merci beaucoup; bonne journée
Modifié par Thibautg (24 Jan 2008 - 15:09)
Salut,
Thibautg a écrit :
Mais malheureusement cela ne marché pas

C'est peut-être parce que tu n'as pas bien lu ce qu'a écrit Heyoan :
&amp;

(avec un point-virgule)
Donc :
echo '<a href="Acceuil.php?page=Actualite&amp;id_news= '.$donnees_news['id'].'"...

a+