Erreur Parse error: syntax error,....

Petit nouveau ! | 6 Messages

09 sept. 2011, 08:31

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..

Mammouth du PHP | 672 Messages

09 sept. 2011, 09:58

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:

ViPHP
ViPHP | 2577 Messages

09 sept. 2011, 10:34

$i ++
Il y a un blanc.

Petit nouveau ! | 6 Messages

09 sept. 2011, 11:39

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>';
        }
?>

Mammouth du PHP | 672 Messages

09 sept. 2011, 11:51

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-) )

Petit nouveau ! | 6 Messages

09 sept. 2011, 12:24

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...

Mammouth du PHP | 672 Messages

09 sept. 2011, 12:50

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'.

Petit nouveau ! | 6 Messages

09 sept. 2011, 18:05

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....

Petit nouveau ! | 6 Messages

09 sept. 2011, 20:23

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 !