Quelle est cette erreur PHP ?

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Meeuuuhhh, 9 Juillet 2009.

  1. Meeuuuhhh
    Meeuuuhhh WRInaute passionné
    Inscrit:
    8 Janvier 2007
    Messages:
    1 498
    J'aime reçus:
    0
    Bonjour,

    Voilà, j'ai une erreur PHP que je n'ai jamais rencontrée :


    Code:
    Parse error: syntax error, unexpected '?' in /homez.42/monsite/scripts/annuaire-formulaire.php on line 1130
    Je ne vois aucun problème à la ligne 1130. Qu'est-ce que ce "unexpected ?" veut dire ?

    Je ne comprends pas, d'autant plus que c'est sur un hébergement que j'utilise pour les tests et que ça fonctionne bien sur l'autre site.

    Avez-vous une idée :?:
     
  2. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    12 003
    J'aime reçus:
    128
    Une balise php mal fermée ?
     
  3. Meeuuuhhh
    Meeuuuhhh WRInaute passionné
    Inscrit:
    8 Janvier 2007
    Messages:
    1 498
    J'aime reçus:
    0
    Salut UsagiYojimbo,

    En fait je me suis trompé de fichier mea culpa... Il y a 1266 lignes.

    Mais à la 1130 je ne vois aucune erreur. Et je ne sais pas ce que signifie ce "unexpected ?", je ne trouve rien sur google.

    **edit**

    j'édite le premier poste.
     
  4. dmathieu
    dmathieu WRInaute accro
    Inscrit:
    9 Janvier 2004
    Messages:
    5 596
    J'aime reçus:
    0
    Ben donne la nous ta ligne 1130, ça aidera.
     
  5. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 597
    J'aime reçus:
    34
    Bonjour

    "To expect" en Anglais, signifie: "s'attendre à".

    "Unexpected" signifie: "non prévu", ou "inattendu".

    Celà signifie simplement que le point d'interrogation "unexpected" correspond à quelque choses auquel ne s'attendait pas l'interpréteur php, qui interprète le contenu du script php du début à la fin, et que donc ce point d'interrogation est le point de départ, d'une faute de syntaxe par rapport à la syntaxe du langage PHP.

    A la ligne indiquée, il devrait y avoir un point d'interrogation, et tu devrais pouvoir diagnostiquer facilement l'erreur de syntaxe.

    Pour info, parfois les numéros de lignes indiquées par les messages d'erreur, ne sont pas strictement exacts, mais sont exacts pratiquement toujours, avec une très faible marge d'erreur.

    ...Suffit de chercher un point d'interrogation dans le code source, aux environs de la ligne indiquée.

    Bien à vous.

    Amicalement.

    Jean-François Ortolo
     
  6. Meeuuuhhh
    Meeuuuhhh WRInaute passionné
    Inscrit:
    8 Janvier 2007
    Messages:
    1 498
    J'aime reçus:
    0
    En fait, lorsque j'enlève ce passage, le reste du script fonctionne.
    Code:
    <?php
    if(!empty($meta_title) AND $_GET['modif']!=8)
    {
    echo"A) Balise title  : $meta_title<p>"
    ;}
    if(!empty($meta_keyword) AND $_GET['modif']!=8)
    {
    echo"B) Balise keywords : $meta_keyword<p>"
    ;}
    if(!empty($meta_description) AND $_GET['modif']!=8)
    {
    echo"C) Balise description : $meta_description<p>"
    ;}
    if(isset($_GET['modif']) AND $_GET['modif']==8)
    {
    echo'
    Les trois champs ci-dessous doivent être relativement courts. 
    <p>
    <form action="annuaire-formulaire.php#8" method="post">
    A) Indiquez ici le titre de votre page (balise méta "title"). Celui-ci s\'affichera en haut du navigateur :<br>
    <textarea name="title" cols="50" rows="2">'.$meta_title.'</textarea>
    <p>
    B) Indiquez ici une série de mots-clefs à destination des moteurs de recherche (balise méta "keywords"). Séparez chaque mot-clef par une virgule. Choisissez vos mots-clefs en fonction de leur pertinence par rapport à votre activité et vos services.<br>
    <textarea name="keyword" cols="50" rows="2">'.$meta_keyword.'</textarea>
    <p>
    B) Indiquez ici une brève description de votre site internet :<br>
    <textarea name="description" cols="50" rows="2">'.$meta_description.'</textarea>
    <p align="center">
    <input type="hidden" name="clef" value="'.$clef.'">
    <input type="submit" name="annuler" value="Annuler">
    <input type="submit" name="modifier-8" value="Modifier">
    </form>';}
    if($_GET['modif']!=8)
    {echo'
    <form action="annuaire-formulaire.php?modif=8#8" method="post">
    <p align="center">
    <input type="hidden" name="clef" value="'.$clef.'">
    <input type="submit" name="modifier" value="Modifier">
    </form>
    ';}
    ?>
    Je ne vois aucune erreur dans ce bout de code.
     
  7. dmathieu
    dmathieu WRInaute accro
    Inscrit:
    9 Janvier 2004
    Messages:
    5 596
    J'aime reçus:
    0
    Oui, mais dans ton exemple la, c'est laquelle ta ligne 1130 ?

    Ps : ton code est particulièrement illisible à cause d'un fort manque de retour à la ligne.
     
  8. Meeuuuhhh
    Meeuuuhhh WRInaute passionné
    Inscrit:
    8 Janvier 2007
    Messages:
    1 498
    J'aime reçus:
    0
    L'erreur ne se trouve pas à la ligne 1130, car ce fichier est inclus dans l'autre. En tout cas, c'est ce bout de code qui génère l'erreur, quand je l'enlève, ça fonctionne bien.
     
  9. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 597
    J'aime reçus:
    34
    Bonjour

    Solution pour tester:

    Tu mets le contenu du script inclus dans le script incluant au bon endroit ( où se trouve l'inclusion dans le script incluant ), ceci après avoir copié le script incluant dans un autre script, puis tu reteste en faisant: php -l nouveau_script.php

    Ainsi, tu as le bon numéro de ligne, et roule Raoul...

    Et puis ( si tu es sous Linux ), un petit passage de tes scripts par le programme indent bien paramétré, ne ferait pas de mal, pour les formatter de manière automatique...

    A charge, de restaurer ensuite les balises <?php et ?> , ainsi que les affectations du type : point - signe égal ( .= ) , pour lesquelles ce passage à la moulinette indent, aura inséré un espace entre le point et le signe égal.

    Pour corriger cela, sous l'éditeur vi ( attention d'abord à ce qu'il soit bien configuré pour le codage de caractères choisi, ISO8859-15 ou UTF-8 ), tu charge le script, puis tu appuies sur la touche Esc ou Echappement ( en haut à gauche du clavier ), puis tu fais sur le clavier, ceci:

    :g/. =/s//.= /g

    Donc, entre les deux premiers slashes ( / et / ) tu as un point, suivi d'un espace, suivi du signe égal.

    Entre les deux derniers slashes, tu as: un point, suivi du signe égal, suivi d'un espace.

    Quant tu entres celà au clavier sous vi, ce que tu entres au clavier s'affiche en bas de la fenêtre d'édition du fichier.

    Evidemment, tu n'édites ce fichiers ( script php ) sous vi, qu'après avoir indenté ( = formatté ) ce script avec indent.

    Après avoir entré la ligne ci-dessus, tu appuies sur la touche <Enter>, et toutes les corrections sont faites sur le code source.

    Tu n'as plus qu'à sauvegarder le fichier, en faisant:

    :w

    Puis, appuyer sur la touche <Enter>

    En ce qui me concerne, j'avoue à ma grande honte, que je connais pas d'autre logiciel que indent, pour formatter un fichier. Cependant, indent est spécialisé pour le code source du Langage C++, qui a une syntaxe très légèrement différente du PHP. Alors...

    Bien à vous.

    Amicalement.

    Jean-François Ortolo
     
  10. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 597
    J'aime reçus:
    34
    Rebonjour

    J'ai vu au moins un point d'interrogation dans ton code, et il me semble qu'il y a une faute, en tout cas de html:

    <form action="annuaire-formulaire.php?modif=8#8" method="post">

    Cette instruction ( donc ce code html ), est affiché entre deux simple quotes par une instruction echo, et les simples quotes semblent bien "nestées", c'est-à-dire appariées entre elles.

    En ce qui concerne le code html, il me semble, qu'il est impossible de recevoir un paramètre "get" ( donc mis dans l'url ), dans un script accédé par un formulaire en mode "post".

    Donc, si tu tiens à garder le mode "post" pour ce formulaire, tu peux toujours virer "?modif=8#8" , qui ne sert à rien.

    Si tu veux transmettre ce paramètre en mode "post", la bonne solution est de l'indiquer dans le formulaire, comme paramètre "hidden", c'est-à-dire paramètre caché. A ce moment -là, le paramètre sera effectivement transmis en mode "post", comme désiré. Et là, pas besoin de point d'interrogation.

    La syntaxe de ce paramètre "hidden" serait:

    <input type="hidden" name="modif" value="8#8"></input>

    J'adopte la balise </input> pour faire beau, pour la compatibilité XHTML 1.01... ;)

    Si tu es en mode Transitional, tu peux ne pas mettre la balise fermante </input>

    Bien à vous.

    Amicalement.

    Jean-François Ortolo
     
  11. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 597
    J'aime reçus:
    34
    Rebonjour

    J'ajoute...

    Au vu de ton script, tu reçois tes variables en mode "get" avec les super-globales $_GET[var]

    Donc, ton formulaire doit être en mode "get", et non pas en mode "post".

    Celà n'empêche pas, que la balise <form, doit avoir comme attribut "action", une url sans paramètre, donc sans point d'interrogation.

    Les paramètres supplémentaires que tu veux transmettre de manière fixe, doivent être transmis comme paramètre "hidden" dans le formulaire.

    Je conseille, comme petit livre sur la syntaxe HTML, le livre "HTML Précis et Concis", éditeur O'Reilly & Associates.

    Des petis bouquins comme ça, c'est de l'or. ;)

    Bien à vous.

    Amicalement.

    Jean-François Ortolo
     
  12. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    12 003
    J'aime reçus:
    128
    L'indentation est franchement pas top, c'est clair (mais c'est peut-être du au copier-coller depuis le code source).
     
  13. jeanluc
    jeanluc WRInaute accro
    Inscrit:
    3 Mai 2004
    Messages:
    2 875
    J'aime reçus:
    0
    Comme les autres WRInautes qui essaient de t'aider, j'aimerais voir tes lignes 1129, 1130 et 1131, sauf si elles sont couvertes par le secret défense, évidemment. :lol:

    Cela ne me semble pas aussi simple.

    Jean-Luc
     
  14. e-kiwi
    e-kiwi WRInaute accro
    Inscrit:
    23 Décembre 2003
    Messages:
    13 198
    J'aime reçus:
    1
    alors, elle arrive cette ligne ? :) (avec la précédente et la suivante)
     
  15. Meeuuuhhh
    Meeuuuhhh WRInaute passionné
    Inscrit:
    8 Janvier 2007
    Messages:
    1 498
    J'aime reçus:
    0
    Je suis toujours bloqué dessus.

    Pour ceux qui souhaitent absolument la ligne, c'est celle là :

    Code:
    {echo'CHECKED';}
    echo'> <a href="http://www.monsite.com/'.$article.'.htm" target="_blank">'.$nom.'</a>
    <br>
    '
    
    Ca va pas vous avancer beaucoup...
     
  16. Robinson
    Robinson WRInaute passionné
    Inscrit:
    26 Octobre 2005
    Messages:
    1 636
    J'aime reçus:
    0
    Tes variables ont bien été "addslashées" ?
     
  17. Meeuuuhhh
    Meeuuuhhh WRInaute passionné
    Inscrit:
    8 Janvier 2007
    Messages:
    1 498
    J'aime reçus:
    0
    Je me demande si ça n'est pas un problème lors de l'upload des fichiers.

    Là subitement, ça refonctionne correctement... Or le FTP a buggé toute la journée. Un coup ça a fonctionné, ça s'affichait deux fois, un coup ça ne s'affichait qu'à moitié, un coup ça affiche le message d'erreur... Et là ça fonctionne...
     
  18. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 597
    J'aime reçus:
    34
    Ah bon

    Un tout petit conseil, pour valider les script php avant de les charger sur ton site:

    Avoir un serveur ( Apache de préférence ) et un interpréteur PHP en local sur ton ordi, en vue de tester ton site en local, et aussi de pouvoir tester la validité syntaxique des scripts php, en faisant:

    php -l script.php

    Le programme php avec ce paramètre tiret l ( -l ), permet d'afficher les erreurs et warnings éventuels, dus à des erreurs dans le code source du script.

    Ainsi, tu peux accélérer beaucoup la mise au point de ton/tes sites, ce qui rachète largement l'effort pour installer Apache/PHP sur ton ordinateur.

    Bien à vous.

    Amicalement.

    Jean-François Ortolo
     
Chargement...
Similar Threads - erreur PHP Forum Date
script PHP erreurs inexplicables. Développement d'un site Web ou d'une appli mobile 14 Février 2021
PHP session perso : session_start() en erreur. Développement d'un site Web ou d'une appli mobile 27 Juillet 2020
Erreur PHP Fatal error: Allowed memory size of ... bytes exhausted Demandes d'avis et de conseils sur vos sites 23 Mars 2019
Erreur impossible en PHP Développement d'un site Web ou d'une appli mobile 13 Mars 2017
Problème erreur redirection cakephp URL Rewriting et .htaccess 4 Avril 2016
Obtenir 500 Erreur du serveur internet lorsque vous utilisez php mail Développement d'un site Web ou d'une appli mobile 9 Juin 2015
Résolu - Erreur 404 sur toutes mes pages .php (hébergement OVH) Administration d'un site Web 15 Août 2013
Accès refusé : erreur 403 wp-login.php Google Analytics 11 Juin 2013
Script php de pagerank et erreur 403 Netlinking, backlinks, liens et redirections 21 Novembre 2011
PHP : plus de message d'erreur :( Développement d'un site Web ou d'une appli mobile 25 Octobre 2011
Erreur lors de la conversion phpbb 3.0.8--> 3.0.9 Développement d'un site Web ou d'une appli mobile 27 Juillet 2011
Erreur javascript ? ou code php pas bon? Développement d'un site Web ou d'une appli mobile 15 Novembre 2010
Forum phpbb petite erreur de placement Développement d'un site Web ou d'une appli mobile 12 Août 2010
Erreur PHP PDO (Fatal error: Call to a member function query() on a non-object ...) Développement d'un site Web ou d'une appli mobile 11 Août 2010
1&1 mutualisé : aide optimisation + supprimer affichage erreur php URL Rewriting et .htaccess 15 Juin 2010
J'ai supprimé par erreur l'index.php de 1and1 Administration d'un site Web 31 Mai 2010
Erreur php Update Développement d'un site Web ou d'une appli mobile 12 Avril 2010
[résolu] Erreur 500 avec EasyPHP 5.3.0 et les URL rewriting URL Rewriting et .htaccess 10 Février 2010
Erreur 404 html ok php marche pas URL Rewriting et .htaccess 24 Janvier 2010
Afficher un message d'erreur sur formulaire php Développement d'un site Web ou d'une appli mobile 14 Mai 2009