valeur de cases à cocher

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : valeur de cases à cocher

par mosquitout » 04 août 2007, 22:20

Mille merci, grace à vous j'ai résolu ce pb ;)

par Truc » 04 août 2007, 00:58

2 réponses pour le prix d'une... n'oublie pas de payer en sortant :langue:

par Ryle » 04 août 2007, 00:56

Tu peux les déclarer où bon te semble du moment que c'est fait avant d'utiliser ta variable :)

include() réagit de la même manière que si tout le code inclu était placé à l'endroit indiqué. En gros, à l'exécution, php va rassembler tous les morceaux inclus et exécuter le tout comme s'il ne s'agissait que d'un seul et même fichier.

Ton autre problème vient de l'utilisation de $_POST qui lorsque tu arrives sur ta page ne contient aucune valeur (ou du moins pas celle que tu utilises). Du coup quand tu demandes d'afficher $_POST["nomprenom"] dans le champ "nomprenom", tu as une erreur t'indiquant que l'index n'est pas défini. Il te faudrait en fait tester si celui-ci existe avant de l'utiliser :
if (isSet($_POST["nomprenom"])) // si la valeur existe
  $nomprenom = $_POST["nomprenom"]; // on l'utilise
else // sinon
  $nomprenom = ''; // on défini une valeur par défaut
Tu peux ensuite utiliser la variable $nomprenom sans soucis puisqu'elle aura été déclaré
On peut simplifier l'écriture du code ci dessus en utilisant l'opérateur ternaire (voir la FAQ)
$nomprenom =  (isSet($_POST["nomprenom"])) ? $_POST["nomprenom"] : '';
Ca revient exactement au même, mais en plus compacte :)

Edit : Grumpf... grilled... bah tant pis, maintenant que c'est tapé hein.. :)

par Truc » 04 août 2007, 00:53

Salut et bienvenue

Les messages viennent du faite qu’elles ne sont pas initialisées avant leur utilisation.

Dans le switch tu initialise qu'une des 3 variables or tu les utilises toutes dans le formulaire.
Tu peux te servir de l'opérateur ternaire pour leur initialisation :
$coche_mr = (isset($_POST[civilite]) && $_POST[civilite] == "monsieur") ? "checked" : "";

Pour la variable POST["nomprenom"] de même elle n'est pas initialisée avant sonutilisation
Idem
Tu peux aussi regarder CECI pour le traitement d'un formulaire

Ne pas oublier les guillemets => $_POST[civilite] => $_POST["civilite"]
Un attribut id doit être unique dans une page tu ne peux avoir 3 fois id="radio"... à remplacer par "radio1, radio2, radio3 ... ou autre

valeur de cases à cocher

par mosquitout » 04 août 2007, 00:38

Bonjour,

Je débute Php et ceci est mon tout premier message sur ce forum.
J'ai fait pour commencer un formulaire avec 1 nom et 3 cases à cocher dessus.
Comme je l'ai souvent lu, j'ai séparé le fichier contenant le formulaire du fichier faisant les tests.
Dans mon fichier formulaire j'ai:
<?php
require("filtrage.php");
?>
<form name="form" action="<?php echo $_SERVER["PHP_SELF"] ?>" method="post" >
<input type="radio" name="civilite" id="radio" value="monsieur" <?php echo $coche_mr; ?>/>Mr.<br />
<input type="radio" name="civilite" id="radio" value="madame" <?php echo $coche_mme; ?>/>Mme<br />
<input type="radio" name="civilite" id="radio" value="mademoiselle" <?php echo $coche_mlle; ?>/>Mlle<br />
<p></p>
<label for="nom">Vos nom et pr&eacute;nom </label>
<br />
<input type="text" name="nomprenom" value="<?php echo $_POST["nomprenom"] ?>" size="40" maxlength="40"/>
<input type="submit" value="Valider" name="Envoi">
</form>
et dans mon fichier "filtrage.php", j'ai:

switch ($_POST[civilite]) 
        	{
            case "monsieur":
                $coche_mr = "checked";
                break;
            case "madame":
                $coche_mme = "checked";
                break;
            case "mademoiselle":
                $coche_mlle = "checked";
                break;
       		}  

Mais j'ai un pb de définition de variable et a priori d'initialisation pour la zone "nom".
Voilà le mes d'erreur:
Notice: Undefined variable: coche_mr in c:\program files\easyphp1-8\www\formulaires\tmp81wbwm7xyf.php on line 12
/>Mr.
et dans ma zone de saisie du nom, j'ai:
<br /><b>Notice</b>: Undefined index: nomprenom in <b>c:\program files\easyphp1-8\www\formulaires\tmp81wbwm7xyf.php</b> on line <b>18</b><br />

Ou dois-je déclarer les variables pour les cases à cocher ? ds mon fichier "form.php" ou dans "filtrage.php" ?
Et pour le nom ?
Merci de vos lumières ;)