Générer formulaire avec triples guillemets

Petit nouveau ! | 3 Messages

14 juil. 2014, 10:13

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

Mammouth du PHP | 2278 Messages

14 juil. 2014, 11:30

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...
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Mammouth du PHP | 1339 Messages

14 juil. 2014, 12:28

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
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Mammouth du PHP | 2278 Messages

14 juil. 2014, 13:02

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
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Mammouth du PHP | 1339 Messages

14 juil. 2014, 13:08

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 !
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Mammouth du PHP | 2278 Messages

14 juil. 2014, 13:20

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.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Petit nouveau ! | 3 Messages

14 juil. 2014, 15:47

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

Petit nouveau ! | 3 Messages

14 juil. 2014, 15:50

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