Probleme affichage d1 lien commentaire sur news

Eléphant du PHP | 78 Messages

28 juil. 2006, 15:31

Bonjour a tous,
j'ai ici un code qui fonctionne parfaitement SAUF pour afficher le liens de commentaires...
function news($data)
{
global $bgcolor1, $bgcolor2, $bgcolor3, $bgcolor4;
$comment = "<a href=\"index.php?file=News&op=index_comment&news_id=" . $data['id'] . "\">" . _NEWSCOMMENT . "</a>&nbsp;(" . $data['nb_comment'] . ");
?>
echo' <br><table width="97%" border="0" align="center" valign="top" cellpadding="3" cellspacing="0" bgcolor="#FFFFFF">
<tr>
<td width="10%" align="left" valign="middle">'.$data[image].'</td>
<td width="60%" valign="top"><img src="themes/new/image/puce.jpg">&nbsp;<b>'.$data[titre].' :: '.$data[auteur].'</b></td>
<td width="30%" align="right" valign="top">'.$data[date].'&nbsp;'._AT.'&nbsp;'.$data[heure].'</div></td></tr>
<tr><td width="10%">&nbsp;</td><td width="90%" colspan="2">'.$data[texte].'</td></tr>
<tr><td colspan="3" align="right">'.$comment.'</td>
</tr></table>';
} 

Et j'ai une erreur : Parse error: syntax error, unexpected T_LNUMBER in /home.2/pzykoz/www/cs/themes/new/theme.php on line 21

Ps: la ligne 21 correspond pas j'ai tronqué le debut.

edit : dsl j'avais fai une erreur
Modifié en dernier par Morkem le 28 juil. 2006, 16:01, modifié 1 fois.
Morkem

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

28 juil. 2006, 15:40

Ce type d'erreur (unexpected t_number..) apparait lorsqu'un élément (nombre, variable, texte) est trouvé alors que PHP attendait autre chose.

C'est typiquement un problème de chaîne mal fermée, de variable mal placée, ici il manque un guillemet quelque part.
Reprend tes chaines depuis le début et regarde bien ;)

On le voit assez bien avec la coloration syntaxique

On verra ensuite pour l'autre problème

Eléphant du PHP | 78 Messages

28 juil. 2006, 15:46

function news($data)
{
global $bgcolor1, $bgcolor2, $bgcolor3, $bgcolor4;
$comment = <a href=\"index.php?file=News&op=index_comment&news_id=" . $data['id'] . "\">" . _NEWSCOMMENT . "</a>&nbsp;(" . $data['nb_comment'] . ");

echo' <br><table width="97%" border="0" align="center" valign="top" cellpadding="3" cellspacing="0" bgcolor="#FFFFFF">
<tr>
<td width="10%" align="left" valign="middle">'.$data[image].'</td>
<td width="60%" valign="top"><img src="themes/new/image/puce.jpg">&nbsp;<b>'.$data[titre].' :: '.$data[auteur].'</b></td>
<td width="30%" align="right" valign="top">'.$data[date].'&nbsp;'._AT.'&nbsp;'.$data[heure].'</div></td></tr>
<tr><td width="10%">&nbsp;</td><td width="90%" colspan="2">'.$data[texte].'</td></tr>
<tr><td colspan="3" align="right">'.$comment.'</td>
</tr></table>';
}
Exact merci

Maintenant j'ai ca : Parse error: syntax error, unexpected '<' in /home.2/pzykoz/www/cs/themes/new/theme.php on line 19
comme tu l'avais dit :s
Morkem

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

28 juil. 2006, 15:57

Même chose, le problème n'est pas résolu

Problème sur cette ligne : $comment =...

Il faudrait aussi que tu édites le titre du sujet qui n'est pas très parlant

Eléphant du PHP | 78 Messages

28 juil. 2006, 16:12

En fait c'est pour afficher un lien Commentaires
$comment = <a href="index.php?file=News&op=index_comment&news_id=" . $data['id'] . "\">" . _NEWSCOMMENT . "</a>

avec le nombre de commentaire a coté (0)
(" . $data['nb_comment'] . ")
Mais visiblement j'ai raté un truc
Morkem

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

28 juil. 2006, 16:25

Oui oui j'ai bien compris, mais le problème n'est pas là

L'erreur est pourtant explicite : "<" inattendu
C'est donc qu'il y a un "<" qui est mal placé, c'est un caractère qui devrait être dans une chaîne et a priori il ne l'est pas.

Regarde bien cette ligne, c'est une bête faute de syntaxe :
$comment = <a href="index.php?file=News&op=index_comment&news_id=" . $data['id'] . "\">" . _NEWSCOMMENT . "</a>
Il n'y a rien qui te choque ? Reprend la lettre par lettre depuis le début :D

Erreur de syntaxe, c'est souvent une histoire de guillemet ;)

Eléphant du PHP | 78 Messages

28 juil. 2006, 16:43

Ba ecoute je vois pas trop....

Un lien est de la forme
<a href="le_lien">le_nom_du_lien</a>

Je rajoute donc le lien
<a href="index.php?file=News&op=index_comment&news_id=1">le_nom_du_lien</a>

Je rajoute la fonction pour trouver l'id de la news
<a href="index.php?file=News&op=index_comment&news_id=" . $data['id'] . "">le_nom_du_lien</a>

Comme il y a 2 guillemets je rajoute un \
<a href="index.php?file=News&op=index_comment&news_id=" . $data['id'] . "\">le_nom_du_lien</a>

Et enfin je change le nom du lien par la fonction
<a href="index.php?file=News&op=index_comment&news_id=" . $data['id'] . "\">" . _NEWSCOMMENT . "</a>

Devant je claque la fonction de rappel pour la rappeler plus tard
$comment = <a href="index.php?file=News&op=index_comment&news_id=" . $data['id'] . "\">" . _NEWSCOMMENT . "</a>

Et vala :(
Morkem

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

28 juil. 2006, 16:48

Ta ligne :
$comment = <a href="index.php?file=News&op=index_comment&news_id=" . $data['id'] . "\">" . _NEWSCOMMENT . "</a>&nbsp;(" . $data['nb_comment'] . "); 
Ma ligne :
$comment = "<a href=\"index.php?file=News&op=index_comment&news_id=" . $data['id'] . "\">" . _NEWSCOMMENT . "</a>&nbsp;(" . $data['nb_comment'] . ")";
La chaîne n'était pas ouverte avant le "<a", ce qui fait que le " devant index était considéré comme guillemet ouvrant. D'où le "<" innatendu puisqu'il se baladait à l'extérieur de la chaîne et donc PHP ne comprenait pas ce qu'il faisait ici.
La chaîne n'était pas fermée après la )

Eléphant du PHP | 78 Messages

28 juil. 2006, 16:52

Arf c'etais juste qu'il n'etait pas fermé... merci beaucoups ca fonctionne ;)
Morkem