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 :

La saisie bloque l’interprétation


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 224
    Points : 62
    Points
    62
    Par défaut La saisie bloque l’interprétation
    Bonjour

    Je saisi dans un formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src="../<?=$espace?>/commun/symboleS/image1.jpg">
    J’utilise ensuite une variable $nom qui contient cette valeur dans une balise <button> : <?=$nom?>

    Mon problème : le code Php <?=$espace?>, issu de la saisie, est pris dans la balise <button> comme un littéral plutôt que d’être interprété.

    A titre de test, j’ai placé ce même code <img> directement dans une balise <button> : là, le code Php est bien interprété, la variable est bien remplacée par sa valeur.

    Ma question : comment effectuer la saisie pour que cette variable Php soit remplacée par sa valeur ? si c’est possible.

    Par avance merci de votre aide.

    Francois

  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
    Salut

    Que veux tu dire par "littéral" ? Qu'est-ce que tu obtiens exactement ?
    A titre de test, j’ai placé ce même code <img> directement dans une balise <button> : là, le code Php est bien interprété, la variable est bien remplacée par sa valeur.
    Si ça fonctionne à un endroit et pas à un autre, alors peut être faut il vérifier à quel moment/endroit où est créé/initialisé cette variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo $espace; // Génèrera une erreur car non initialisé (n'existe pas).
     
    $espace = 'toto';
     
    echo $espace; // Affichera -> toto
    Par contre, si à un moment on remarque que ça affiche ceci <?=$espace?> au lieu de la valeur de la variable, alors le fichier ne serait pas un Php comme fichier.php, mais un html comme fichier.html.


    Par ailleurs, fais un essai en faisant comme ceci pour voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="../<?php echo $espace; ?>/commun/symboleS/image1.jpg" />
    Ca pourrait être lié à la directive du php.ini "short_open_tag", faut voir.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 224
    Points : 62
    Points
    62
    Par défaut
    bonjour et merci de ta réponse.

    Des éléments:
    - j'avais essayé <?php echo $espace; ?>, sans succès
    - la page concernée a bien une extension .php et pas .html
    - la variable $espace est bien initialisée, je l'ai vérifié

    Je parle de litteral car je retrouve dans le code source de la page (clic droit, ...) la saisie faire dans le formulaire lettre pour lettre, c'est à dire en particulier avec <?=$espace?> et non pas avec la valeur de la variable.

    Mon impression est que le formulaire a "critallisé" la saisie et la restitue telle que.

    Francois

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Ta demande est loin d'être claire...
    Entre autre, tu n'indiques pas ce que doit contenir ta variable $espace ni quel est le lien avec le formulaire...

    Ceci dit, peut-être est-ce dû à ta configuration et que tu as register_globals à on (ce qui est une erreur...) et que du coup $espace pourrait prendre la valeur de $_POST['espace'] au lieu de la valeur souhaitée ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 224
    Points : 62
    Points
    62
    Par défaut
    bonjour

    Pour récapituler, j'ai des balises <button> dans une page Php.

    Dans une balise <button>, à l'emplacement où je place d'ordinaire le nom qui apparaitra sur le bouton, je met cette fois là une balise <img>.

    De cette manière, je fais apparaître une image sur le bouton plutôt qu'un libellé.

    Si je place directement dans le code de la balise <button>:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src="../<?=$espace?>/commun/symboleS/image1.jpg">
    Php fait son boulot et remplace la variable $espace par sa valeur.

    A l'inverse, si je saisis ce même code de balise <img> dans un formulaire, écrit alors dans une table MySql, il n'est ensuite pas interprété à l'affichage de la page qui lit la table MySql et le récupère.

    C'est là où j'exprime l'idée que ce code est pris comme un littéral, cristallisé par la saisie.

    En espérant avoir été un peu plus clair.

    Francois

  6. #6
    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
    A l'inverse, si je saisis ce même code de balise <img> dans un formulaire, écrit alors dans une table MySql, il n'est ensuite pas interprété à l'affichage de la page qui lit la table MySql et le récupère.
    Je crois avoir compris. (c'est pas sûr).

    Veux tu dire par là que tu saisirais ceci dans un champs de texte d'un formulaire :
    <img src="../<?=$espace?>/commun/symboleS/image1.jpg" />
    Ensuite, cette chaine serait enregistrée dans la Bdd.

    Et pour finir, tu affiches le contenu de cette donnée en partant du principe que cette variable $espace serait interprétée.

    Est-ce cela ?
    (ci c'est ça, c'est normal que la variable ne soit pas interprétée).

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 224
    Points : 62
    Points
    62
    Par défaut
    Oui, c'est tout à fait ça, la saisie va dans une table MySql; elle est lue plus tard et ce champ est utilisé dans une variable Php (dans une balise <button>, ...).

    Ca m'intéresse évidement de savoir pourquoi ça n'est pas interprété et aussi de savoir s'il existe un moyen pour que l'interprétation fonctionne.

    Merci en tout cas de ta réponse.

    Francois

  8. #8
    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
    Ca m'intéresse évidement de savoir pourquoi ça n'est pas interprété et aussi de savoir s'il existe un moyen pour que l'interprétation fonctionne.
    Il faut comprendre que, une fois récupéré cette donnée dans la Bdd, ce que tu vas obtenir c'est une chaine de caractère, et uniquement.

    Donc lorsque tu fais un echo pour l'afficher, ça va afficher cette chaine telle quelle est, y compris ces caractères <?=$espace?> sans aucune distinction.
    Il faut comprendre que c'est l'ensemble qui est une chaine, peu importe les caractères.

    Si, et de manière automatique et systématique Php venait à interpréter cette variable, ça serait un sacré gros problème, particulièrement pour ceux qui feraient des tutos sur du code Php, y compris ce forum et à cet instant.


    Il peut avoir 2 moyen assez différent de faire ceci.
    1/ Soit tu fais en sorte de ne pas enregistrer dans cette chaine le nom de la variable, mais faire en sorte de récupérer la valeur quelle devra avoir.
    En gros, enregistrer ceci :
    <img src="../espace_truc/commun/symboleS/image1.jpg" />

    2/ S'il est impossible de prévoir la valeur quelle aura au moment où elle sera être affichée, alors il faudrait enregistrer juste le nom de l'image.
    Juste ceci : image1.jpg
    Ou alors pourquoi pas ceci : /commun/symboleS/image1.jpg
    (c'est la technique la plus utilisée à mon avis).

    Par la suite, la valeur de $espace étant connu au moment où cette image est affichée, et bien on récupère l'image dans la Bdd (le nom ou le chemin de cette image).
    Cette donnée sera alors contenu dans une variable ou un tableau. Admettons une variable -> $image.
    Puis faire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="../<?php echo $espace.$image; ?>" />

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 224
    Points : 62
    Points
    62
    Par défaut
    bonjour RunCode et merci d eta longue réponse très documentée.

    Oui, ton diagnostic correspond parfaitement à ce que je constate, même si je ne l'exprimais pas forcément de manière claire.

    Pour la solution, je vais réfléchir au meilleur choix parmi les solutions que tu proposes.

    Ca n'est pas simple compte tenu de l'emploi que je fais de cette chaine.

    Je vais peut-être m'orienter vers la simplicité: plutôt que d'essayer de faciliter le travail de l'utilisateur du formulaire, avec cette variable, lui demander d'en saisir la valeur, quitte à risquer d'introduire une erreur de temps en temps.

    Mais j'ai maintenant avec tes conseils deux orientations intéressantes que je conserve.

    Merci encore de m'avoir éclairé autant pour la cause que pour la solution.

    Francois

Discussions similaires

  1. [AC-2007] Formulaire bloqué ! impossible de saisie
    Par Plume27 dans le forum IHM
    Réponses: 5
    Dernier message: 13/06/2013, 10h40
  2. [WM10] Champ saisie bloqué après fermeture fenêtre
    Par Mephouze dans le forum Windev Mobile
    Réponses: 2
    Dernier message: 17/04/2013, 11h22
  3. [AC-2007] Curseur bloqué mais saisie non affectée
    Par Tipstitou dans le forum IHM
    Réponses: 4
    Dernier message: 03/05/2011, 22h02
  4. formulaire bloque la saisie
    Par chouchouboy dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/10/2010, 18h24
  5. [WD15] Table en saisie qui se bloque en écriture
    Par tux59 dans le forum WinDev
    Réponses: 5
    Dernier message: 13/04/2010, 08h49

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