Page 1 sur 2
Remplir automatiquement zone input text
Posté : 08 mars 2014, 17:42
par Herve_be
Bonjour,
J'ai un simple formulaire qui contient une zone texte et 2 boutons confirmer / annuler.
Code : Tout sélectionner
<form method="post" action="Send.php">
<p align=center>Commentaire : <input type='text' size='100' name='Comment'>
<p align=center><input type="submit" value="Confirmer">
<input type="button" value="Annuler" onClick="window.location.href='http://xxx.php'">
Ceci fonctionne sans problème.
Il arrive souvent qu'on doive remplir la zone texte avec la même phrase.
Je voudrais ajouter quelques boutons en forme d'images cliquables et que, lorsqu'on clique sur une image, la zone texte reçoive une valeur prédéfinie.
L'utilisateur doit cependant cliquer sur le bouton "confirmer" pour confirmer.
Comment faire ?
Re: Remplir automatiquement zone input text
Posté : 08 mars 2014, 18:15
par sirakawa
Bonjour,
Serait-il plus compliqué d'utiliser un <select>?
Re: Remplir automatiquement zone input text
Posté : 08 mars 2014, 18:37
par Herve_be
D'une part je ne pense pas qu'on puisse utiliser des icônes avec un Select
D'autre part comment remplir ma zone input text en fonction de l'option choisie ?
Car ce que je voudrais ajouter est une invite que l'utilisateur doit compléter avant de cliquer sur "confirmer".
Re: Remplir automatiquement zone input text
Posté : 08 mars 2014, 20:39
par sirakawa
Alors, il va surement falloir passer par javascript:
sur les icones tu mets un onclick qui déclenche une fonction qui modifie le texte de ton champ.
Il faut pour ça que tous les champs à remplir ainsi aient des id différents (rappel name = '' sert à html et id ='' sert à javascript)
Re: Remplir automatiquement zone input text
Posté : 09 mars 2014, 11:24
par Herve_be
Bonjour et merci,
Je vais reposer ma question dans la section java.
Mais si quelqu'un avait une solution en php je reste preneur.
RV
Re: Remplir automatiquement zone input text
Posté : 09 mars 2014, 14:17
par sirakawa
En php, il faut que tu aies qqch du genre (exemple sur les icones que j'ai en stock):
<?PHP
/*index.php*/
print_r($_POST);
$bouton = isset($_POST['bouton']) ? $_POST['bouton'] : 1;
switch ($bouton)
{
case 1:
$texte = "";
break;
case 2:
$texte = "bouton 2 activé";
break;
case 3:
$texte = "bouton 3 active";
break;
default:
$texte = "";
break;
}
print "<form method = 'post'>
<input type = 'text' name =' champ1' id = '1' value ='$texte' />
<button name = 'bouton' value ='2' formaction ='index.php'><img src = 'avi.png'></button>
<button name = 'bouton' value ='3' formaction ='index.php'><img src = 'gif.png'></button>
</form>"
?>
Re: Remplir automatiquement zone input text
Posté : 09 mars 2014, 18:48
par Herve_be
Merci pour ta réponse.
J'ai essayé de traduire vers mon fichier php mais comme je ne comprends pas tout évidemment ça ne fonctionne pas
Voici mon code, le fichier s'appelle RegLogAll.php
Code : Tout sélectionner
$bouton = isset($_POST['bouton']) ? $_POST['bouton'] : 1;
switch ($bouton)
{
case 1:
$texte = "";
break;
case 2:
$texte = "bouton 2 activé";
break;
case 3:
$texte = "bouton 3 active";
break;
default:
$texte = "";
break;
}
?>
<p align=center>
<form method="post" action="SendMail.php">
<p align=center>Commentaire : <input type='text' size='100' name='Comment'>
<p align=center><input type="submit" value="Confirmer">
<input type="button" value="Annuler" onClick="window.location.href='index.php'"></p>
<input type = 'text' name =' champ1' id = '1' value ='$texte' />
<button name = 'bouton' value ='2' formaction ='RegLogAll.php'><img src = 'avi.png'></button>
<button name = 'bouton' value ='3' formaction ='RegLogAll.php'><img src = 'gif.png'></button>
</form>
Je ne comprends pas bien pourquoi tu rappelles le même module (formaction ='RegLogAll.php')
Quand je l'appelle c'est avec des paramètres identification et mot de passe
$ID = $_POST["ID"];
$pin = $_POST["pin"];
et il vérifie via un query Mysql que les paramètres sont corrects.
Quand il s'appelle lui-même les paramètres ne sont plus corrects; ça n'a rien à voir avec ma question initiale mais je voudrais éviter qu'il s'appelle lui-même; possible ?
Re: Remplir automatiquement zone input text
Posté : 09 mars 2014, 20:54
par sirakawa
Je rappelle le même module parce que c'est le seul moyen de savoir sans Javascript quel bouton a été coché.
ajoute dans le formulaire:
<input type = 'hidden' name = 'ID' value ='$ID' />
<input type = 'hidden' name = 'pin' value = '$pin' />
Javascript se passe sur la machine cliente et détecte immédatement les actions.
PHP se passe sur la machine serveur et détecte seulement quand le formulaire est envoyé...
Re: Remplir automatiquement zone input text
Posté : 10 mars 2014, 11:01
par Herve_be
Bonjour,
Je comprends ce que tu veux faire : rappeler le même module en lui renvoyant ses paramètres input; OK.
Il y a cependant un détail qui ne fonctionne pas
Code : Tout sélectionner
<input type = 'text' name =' champ1' id = '1' value ='$texte' />
<input type = 'hidden' name = 'ID' value ='$ID' />
<input type = 'hidden' name = 'pin' value = '$pin' />
La valeur reçue dans la zone text n'est pas le contenu de la variable $texte mais le string "$texte" !
Idem pour les 2 valeurs $ID et $pin.
C'est d'ailleurs bien normal puisque à ce moment je suis en html, pas en php.
Merci pour ton aide en tout cas, je crois qu'on y est presque.
Rudy
Re: Remplir automatiquement zone input text
Posté : 10 mars 2014, 12:31
par sirakawa
C'est pourquoi j'écris :
print "<form.....>"; pour être en php
Re: Remplir automatiquement zone input text
Posté : 10 mars 2014, 13:17
par Herve_be
Ah oui, évidemment !
Bon le principe fonctionne parfaitement sauf un détail : je ne souhaite pas que le texte soit
remplacé par l'invite quand on clique sur l'icone, mais qu'on
ajoute l'invite correspondant au bouton; j'ai donc fait ceci
Code : Tout sélectionner
switch ($bouton)
{
case 1:
$texte = $texte."bouton 1 activé";
break;
case 2:
$texte = $texte."bouton 2 activé";
break;
case 3:
$texte = $texte."bouton 3 active";
break;
}
mais ça ne fonctionne pas.
Si je clique sur bouton 2 j'obtiens bien "bouton 2 activé"
mais si je clique ensuite sur bouton 3 j'obtiens "bouton 3 active" alors que je voudrais "bouton 2 activébouton 3 active".
Question subsidiaire : pourquoi commences-tu à numéroter les boutons à 2 ?
Re: Remplir automatiquement zone input text
Posté : 10 mars 2014, 16:04
par sirakawa
La numérotation n'a rien d'important; je devais avoir picolé...
Il me semble qu'il faudrait mettre au début:
$texte = isset($_POST['nomdechamp']) ? $_POST['nomdechamp']) : "texte de départ";
Re: Remplir automatiquement zone input text
Posté : 10 mars 2014, 18:02
par Herve_be
Grand merci pour ton aide et ta patience : ça fonctionne !
J'ai finalement fait
Code : Tout sélectionner
if (isset($_POST['bouton'])) $texte = $_POST['Comment']. ...;
Re: Remplir automatiquement zone input text
Posté : 21 mars 2014, 13:08
par Herve_be
Bonjour,
Petit problème : si le texte contient un quote (') il est tronqué.
Code : Tout sélectionner
if (isset($_POST['bouton']))
{
$texte = $_POST['Comment'];
$texte=$texte.$_POST['bouton']; /* J'ajoute au texte saisi le texte prédéfini correspondant au bouton */
}
echo "<input type='text' size='100' name='Comment' value ='$texte'>";
echo "<input type='submit' value='Confirmer'>";
Quand on clique sur "Confirmer" on revient bien dans le même module .php avec le contenu de $texte
sauf si par exemple le texte saisi est "aujourd'hui" le texte revient avec la valeur "aujourd".
J'ai essayé d'ajouter
Code : Tout sélectionner
$texte = mysql_real_escape_string($texte); /*Protect from special characters */
mais alors il revient avec "aujourd\"
Une idée pour résoudre ce petit problème ?
Merci
Re: Remplir automatiquement zone input text
Posté : 21 mars 2014, 14:41
par sirakawa
l'apostrophe == galère.
Idée à adapter :
<?PHP
$texte = isset($_POST['texte']) ? htmlspecialchars($_POST['texte'], ENT_QUOTES ): "";
print "$texte";
print
"<form method = 'post' action = 'index.php' >
<input type = 'text' name = 'texte' value = '$texte' >
<button type = 'submit'>OK</button>
</form>";
?>