[RESOLU] Remplir automatiquement zone input text

Eléphant du PHP | 256 Messages

08 mars 2014, 17:42

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 ?

Mammouth du PHP | 2278 Messages

08 mars 2014, 18:15

Bonjour,

Serait-il plus compliqué d'utiliser un <select>?
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 256 Messages

08 mars 2014, 18:37

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".

Mammouth du PHP | 2278 Messages

08 mars 2014, 20:39

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

Eléphant du PHP | 256 Messages

09 mars 2014, 11:24

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

Mammouth du PHP | 2278 Messages

09 mars 2014, 14:17

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>"


?>
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 256 Messages

09 mars 2014, 18:48

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 :oops:
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 ?

Mammouth du PHP | 2278 Messages

09 mars 2014, 20:54

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

Eléphant du PHP | 256 Messages

10 mars 2014, 11:01

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

Mammouth du PHP | 2278 Messages

10 mars 2014, 12:31

C'est pourquoi j'écris :
print "<form.....>"; pour être en php
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 256 Messages

10 mars 2014, 13:17

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 ?

Mammouth du PHP | 2278 Messages

10 mars 2014, 16:04

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

Eléphant du PHP | 256 Messages

10 mars 2014, 18:02

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']. ...;

Eléphant du PHP | 256 Messages

21 mars 2014, 13:08

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

Mammouth du PHP | 2278 Messages

21 mars 2014, 14:41

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>";

?>
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD