Page 1 sur 1

Générer formulaire avec triples guillemets

Posté : 14 juil. 2014, 10:13
par gabier
Bonjour à tous,

Je ne suis pas vraiment débutant, mais j'ai l'impression que mon problème n'est pas compliqué, c'est pourquoi j'ai posé la question ici.

Je veux afficher un formulaire et le traiter dans la même page donc j'utilise l'adresse $_SERVER['PHP_SELF']. Mais l'affichage est conditionnel et le nombre de champs d'input est variable. Donc je le génère entièrement en php. Le problème est que pour afficher la balise <form> j'ai besoin de 3 niveaux de guillemets
Voici ce qui ne marche pas, je ne comprends pas pourquoi (je me ramasse une erreur de syntaxe "Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier...."

Code : Tout sélectionner

echo("<form class='myform' name='nom_simu' action=\"htmlentities($_SERVER['PHP_SELF'])\">");
J'ai trouvé une "solution" qui marche, je ne comprends pas non plus pourquoi ça marche (apparemment echo dans ce cas n'a pas besoin de guillemets(?). Et puis si je mets ça dans une boucle php je crains que ça ne pose problème.

Code : Tout sélectionner

echo "<form class='myform' name='choix_sup2' action="; ?> <?php echo htmlentities($_SERVER['PHP_SELF']); ?> <?php echo("method='POST'> <input ...'> <input ...'> <input type='submit' value='Envoyer'> </form> ");
Donc j'aimerais mieux déboguer la première forme.
:) gabier

Re: Générer formulaire avec triples guillemets

Posté : 14 juil. 2014, 11:30
par sirakawa
Moi je sortirais ainsi (mais moi je me sers de print dans ces cas...:
$self = htmlentities($_SERVER['PHP_SELF']);
echo("<form class='myform' name='nom_simu' action='$self'>");
d'ailleurs si l'action est le script lui-même, il me semble quon peut se passerf d'action;
une autre solution est d'utiliser formaction dans le bouton...

Re: Générer formulaire avec triples guillemets

Posté : 14 juil. 2014, 12:28
par Elie
echo("<form class='myform' name='nom_simu' action=\"htmlentities($_SERVER['PHP_SELF'])\">");
Devient :
echo "<form class='myform' name='nom_simu' action='".htmlentities($_SERVER['PHP_SELF'])."'>";
Lis ca : http://php.net//manual/fr/language.operators.string.php

Re: Générer formulaire avec triples guillemets

Posté : 14 juil. 2014, 13:02
par sirakawa
Je pense qu'il ne faut JAMAIS employer de fonctions PHP à l'intérieur de syntaxes HTML ou MYSQL:
en sortant ces fonctions, on peut, si besoin, vérifier qu'on les emploie à bon escient, voire les combiner à d'autres

Re: Générer formulaire avec triples guillemets

Posté : 14 juil. 2014, 13:08
par Elie
L'interet de nommer une fonction par un nom de variable est pratique si cette chaine apparait plusieurs fois ...
Sinon bof quoi !

Moi aussi je peux avoir le dernier mot !

Re: Générer formulaire avec triples guillemets

Posté : 14 juil. 2014, 13:20
par sirakawa
L'interet de nommer une fonction par un nom de variable est pratique si cette chaine apparait plusieurs fois ...
Sinon bof quoi !

Moi aussi je peux avoir le dernier mot !
Il ne s'agit pas de nommer une fonction par un nom de variable : ça ce serait si on écrivait Define ("g", "mb_strtolower()"); par exemple.
et cette méthode aboutit aux innombrables questions sur les quotes et la concaténation... mais c'est un détail sans importance.

Re: Générer formulaire avec triples guillemets

Posté : 14 juil. 2014, 15:47
par gabier
Moi je sortirais ainsi (mais moi je me sers de print dans ces cas...:
$self = htmlentities($_SERVER['PHP_SELF']);
echo("<form class='myform' name='nom_simu' action='$self'>");
d'ailleurs si l'action est le script lui-même, il me semble quon peut se passerf d'action;
une autre solution est d'utiliser formaction dans le bouton...
Bonjour sirakawa,
J'aime bien cette solution, d'autant plus que j'aurai à utiliser cette variable $self plusieurs fois. J'aurais pu y penser seul...
Pour l'intérêt de PHP_SELF, cela ramène non au formulaire lui-même (je me suis mal exprimé) mais à la même page, dans laquelle j'ai plusieurs formulaires. Au lieu d'avoir n formulaires possibles et autant de pages pour traiter chacun, je reviens toujours à la même page et je fais le tri à l'entrée. Moi je trouve ça assez pratique.
Merci
:) Gabier

Re: Générer formulaire avec triples guillemets

Posté : 14 juil. 2014, 15:50
par gabier
echo("<form class='myform' name='nom_simu' action=\"htmlentities($_SERVER['PHP_SELF'])\">");
Devient :
echo "<form class='myform' name='nom_simu' action='".htmlentities($_SERVER['PHP_SELF'])."'>";
Lis ca : http://php.net//manual/fr/language.operators.string.php
Bonjour Elie,
Merci, je devrais effectivement réapprendre la syntaxe des traitements de chaînes ...
:) Gabier