Parse error: syntax error, unexpected '{'

Résolu
Fchaps Messages postés 120 Date d'inscription   Statut Membre Dernière intervention   -  
Fchaps Messages postés 120 Date d'inscription   Statut Membre Dernière intervention   -
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

le père
 
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   Statut Membre Dernière intervention   16
 
 <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 6029 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
Je lis $profil[membre_banni] au lieu de $profil['membre_banni']
0
le père
 
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 6029 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
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
le père
 
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 6029 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
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   Statut Membre Dernière intervention   16
 
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 6029 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
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   Statut Membre Dernière intervention   16
 
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   Statut Contributeur Dernière intervention   1 975
 
Mails ne manque pas des { et } ?

<?php if($profil['membre_banni'] == 1) echo 'bannis'; else echo 'membres'; ?>
0
le père
 
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   Statut Membre Dernière intervention   16
 
oui d'accord j'avais zappé dans cette ligne, mais ca ne change rien à mon problème qui se trouve plus haut
0
ReDLoG
 
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   Statut Membre Dernière intervention   16
 
la synthaxe est bonne ici
0
le père
 
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
le père
 
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   Statut Membre Dernière intervention   16
 
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
le père
 
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   Statut Membre Dernière intervention   16
 
0
le père
 
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   Statut Membre Dernière intervention   16
 
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
le père
 
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   Statut Membre Dernière intervention   16
 
Oh un grand merci ca marche nickel ;)
0
le père
 
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   Statut Membre Dernière intervention   16
 
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