[php]formulaire disabled

Fermé
Toni - 9 juin 2005 à 17:37
 Xavier - 9 juin 2005 à 18:11
Salut tous le monde,

Je récupere des données d'un formulaire. Certains menu sont "disabled" d'autre non. Je veux tout récupérer. En plus, ce qui sont "disabled" je veux leur donner une valeur précise.

je voudrais donc écrire ceci en PHP :

Si (monchamp == "disabled")
alors $variable="20";
Sinon $variable=$_post['monchamp']

Comment le fait on en "Véritable" programmation ??

Merci beaucoup par avance pour votre aide!!
A voir également:

1 réponse

Salut,

Je ne suis pas convaincu que les navigateurs envoient les valeurs des formulaires disabled... Ca reste à tester.

Enfin, passons ce détail.

Comment actives-tu / désactives-tu les champs de ton formulaire ?

Est-ce par des javascripts, côté client donc ?
Si oui, tu n'as aucun moyen, dans ton script php qui suit, de savoir si le champ était ou non activé.
Je te conseille de contourner le problème en rajoutant des champs cachés à valeur booléenne, pour chaque champ que tu peux rendre disabled (<input type="hidden" name="isEnabled" value="0" ou "1" />), que tu mets à 0 si le champ correspondant est disabled, et à 1 sinon.
Comme ça, dans ton script php qui suit tu pourras utiliser cette valeur pour tes tests :
if (!$_POST['isChamp1enabled']) $variable="20";
else $variable=$_POST['champ1'];


La mise à jour des champs cachés se fait bien sûr avec les javascripts qui rendent les champs disabled / enabled

D'un autre côté, si tu définis les champs disabled du côté du serveur (lors de la génération de la page contenant le formulaire), tu peux résoudre le problème de manière similaire, en associant directement la valeur des champs cachés lors de la génération de ta page, ou alors en passant ces valeurs en variable de session. Mais ce serait idiot de mettre en place des sessions juste pour ça si tu n'en as pas.


Bref, pour résumer ma solution : rajoute des champs hidden qui t'indiqueront si lechmp correspondant est disabled ou pas.
Cette solution ne marche hélas QUE SI les doutes que j'ai donnés en intro ne se vérifient pas. Dans le cas contraire, désolé mais je vois pas comment faire.

Bon courage,

Xavier
0