Parse error: syntax error, unexpected '{'

Résolu/Fermé
Fchaps Messages postés 120 Date d'inscription mercredi 23 décembre 2009 Statut Membre Dernière intervention 26 décembre 2016 - Modifié par Fchaps le 15/03/2012 à 03:41
Fchaps Messages postés 120 Date d'inscription mercredi 23 décembre 2009 Statut Membre Dernière intervention 26 décembre 2016 - 17 mars 2012 à 01:41
Bonjour,

J'ai un souci et je ne vois vraiment pas le problème....

Voilà le message d'erreur renvoyé :
Parse error: syntax error, unexpected T_STRING in ...... on line 86


<?php      
        if($profil['connectes_id'] == $profil['membre_id'])      
        {     
        ?>      
        <span class="actif"><?php echo htmlspecialchars($profil['membre_pseudo'], ENT_QUOTES); ?> est connecté</span>      
        <?php      
        }      
                                              
        else      
        {      
        ?>      
        <span class="inactif"><?php echo htmlspecialchars($profil['membre_pseudo'], ENT_QUOTES); ?> est déconnecté</span></li>      
        <?php      
        }      
?>



Merci d'avance aux intervenants ;)



Tout vient à point à qui sait attendre!

14 réponses

Bonjour

Laquelle est la ligne 86 ? Et si c'est la première, peux-tu montrer les 10 lignes précédentes ?
0
Fchaps Messages postés 120 Date d'inscription mercredi 23 décembre 2009 Statut Membre Dernière intervention 26 décembre 2016 16
Modifié par Fchaps le 16/03/2012 à 01:09
 <div class="avatar">   
         <?php   
         if($profil['membre_avatar'] == '')   
         {   
               echo 'Pas d\'avatar';   
         }   
         ?>   

         </div>   
<!--liste//-->   
          <ul>   
                 <li><b>Pseudo :</b> <?php echo htmlspecialchars($profil['membre_pseudo'], ENT_QUOTES); ?></li>   
                 <li><b>Date d'inscription :</b> <?php echo mepd($profil['membre_inscription']); ?></li>   
                 <li><b>Groupe :</b> <?php if($profil[membre_banni] == 1) echo 'bannis'; else echo 'membres'; ?></li>   
                 <li><b>Dernier passage :</b> <?php echo mepd($profil['membre_derniere_visite']); ?></li>   
                 <li><b>Statut :</b>   
         <?php   
        if($profil['connectes_id'] == $profil['membre_id'])   
         {


Voilà les lignes précédentes, et donc la ligne 86 correspond à la dernière ligne, le "if"

soit la première sur le code précédent.

J'ai déjà fait le tour, aucun point virgule manquant, aucunes accolades qui n'a pas sa fermante.....je comprend vraiment pas.


Tout vient à point à qui sait attendre!
0
AssassinTourist Messages postés 5709 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 310
16 mars 2012 à 10:05
Je lis $profil[membre_banni] au lieu de $profil['membre_banni']
0
C'est effectivement anormal, sauf si (peu probable) membre_banni est défini comme une constante.
Il faudra alors comprendre pourquoi l'erreur n'est qu' à la ligne 86. Mais ce numéro n'est peut-être pas le bon, les indications de Fchaps ne sont pas très fiables puisqu'il met en titre que son erreur est "unexpected '{'" puis dans le texte que l'erreur est "unexpected T_STRING"
0
AssassinTourist Messages postés 5709 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 310
16 mars 2012 à 10:27
Il arrive souvent qu'une erreur en amont se répercute d'une manière ou d'une autre plus bas (suivant la façon qu'a le navigateur de lire tout ça)

Mais je ne dis pas que l'erreur est forcément celle-là.
0
Il arrive souvent qu'une erreur en amont se répercute d'une manière ou d'une autre plus bas
C'est bien pour ça que je lui ai demandé les lignes précédentes. Mais une erreur qui apparaît en aval d'une autre est quand même toujours explicable. Et ici, je ne la vois pas l'explication.

(suivant la façon qu'a le navigateur de lire tout ça)
Ça m'étonne que tu écrives ça. Tu sais bien que la navigateur n'a rien à voir avec l'analyse syntaxique faite par le PHP du serveur. Dans le pire des cas, on se retrouve avec des variables non définies, mais un unexpected T_STRING ou {, je ne vois pas comment

Mais je ne dis pas que l'erreur est forcément celle-là
Il y a quand même de très grandes chances que si.
0
AssassinTourist Messages postés 5709 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 310
16 mars 2012 à 11:08
Quand je parlais de la façon qu'avait le navigateur de lire tout ça, c'est que nous en tant qu'être humain, ce qu'on on écrit paraît logique (par exemple $profil[membre_banni]) alors que le navigateur / compilateur / serveur / machine va être bête et méchant et ne va pas chercher notre logique, juste notre syntaxe.
0
Fchaps Messages postés 120 Date d'inscription mercredi 23 décembre 2009 Statut Membre Dernière intervention 26 décembre 2016 16
Modifié par Fchaps le 16/03/2012 à 19:00
Oui de toute façon, ca n'a aucun rapport avec ça puisque depuis j'ai repris le code à zéro, il me trouve des erreurs sur chaque ligne if qui contient ==
En le réecrivant simplement sans rien changé ca passe, mais la il me bloque un peu plus haut.

Je met tout le début du code :

<?php

session_start();
header('Content-type: text/html; charset=utf-8');
include('../includes/config.php');

/********Actualisation de la session...**********/

include('../includes/fonctions.php');
connexionbdd();
actualiser_session();

/********Gestion avant affichage...***********/
if($_GET['id'] == '')
{
if(isset($_SESSION['membre_id'])) $id = $_SESSION['membre_id'];
else $id = -1;
}

else $id = $_GET['id'];

$profil = sqlquery("SELECT * FROM membres
LEFT JOIN connectes
ON connectes_id = membre_id
WHERE membre_id=".intval($id), 1);
if($profil['membre_id'] == '' || $id == -1)
{
$informations = Array(
true,
'Page membre inconnue',
'Ce membre n\'existe pas.',
'',
'../index.php',
3
);
require_once('../information.php');
exit();
}

/********En-tête et titre de page*********/

$titre = 'Membre : '.htmlspecialchars($profil['membre_pseudo'], ENT_QUOTES).'';

include('../includes/haut.php');

/**********Fin en-tête et titre***********/
?>

<div id="colonne_gauche">
<?php
include('../includes/colg.php');
?>
</div>
<!--contenu//-->
<div id="contenu">
<div id="map">
<a href="../index.php">Accueil</a> => <a href="user.php?id=<?php echo intval($profil['membre_id']); ?>">Profil de <?php echo htmlspecialchars($profil['membre_pseudo'], ENT_QUOTES); ?></a>
</div>

<h1>Profil de <?php echo htmlspecialchars($profil['membre_pseudo'], ENT_QUOTES); ?></h1>

<div class="profil_cellule_float">
<h2>Informations générales</h2>


<div class="avatar">
<?php
if($profil['membre_avatar'] == '')
{

echo 'Pas d\'avatar';
}
?>
</div>
<!--liste//-->
<ul>
<li><b>Pseudo :</b> <?php echo htmlspecialchars($profil['membre_pseudo'], ENT_QUOTES); ?></li>
<li><b>Date d'inscription :</b> <?php echo mepd($profil['membre_inscription']); ?></li>
<li><b>Groupe :</b> <?php if($profil['membre_banni'] == 1) echo 'bannis'; else echo 'membres'; ?></li>
<li><b>Dernier passage :</b> <?php echo mepd($profil['membre_derniere_visite']); ?></li>
<li><b>Statut :</b>
<?php
if($profil['connectes_id'] == $profil['membre_id'])
{
?>
<span class="actif"><?php echo htmlspecialchars($profil['membre_pseudo'], ENT_QUOTES); ?> est connecté</span>
<?php
}

else
{
?>
<span class="inactif"><?php echo htmlspecialchars($profil['membre_pseudo'], ENT_QUOTES); ?> est déconnecté</span></li>
<?php
}
?>
</ul>
</div>



Donc je sais déjà qu'elle va être la suite des erreurs, ce sont les 3 en gras, la je bloque sur la première, sur l'avatar alors que c'est la même ligne que sur le code précédent qui passait pourtant....

Il me trouve un T_STRING, et si j'arrive a passer cette erreur (simplement en réecrivant la ligne, il arrive sur une erreur "unexpected '{'" sur l'accolade du dessous.
Tout vient à point à qui sait attendre!
0
AssassinTourist Messages postés 5709 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 310
Modifié par AssassinTourist le 16/03/2012 à 19:02
Il retourne une erreur pour ce que tu as mis en gras ? Il laisse passer les autres if( == ) ? C'est toujours la même erreur qu'il affiche ?

Quelle valeur y a-t-il dans $profil['membre_avatar'] ? N'y a-t-il pas des guillemets/parenthèses/autres trucs qui pourraient le gêner lorsqu'il remplace sa valeur ?
0
Fchaps Messages postés 120 Date d'inscription mercredi 23 décembre 2009 Statut Membre Dernière intervention 26 décembre 2016 16
16 mars 2012 à 19:21
oui il me retourne un T_STRING de puis le début du code, la première était sur celle ci :
/********Gestion avant affichage...***********/
if($_GET['id'] == '')

simplement en le réecrivant, il fini par l'accepter et passer sur :
if($profil['membre_id'] == '' || $id == -1)

idem que pour la précédente, il passe en la réecrivant mais bloque ensuite sur l'accolade ouvrante en dessous en me mettant un unexpected '{'

Mais la le fait de recopier simplement la ligne ne fonctionne pas pour :
if($profil['membre_avatar'] == '')

alors que dans mon code précédent cela finissait par passer, c'est pour cela que je sais qu'une fois cette ligne reglée, il me trouvera les mêmes erreurs sur les deux autres lignes en gras
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
graffx Messages postés 6506 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 24 mars 2019 1 973
16 mars 2012 à 20:28
Mails ne manque pas des { et } ?

<?php if($profil['membre_banni'] == 1) echo 'bannis'; else echo 'membres'; ?>
0
Non, il n'en manque pas. Les { et } ne servent qu'à regrouper plusieurs instructions et n'ont aucune utilité s'il y en a une seule après le if ou le else, ou dans le for ou le while.
0
Fchaps Messages postés 120 Date d'inscription mercredi 23 décembre 2009 Statut Membre Dernière intervention 26 décembre 2016 16
16 mars 2012 à 21:48
oui d'accord j'avais zappé dans cette ligne, mais ca ne change rien à mon problème qui se trouve plus haut
0
As-tu essayé de modifier cette ligne :
/********En-tête et titre de page*********/ 
$titre = 'Membre : '.htmlspecialchars($profil['membre_pseudo'], ENT_QUOTES).'';

par celle-ci :
/********En-tête et titre de page*********/ 
$titre = 'Membre : '.htmlspecialchars($profil['membre_pseudo'], ENT_QUOTES);
0
Fchaps Messages postés 120 Date d'inscription mercredi 23 décembre 2009 Statut Membre Dernière intervention 26 décembre 2016 16
17 mars 2012 à 00:39
la synthaxe est bonne ici
0
La chaîne vide à la fin était inutile, mais il n'y a aucune raison pour que sa suppression change quoi que ce soit.
0
En le réecrivant simplement sans rien changé ca passe
Mais si, quand tu ré-écris tu changes quelque chose.
J'ai essayé ton code et je n'ai aucun unexpected T_SRING ou {
J'ai fortement tendance à penser que ton fichier contient des caractères que tu ne vois pas et qui disparaissent lors de la refrappe. L'as-tu initialement tapé toi-même où l'as-tu récupéré quelque part ?
As-tu un éditeur hexadécimal pour vérifier son contenu réel ?
0
Fchaps Messages postés 120 Date d'inscription mercredi 23 décembre 2009 Statut Membre Dernière intervention 26 décembre 2016 16
17 mars 2012 à 00:58
Celui ci oui c'est des bouts de copier coller, je me forme au php, j'ai suivi ce tuto sur le site du zéro, donc les portions qui ne pose pas de problème en lecture je les ai copié au lieu de les retaper.

Editeur héxadécimal? J'édite mon code sur notepad ++ pour la coloration synthaxique c'est tout
0
Peux-tu mettre ton source sur cjoint.com (ou un autre) pour que je l'examine avec un éditeur hexadécimal ?
Evidemment, n'oublie pas de cacher les mots de passe s'il y en a
0
Fchaps Messages postés 120 Date d'inscription mercredi 23 décembre 2009 Statut Membre Dernière intervention 26 décembre 2016 16
17 mars 2012 à 01:11
0
Ouh la la ! Il est tout pourri ton source. de l'UTF8 avec BOM pour commencer, mais aussi tous les caractères espace ne sont pas des espaces ASCII (code hexa 20) sauf là où tu as retapé. Je regarde plus en détail et je te dis.
0
Fchaps Messages postés 120 Date d'inscription mercredi 23 décembre 2009 Statut Membre Dernière intervention 26 décembre 2016 16
17 mars 2012 à 01:22
J'ai regardé aussi avec EditHexa, mais alors moi je vois plein de caractères A avec accent et des fois c'est des points, les deux sont censés etre des espace il me semble, mais bon j'y connais rien la dessus dans l'encodage, utf-8, voilà ca s'arrête là pour moi :/
0
Tiens je l'ai nettoyé

http://www.toofiles.com/fr/oip/documents/php/861_user.html
N'oublie pas de préciser à NotePad++ que tu veux travailler SANS BOM. Le BOM empêche de marcher les sessions et autres headers.

Les codes C2 A0 que tu voyais correspondaient à des espaces insécables qui ne plaisent sûrement pas à PHP

Pour travailler sans BOM voir menu Format de Notepad ++
0
Fchaps Messages postés 120 Date d'inscription mercredi 23 décembre 2009 Statut Membre Dernière intervention 26 décembre 2016 16
17 mars 2012 à 01:37
Oh un grand merci ca marche nickel ;)
0
J'en suis heureux pour toi. Et pour moi aussi, je vais enfin pouvoir aller faire un gros dodo.À mon âge ce n'est pas raisonnable de traîner si tard ^^
0
Fchaps Messages postés 120 Date d'inscription mercredi 23 décembre 2009 Statut Membre Dernière intervention 26 décembre 2016 16
17 mars 2012 à 01:41
Du coup je vais garder l'editeur hexadecimal au cas ou certains de mes fichiers auraient besoin d'être nettoyé également.

Encore merci et bonne nuit ;)
0