Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/01/2012, 18h06   #1
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 189
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 189
Points : 29
Points : 29
Par défaut La saisie bloque l’interprétation

Bonjour

Je saisi dans un formulaire :
Code :
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
francoisch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 05h40   #2
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 727
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 727
Points : 3 294
Points : 3 294
Salut

Que veux tu dire par "littéral" ? Qu'est-ce que tu obtiens exactement ?
Citation:
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 :
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 :
<img src="../<?php echo $espace; ?>/commun/symboleS/image1.jpg" />
Ca pourrait être lié à la directive du php.ini "short_open_tag", faut voir.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 10h33   #3
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 189
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 189
Points : 29
Points : 29
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
francoisch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 10h45   #4
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 789
Points : 35 789
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 ?
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 11h10   #5
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 189
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 189
Points : 29
Points : 29
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 :
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
francoisch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 12h05   #6
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 727
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 727
Points : 3 294
Points : 3 294
Citation:
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).
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 17h36   #7
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 189
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 189
Points : 29
Points : 29
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
francoisch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 06h24   #8
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 727
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 727
Points : 3 294
Points : 3 294
Citation:
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 :
<img src="../<?php echo $espace.$image; ?>" />
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/01/2012, 10h49   #9
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 189
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 189
Points : 29
Points : 29
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
francoisch est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h41.


 
 
 
 
Partenaires

Hébergement Web