8791 sujets

Développement web côté serveur, CMS

Bonjour,

Je suis sur un formulaire et j'ai besoin que lorsque le visiteur se trompe, par exemple il n'a pas remplis les champs obligatoires, le bouton reste au même endroit.
Exemple pour des input de type text :

<input type="text" name="bonjour" value="<?php echo $_POST['bonjour']; ?>" />


Comment faire de même pour les checkbox :

Civilité :<br />
<label for="M">M.</label>
  <input type="radio" name="civilite" value="Monsieur" id="M" checked="checked" />
<label for="Mme">M<sub>me.</sub></label>
  <input type="radio" name="civilite" value="Madame" id="Mme" />
<label for="Mlle">M<sub>lle.</sub></label>
  <input type="radio" name="civilite" value="Mademoiselle" id="Mlle" />


Avec "Monsieur" coché par défaut, quand le visiteur se trompe sur le formulaire, la case va se remettre automatiquement sur monsieur.
Comment faire pour quelle revienne sur ce que le visiteur avait mis ?

Merci
Modifié par KelT55 (20 Jul 2010 - 17:15)
Salut,

<input type="text" name="bonjour" value="<?php echo $_POST['bonjour']; ?>" />


on n'affiche/n'utilise jamais les valeurs rentrées par l'utilisateur directement sans les tester ou les protéger avant.

Pour les valeurs de ton formulaire, il suffit d'afficher "checked" sur Monsieur si la civilité n'a pas été envoyé. Ensuite tu testes normalement si tu récupères M. Mme ou Mlle pour repositionner ton bouton radio au bon endroit avec checked lorsque la civilité a été envoyé.

Le problème de la valeur par défaut, c'est que le visiteur peut oublier de choisir sa civilité et tout de même envoyer le formulaire.
Merci de ta réponse

On n'affiche pas je comprends pourquoi (j'ai enlevé les htmlspecialchars pour plus de claireté) mais pourquoi on "n'utilise pas" ?
Par exemple si je mets

if ($_POST['bonjour']) = NULL {
     instruction..
}


ça peut poser problème niveau sécurité ?

a écrit :
Ensuite tu testes normalement si tu récupères M. Mme ou Mlle pour repositionner ton bouton radio au bon endroit avec checked lorsque la civilité a été envoyé.


Oui c'est justement ma question, comment procéder ?
Modifié par KelT55 (18 Jul 2010 - 19:34)
Il suffit d'ajouter l'attribut
checked="checked"
dans la balise radio que tu veux voir cochée par défaut.

a écrit :
if ($_POST['bonjour']) = NULL { 
     instruction.. 
} 

Premièrement cette syntaxe est erronée, on écrit plutôt :
if ($_POST['bonjour'] == NULL) { 
     instruction.. 
} 

Dans ce genre de cas, tant que tu ne réutilise pas le contenu de la variable directement il n'y a pas de problème de sécurité.

Dans le cas de ton bouton radio, tu récupère la valeur du champ coché. A toi de faire le test adéquat en conséquent.
Modifié par Tony Monast (19 Jul 2010 - 13:11)
Je trouve que vous n'expliquez pas bien, ce n'est pas contre vous.

Pour ceux qui aurait le même problème, j'ai réussi, voici un exemple pour le choix de la civilité :


Civilité :<br />
	<label for="M">M.</label>
		<input type="radio" name="civilite" value="Monsieur" id="M" <?php if ($_POST['civilite'] == "Monsieur") { echo 'checked="checked"'; } ?> />
	<label for="Mme">M<sub>me.</sub></label>
		<input type="radio" name="civilite" value="Madame" id="Mme" <?php if ($_POST['civilite'] == "Madame") { echo 'checked="checked"'; } ?> />
	<label for="Mlle">M<sub>lle.</sub></label>
		<input type="radio" name="civilite" value="Mademoiselle" id="Mlle" <?php if ($_POST['civilite'] == "Mademoiselle") { echo 'checked="checked"'; } ?> />


Merci a+
Modifié par KelT55 (19 Jul 2010 - 19:18)
a écrit :
Dans le cas de ton bouton radio, tu récupère la valeur du champ coché. A toi de faire le test adéquat en conséquent.


Ouais enfin là, il répète ma question, c'est un peu abusé lol

A+ Smiley cligne
Salut,

tu as un exemple qui me semble un petit peu plus parlant dans ce post.

Et si tu considères que ce sujet est [Résolu] merci de l'indiquer en éditant ton premier post et en modifiant le titre. Smiley cligne