Page 1 sur 1

Erreur Parse error: syntax error,....

Posté : 09 sept. 2011, 08:31
par nouveau9
Bonjour,

quelqu'un peut-il m'indiquer où est l'erreur suivante:

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in /

dans le code suivant et à la ligne en rouge :
------------------------------
<?php
if (($action == 'update_option') && ($HTTP_GET_VARS['option_id'] == $options_values['products_options_id'])) {
echo '
$inputs = '';
for ($i = 0, $n = sizeof($languages); $i < $n; $i ++) {
$option_name = tep_db_query("select products_options_name from " . TABLE_PRODUCTS_OPTIONS . " where products_options_id = \'" . $options_values['products_options_id'] . "\' and language_id = \'" . $languages[$i]['id'] . "\'");
$option_name = tep_db_fetch_array($option_name);
$inputs .= $languages[$i]['code'] . ': <input type="text" name="option_name[' . $languages[$i]['id'] . ']" size="20" value="' . $option_name['products_options_name'] . '"> <br>';
}
?>
-----------------------------------
Je suis en PHP Version: 5.3.8 (Zend: 2.3.0) et il est possible que ce soit un changement de version de PHP qui donne l'erreur...

Merci de m'éclairer..

Re: Erreur Parse error: syntax error,....

Posté : 09 sept. 2011, 09:58
par macgawel
Bonjour.

1. Merci de mettre le code entre les balises qui vont bien (utiliser les boutons de mise en forme ou les balises
)
Le code sera plus lisible...

2. Dans 99% des cas, cette erreur signale un problème de quotes/guillemets ou de point-virgule [b]avant[/b] la ligne incriminée.
Si tu utilises un éditeur de texte à coloration syntaxique (Notepad++ pour Windows, par exemple), tu peux rapdiement voir les problèmes de guillemets/quotes.
Et si tu utilisais les balises qui vont bien (cf. 1.) tu pourrais aussi le voir :wink:

Re: Erreur Parse error: syntax error,....

Posté : 09 sept. 2011, 10:34
par Mazarini
$i ++
Il y a un blanc.

Re: Erreur Parse error: syntax error,....

Posté : 09 sept. 2011, 11:39
par nouveau9
Re-bonjour,

j'ai enlevé l'espace entre $i et ++ et le problême reste le même.

Je vous ai ré-affiché le code en cliquant sur le bouton PHP dans l'éditeur. Est-ce plus lisible ?
<?php
      if (($action == 'update_option') && ($HTTP_GET_VARS['option_id'] == $options_values['products_options_id'])) {
        echo '
        $inputs = '';
        for ($i = 0, $n = sizeof($languages); $i < $n; $i++) {
          $option_name = tep_db_query("select products_options_name from " . TABLE_PRODUCTS_OPTIONS . " where products_options_id = \'" . $options_values['products_options_id'] . "\' and language_id = \'" . $languages[$i]['id'] . "\'");
          $option_name = tep_db_fetch_array($option_name);
          $inputs .= $languages[$i]['code'] . ': <input type="text" name="option_name[' . $languages[$i]['id'] . ']" size="20" value="' . $option_name['products_options_name'] . '"> <br>';
        }
?>

Re: Erreur Parse error: syntax error,....

Posté : 09 sept. 2011, 11:51
par macgawel
j'ai enlevé l'espace entre $i et ++ et le problême reste le même.
Normal, l'espace n'est pas génant...
Je vous ai ré-affiché le code en cliquant sur le bouton PHP dans l'éditeur. Est-ce plus lisible ?
Oui.
D'ailleurs, une fois que tu auras pris l'habitude tu verras tout de suite le problème...
La version corrigée, qui colorise bien tout le programme :
<?php
      if (($action == 'update_option') && ($HTTP_GET_VARS['option_id'] == $options_values['products_options_id'])) {
        echo '
        $inputs = ';
        for ($i = 0, $n = sizeof($languages); $i < $n; $i++) {
          $option_name = tep_db_query("select products_options_name from " . TABLE_PRODUCTS_OPTIONS . " where products_options_id = \'" . $options_values['products_options_id'] . "\' and language_id = \'" . $languages[$i]['id'] . "\'");
          $option_name = tep_db_fetch_array($option_name);
          $inputs .= $languages[$i]['code'] . ': <input type="text" name="option_name[' . $languages[$i]['id'] . ']" size="20" value="' . $option_name['products_options_name'] . '"> <br>';
        }
?>
[HS] Tu peux même cliquer sur les fonctions, ça t'envoie directement sur la page du manuel (essaye avec sizeof() dans la version corrigée 8-) )

Re: Erreur Parse error: syntax error,....

Posté : 09 sept. 2011, 12:24
par nouveau9
Ok j'ai compris : l'erreur à $input (ligne 4 du code php) faisait en sorte que la commande "for" ne s'écrivait pas dans la bonne couleur...

Ce n'est pas moi qui ai écrit le code, donc j'essaye de détecter les erreurs...
mais maintenant j'ai une autre erreur plus avant dans le fichier : Parse error: syntax error, unexpected T_STRING in /

dans :
<tr class="<?php echo (floor($rows/2) == ($rows/2) ? 'att(floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?>">
Si j'ai bien compris et si j'analyse les codes couleurs, je vois que le 1er floor est rouge et pas le deuxième. Ca veut dire que l'erreur est entre le 1er floor et le 2eme ?
Est-ce le manque d'une parenthèse ? j'ai essayé d'en rajouter une à deux endroits mais c'est pareil...

Re: Erreur Parse error: syntax error,....

Posté : 09 sept. 2011, 12:50
par macgawel
Si j'ai bien compris et si j'analyse les codes couleurs, je vois que le 1er floor est rouge et pas le deuxième.
Bien vu =D>
Est-ce le manque d'une parenthèse ? j'ai essayé d'en rajouter une à deux endroits mais c'est pareil...
floor() est une fonction php.
Normalement, la coloration syntaxique doit le reconnaître, et le colorer en rouge.
Si une fonction n'est pas colorée, ce n'est pas un problème de parenthèses mais de quote/guillemets : elle est dans un bloc texte (et dinc colorée en bleu).

=> Regarde plutôt du côté des quotes/guillemets...
Ici, vu le code que tu donnes, je dirais qu'il y a eu un copié/collé foireux et une répétition du floor(...).
<tr class="<?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?>">
La ligne semble plus logique. L'opérateur ternaire ( Condition ? ActionSiTestVrai : ActionSiTestFaux ) peut se traduire comme :
Si la ligne ($rows) est paire (partie entière de rows/2 = rows/2), la classe de le ligne du tableau (<tr...>) est 'attributes-even', sinon c'est 'attributes-odd'.

Re: Erreur Parse error: syntax error,....

Posté : 09 sept. 2011, 18:05
par nouveau9
Ok t'avais encore raison, c'est probablement une erreur de transfert en FTP.
Je fais les transferts en "Binary" plutôt qu'ASCII. Vaut mieux non ?

Encore une erreur : Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in
<td align="center" class="smallText"> <?php echo $options_values['products_options_track_stock']?"Yes":"No"; ?></td>
Là par contre c'est tout simple, les codes couleurs sont bons....

Re: Erreur Parse error: syntax error,....

Posté : 09 sept. 2011, 20:23
par nouveau9
J'ai trouvé tout seul cette fois :
<td align="center" class="smallText"> <?php echo $options_values["products_options_track_stock"]?"Yes":"No"; ?></td>
fallait mettre des guillemets et pas des cotes entre les crochets !