IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

explication d'une syntaxe


Sujet :

Langage PHP

  1. #1
    Membre actif
    Homme Profil pro
    retraité, ex chef de projets en informatique
    Inscrit en
    Juillet 2005
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité, ex chef de projets en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2005
    Messages : 602
    Points : 249
    Points
    249
    Par défaut explication d'une syntaxe
    Bonjour,
    Je sais, voilà une drôle de question, peut-être déplacée et osée !!
    Il y a plusieurs années j'ai utilisé la séquence suivante qui fonctionne bien.
    J'ai dû la récupérer par un copier-coller sur un forum ou dans une revue.
    Je n'arrive plus à la comprendre pour les points soulignés.
    * cette fonction est appelée sans aucun paramètre dans un script php évidemment.
    * dans le répertoire de l'application je n'ai aucune trace de edit_book.php!

    Donc c'est bien la mémoire qui flanche chez moi!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function display_book_form($book = "")
    // formulaire de saisie du linteau
    {
    $conn=db_connect();
    $edit = is_array($book);
    ?>
      <form name="bookform" method=post
            action="<?php echo"$edit?"edit_book.php":"insert_book.php";";?>">
      <table border=0>
                <tr>
      		  <td>VILLE:  </td>
    		  <td><input type=text name=l_ville size=5 maxlength=5          value="<?php echo"$edit?$book["l_ville"]:"";"; ?>">
                      <select name=v_ville>
    ...
    Je vous remercie.
    Marcel Marie

  2. #2
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Quel est le nom de la page qui appel cette fonction ?
    Aurait il une page qui stockerait des données dans un tableau : $book ?
    Fait des recherche sur tous les appels à cette fonction pour éventuellement repérer un cas ou un paramètre serait passé en argument.

    Aussi, cette 1ère ligne soulignée comporte des erreurs de syntaxes.
    D'ailleurs, si je fais un copier/coller de ton code, j'obtiens belle et bien une erreur.
    N'obtiens tu pas une erreur sur cette ligne ?
    Mais comme tu précise que c'est un code qui date de longtemps, peut être est ce lié à ton environnement. Php4 peut être ?
    As tu activé l'affichage des erreurs ? (php.ini : display_errors à On)

    Elle serait plus juste comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $edit ? 'edit_book.php' : 'insert_book.php'; ?>
    Pour la logique, de ce code :
    SI un paramètre est passé en argument ET que c'est un tableau, $edit sera VRAI -> affichera edit_book.php. Le nom de la ville sera affiché aussi dans le champ texte.
    SINON (ou par défaut) -> insert_book.php


    Mis à part ça, si toi même tu n'as pas connaissance de ce fichier edit_book_php, comment veux qu'on le sache, on a aucun moyen de le vérifier.
    C'est peut être une erreur qui date depuis que ce code a été écrit.
    Ou alors le nom de cette page a été modifié/renommé à une époque, ce qui sous entend que ce code n'a pas été corrigé non plus.
    Ou tout simplement que le fichier a été supprimé par erreur.
    Que sais je ...

  3. #3
    Membre actif
    Homme Profil pro
    retraité, ex chef de projets en informatique
    Inscrit en
    Juillet 2005
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité, ex chef de projets en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2005
    Messages : 602
    Points : 249
    Points
    249
    Par défaut
    Merci pour avoir changé le titre.
    Merci pour votre longue explication.

    Mais "oh là là", j'aggrave mon cas.
    En fait les deux écritures étaient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
           action="<?=$edit?"edit_book.php":"insert_book.php";?>">
            value="<?=$edit?$book["l_ville"]:""; ?>">
    et je suis en train de normaliser les choses avec les balises <?php ... ?>
    et je n'ai pas su bien écrire le changement dans ce cas.

    Avant modif donc, cette application tourne super aussi bien en local (PHP 4.3.10) que sur Internet (PHP 5.2.5).

    L'appel est dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?
    // inclut les fichiers de fonctions
    require_once("book_sc_fns.php");
    session_start();
    do_html_header("Ajout d'un linteau","bgcolor=#FFCC80 text=#000060");
      display_book_form();
      display_button("choix_administrateur.php", "admin-menu", "Retour Menu Administrateur");
    do_html_footer();
    ?>
    NON, je ne sais pas ce que c'est que edit_book.php !! Ce fichier n'existe pas dans le répertoire de mon application. Par contre on en parle beaucoup sur Internet, on en donne apparemment même le listing mais je n'y comprends rien, peu dans la langue de Shakespeare et encore moins dans l'écriture du script. Dans mon application, on n'y passe d'ailleurs peut-être jamais !!

    Je n'ai pas testé ma modif d'écriture. Je vais le faire à l'instant, mais je vous crois bien entendu car c'est la façon normale d'écrire ECHO.

    A plus tard. Merci encore, c'est très sympa..
    Marcel Marie

  4. #4
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Avant modif donc, cette application tourne super aussi bien en local (PHP 4.3.10) que sur Internet (PHP 5.2.5). La preuve
    Pourquoi développer en local dans un environnement très différent, et même obsolète, que celui de ton hébergeur ?

    A mon sens, tu te mets des bâtons dans les roues.
    En règle général, on s'efforce d'avoir un environnement le plus proche possible.

    A savoir que Php4 n'est plus supporté par la communauté, donc ça n'évoluera plus jamais. Php4 fait partie de l'histoire ancienne.

    En tout cas, j'ai jamais codé dans un environnement Php4, mais à lire, c'est très différent de Php5, tant sur le plan de la syntaxe que sur son comportement.
    Je le perçois comme extrêmement déroutant.

    Ceci dit, c'est peut être ce que tu est en train de faire, rendre ton code plus compatible, à jour.

  5. #5
    Membre actif
    Homme Profil pro
    retraité, ex chef de projets en informatique
    Inscrit en
    Juillet 2005
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité, ex chef de projets en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2005
    Messages : 602
    Points : 249
    Points
    249
    Par défaut
    Suite au message précédent :

    Pas facile en peu de temps de repérer où est le $book qui intervient car j'ai dû prendre LA CHOSE dans une application anglaise? sur les livres et qui le fait intervenir dans tous les modules. Je vais suivre le chemin à l'envers.

    Les deux écritures
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php echo"$mavariable"; ?> 
    <?php echo $mavariable; ?>
    donnent en fait le même résultat mais je préfère la vôtre.

    Je n'ai pas effectivement mis display_errors à On.

    *****

    Mais puisque l'on est sur le sujet des directives de php et que vous semblez bien connaître le sujet, et toujours dans le but de me mettre aux normes actuelles des produits:

    J'utilise actuellement, en mise au point et en local,une ancienne version de Easyphp qui est accompagnée de PHP 4.3.10.
    Tout est bon.
    Tout est bon sur mon site également avec PHP 5.2.5.
    Le nouvel Easyphp est avec PHP 5.3.2 et m'amène plein d'erreurs.
    * ne prend plus HTTP_POST_VARS ..
    * session_is_registered est DEPRECATED fonction

    Je sais y remédier ponctuellement mais l'application est trop lourde pour modifier tous les modules instantanément.

    * Quelles sont les directives de ini.php à modifier pour faire accepter les anciennes instructions et c'est sûrement possible puisque chez mon hébergeur c'est bon.
    * J'ai cru lire quelque part que l'on pouvait "surpasser" les directives de php.ini en mettant des instructions dans les scripts. Ai-je rêvé? Si oui comment, dans ce cas précis?
    Je vous remercie. Bonne journée.

    Marcel Marie

  6. #6
    Membre actif
    Homme Profil pro
    retraité, ex chef de projets en informatique
    Inscrit en
    Juillet 2005
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité, ex chef de projets en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2005
    Messages : 602
    Points : 249
    Points
    249
    Par défaut
    Nos deux messages se sont croisés.
    JE CONFIRME : j'essaie de rentrer dans le droit chemin mais j'y vais petit à petit car mes applications sont assez lourdes et déjà là si je passais immédiatement dans la nouvelle version de Easyphp en local je serai dans la mouise avec bcp de nuits blanches en vue.
    J'ai mis l'application dans le nouvel environnement Easyphp sur un autre ordinateur. Et ça va se faire petit à petit.
    Merci encore.
    Marcel Marie

  7. #7
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Je ne peux pourrais pas t'aider pour cette étape de compatibilité, car comme je te l'ais dis, j'ai jamais développé dans un environnement aussi ancien, je ne connais pas les différences qu'il y a entre Php4 et php5, tout juste lu qu'il y a de grosses différentes.

    Et pour être franc, je ne souhaite même pas le savoir, et encore moins les rechercher, je ne serais jamais confronté à ce problème, je ne ferais que me "polluer" l'esprit si je peux dire.

    Je ne suis pas capable de te donner une quelconque démarche sur ce point.


    Par contre, WampServer permet d'installer plusieurs environnement (Apache, Php, MySQL), ceci permet de basculer d'un coté comme de l'autre.
    Dans ton cas, je me dis que ceci pourrait t'aider.
    EasyPhp, c'est pareil, je connais le nom, mais jamais essayé.


    Pour revenir à ton problème de edit_book.php.
    Si on suis la logique de cette partie de code, tu dois avoir 2 fonctionnalités, 2 phases :
    (Il y a entre entre un champ texte (l_ville) qui attend le nom d'une ville normalement).
    - Soit créer une nouvelle ville (insert_book.php). Je suppose que ça débouche sur un INSERT INTO
    - Soit afficher une ville en particulier (le fameux edit_book.php), et permettre très certainement une mise à jour, un UPDATE.

    La question est : Est ce que tu remarque la présence de ces 2 possibilités (insertion et mise à jour) ?

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Quelles sont les directives de ini.php à modifier pour faire accepter les anciennes instructions et c'est sûrement possible puisque chez mon hébergeur c'est bon.
    Les changements que tu indiques ont eu lieu avec PHP4.1.
    La version PHP5.3 amorce l'arrivée de PHP6 en décourageant encore plus ces pratiques.
    Il doit être possible d'utiliser les anciennes variables superglobales avec register-long-arrays
    http://www.php.net/manual/fr/ini.cor...er-long-arrays

    Concernant les changement
    $HTTP_POST_VARS devient $_POST
    session_is_register() devient inutile et on utilise isset() sur un element de la variable $_SESSION.

  9. #9
    Membre actif
    Homme Profil pro
    retraité, ex chef de projets en informatique
    Inscrit en
    Juillet 2005
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité, ex chef de projets en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2005
    Messages : 602
    Points : 249
    Points
    249
    Par défaut
    Réponse à RunCodePhp
    * mon raisonnement est à l'inverse du vôtre "puisque ça fonctionne en local et sur Internet, pourquoi devrais-je me casser la tête"? Pour moi c'est une occupation-distraction après 35 ans d'informatique professionnelle hors internet. Si un jour ça ne fonctionne plus, eh bien TANT PIS, j'irai jardiner !!!!
    * pour l'instruction, dans ce cas précis, j'ai toujours fait une insertion, la modif éventuelle utilisant un autre chemin et un autre script genre modif_book.php.
    *quelle est, SVP, la signification du ? après $edit?
    * le forum EasyPhp est totalement aux abonnés absents. Quand on s'inscrit il doivent envoyer un message "shortly" dans le temps pour confirmer l'inscription. Rien ne vient !!!

    Pour Sabotage
    * comme je le dis, je sais, pour les deux erreurs mentionnées, modifier une à une les instructions qui sortent une erreur mais ça va être long. Il y a sûrement une directive à modifier mais ce n'est pas celle qui concerne "register_long_arrays" qui donne un résultat encore plus "bordélique". Puisque ça fonctionne chez mon hébergeur, je vais comparer les résultats de phpinfo() en local "mauvais" et sur internet "correct" ! Puisque eux ont réussi la "manip" pourquoi serait-ce si compliqué avec le php.ini de EasyPhp !!
    Merci encore.
    Marcel Marie

  10. #10
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    * mon raisonnement est à l'inverse du vôtre "puisque ça fonctionne en local et sur Internet, pourquoi devrais-je me casser la tête"? Pour moi c'est une occupation-distraction après 35 ans d'informatique professionnelle hors internet. Si un jour ça ne fonctionne plus, eh bien TANT PIS, j'irai jardiner !!!!
    Et bien, tout dépend de ce que tu entends par distraction.
    Si c'est juste pour mettre en ligne le site, donc "sans te casser la tête" à coder/recoder le site, alors choisir un hébergeur offrant un environnement Php4 aurait été plus simple, théoriquement. Il en existent, il offrent bien souvent le choix entre Php4 ou Php5.
    Une autre solution, serait d'utiliser un un Soft genre Open Source qui répondrait au mieux à tes attentes, à ton besoin.
    Plus besoin de programmer.
    Ca demandera tout de même un temps pour la prise en main, mais ici on s'occupe uniquement de son contenu.
    Ca peut valoir le coup, tout dépend des spécificités.


    Si c'est le plaisir de le mettre en ligne et de le recoder, le rendre compatible, alors c'est bon.

    * pour l'instruction, dans ce cas précis, j'ai toujours fait une insertion, la modif éventuelle utilisant un autre chemin et un autre script genre modif_book.php.
    *quelle est, SVP, la signification du ? après $edit?
    Il nous sera difficile, et même impossible de deviner se que pourrait contenir ton appli avec 2 ou 3 lignes de codes, ceci demande d'avoir l'appli en main.
    On atteint ici la limite que peu offrir toute aide sur un forum.

    pour le $edit, comme dit plus haut, il contient un booleen, VRAI ou FAUX selon le paramètre $book, si c'est un tableau ou pas.

    Si tu n'a pas de fichier edit_book.php, peut être faudrait il en créer un. Impossible de l'affirmer cependant.
    Aussi, peut être faudrait il juste modifier edit_book.php par modif_book.php ? Là encore, difficile de l'affirmer.

    Ceci dit, avant de le modifier cette donnée, comment procède tu ? Faut l'éditer avant non, voir ce que la supposée donnée (la ville) est correcte ou demande à être modifiée.
    Existe t-il un autre fichier pour ça, ou est ce dans le modif_book.php ?
    En somme, comment se déroule la modification de cette donnée actuellement ?

  11. #11
    Membre actif
    Homme Profil pro
    retraité, ex chef de projets en informatique
    Inscrit en
    Juillet 2005
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité, ex chef de projets en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2005
    Messages : 602
    Points : 249
    Points
    249
    Par défaut Retrait des liens
    "ON ne s'énerve pas"; c'est ce que je me suis dit !!
    et j'ai pris mes chaussures de marche pour 5 kms dans la froidure et la nature,
    et j'ai gambergé pour arriver "en forme" devant l'ordinateur.
    J'ai tout réinstallé EasyPhp 5.3.2 au lieu de 5.3.1 (version qui étonnamment n'a pas duré très longtemps !!)
    J'ai suivi vos conseils en mettant à On :
    * short_open_tag
    * register_long_arrays
    et TOUT EST OK sauf le "session_is_registered" mais cela va vite être corrigé.

    Je vais donc remettre tout cela "dans les normes" avant de basculer sur Internet.
    Par ordre de difficulté décroissante je vais traiter au moins quatre de mes sites, les plus anciens, 7-8 ans, étant évidemment moins aux normes mais il est bien évident que ce serait dommage de voir disparaître tout le travail accompli en programmation et en recherche sur le terrain.

    Grâce à vous le courage revient, le moral avait nettement baissé les jours derniers.

    Je constate que RunCodePhp est au moins aussi bavard que moi en écriture. Bravo. Ce n'est pas toujours le cas, mais je comprends que chacun essaie de faire au mieux.
    Je garde en notes tous les conseils que vous m'avez donnés.
    Pour la ligne que je ne comprends pas totalement, tant pis !, l'application tourne de façon impeccable depuis 8 ans. Alors inutile de se prendre la tête sur ce "détail". L'approche que vous m'avez fournie est suffisante actuellement.
    Je vais fermer ce sujet et reviendrai probablement un jour prochain.
    Chaleureusement MERCI.
    Marcel Marie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin d'explication sur une question de syntaxe
    Par Cynthia. dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 25/10/2010, 17h22
  2. Demande d'explication d'une syntaxe
    Par lodan dans le forum Langage
    Réponses: 2
    Dernier message: 05/11/2008, 16h00
  3. Explications sur la syntaxe iptables
    Par Nightfall dans le forum Sécurité
    Réponses: 4
    Dernier message: 11/05/2005, 01h33
  4. [langage] comprendre une syntaxe particulière
    Par mat21 dans le forum Langage
    Réponses: 4
    Dernier message: 08/12/2004, 18h12
  5. [RICHEDIT] -> Coloriser une syntaxe ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 6
    Dernier message: 18/01/2004, 12h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo