Ton problème est situé dans la première ligne du code que tu as posté : tu utilises les tags d'ouverture PHP courts ( <? ), et c'est une fonctionnalité qui a été désactivée par défaut dans PHP5.
Il suffit de remplacer par le tag long équivalent ( <?php ) et tout devrait rentrer dans l'ordre.
Je voulais que tu fasses la démarche d'aller regarder la source HTML pour que tu voies bien le problème dans son ensemble : l'accesseur d'objet ( -> ) n'est pas responsable de ce qui t'arrive (En fait il paye juste sa ressemblance avec une fin de balise HTML, ce qui induit en erreur ton navigateur). Il faut que tu retiennes les points suivants :
- Le vrai résultat de l'éxécution de php sur le serveur est la source HTML de la page, que tu sais maintenant visualiser et examiner. L'affichage dans le navigateur n'est qu'une interprétation de cette dernière (si à la base PHP ne s'éxécute pas correctement, la représentation finale ne peut bien sûr pas être correcte, mais n'est pas le meilleur moyen de diagnostiquer l'origine).
- Comme PHP s'éxécute sur le serveur, il est complètement anormal d'avoir la moindre trace de code PHP au niveau du navigateur ou bien de la source HTML (et dans la grande majorité des cas, les short tags sont coupables...).
Est-ce que c'est mieux maintenant ?