Enregistrer case à cocher (nombre limité)

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 : Enregistrer case à cocher (nombre limité)

par jeff63 » 04 déc. 2008, 00:01

Quand j'écris:
$sql = "UPDATE pw_type_eff SET case2=".$_POST["check"][0].", case2=".$_POST["check"][1].", case2=".$_POST["check"][2]." WHERE code_dossier = 'js'"; 
Sa marche!
Si j'écris:
$sql = "INSERT INTO pw_type_eff case2=".$_POST["check"][0].", case2=".$_POST["check"][1].", case2=".$_POST["check"][2]." "; 
J'ai ce message d'erreur:
Erreur SQL !INSERT INTO pw_type_eff (case1=5, case2=6, case3=7 )
Erreur de syntaxe près de '=5, case2=6, case3=7 )' à la ligne 1

Si je veut changer le nom des cases, est que c'est possible:
Option 1 => toto
Option 2=> tata
et ainsi de suite

Merci pour ton aide et ta patience.

par guilt92 » 03 déc. 2008, 16:21

En fait si tu as utilisé la premiere méthode tu as donc $_POST["check"] qui est un tableau.

Si tu as fait toutes les vérifications et que tu es sur qu'il ne contient de 3 éléments (tu peux vérifier avec un if(count($_POST["check"]) ==3 par exemple) il te suffit de faire un update classique :
"UPDATE table SET case1=".$_POST["check"][0].", case2=".$_POST["check"][1].", case3=".$_POST["check"][2]." WHERE *condition*";

par jeff63 » 03 déc. 2008, 15:35

Merci pour ta réponse, j'ai réécris en tenant compte de la première méthode.
Si je coche les cases 3, 6, 9 traitement.php me renvoie 3, 6, 9.
Comment est-ce que je peut enregistrer dans la base 3 dans le champ case1, 6 dans le champ case2 et 9 dans le champ case3.
Encore une fois merci pour ton aide.

par guilt92 » 03 déc. 2008, 12:09

Bonjour,

En général pour des valeurs multiples il faut utiliser la méthode suivante :

Exemple de formulaire :
<form name="checkboxes" method="post" action="traitement.php">
<?php for($i=1;$i<=9;$i++) { ?>
<input type="checkbox" name="check[]" value="<?php echo $i;?>"/>Option <?php echo $i;?><br/> 
<?php } ?>
<input type="submit" name="sbt" value="Go"/>
</form>
Ceci crée 9 cases à cocher et le fait qu'elles aient un nom "check[]" crée en fait un tableau.

Ainsi dans la page de traitement on récupère un tableau qui contient toutes les cases cochées, on peut afficher les résultats ainsi :
if(isset($_POST["sbt"]) && !empty($_POST["check"]))
{
	foreach($_POST["check"] as $value)
		{
		echo $value."<br/>";
		}
}
Sinon avec ton existant tu as une méthode beaucoup moins recommandée qui consiste à tester si les valeurs ont été cochées ou pas et les ajouter à un tableau par exemple dans ta page de traitement :
$tab = array();
if(!empty($_POST["case_a"])) $tab[] = $_POST["case_a"];
if(!empty($_POST["case_b"])) $tab[] = $_POST["case_b"];
if(!empty($_POST["case_c"])) $tab[] = $_POST["case_c"];
//etc
Et après dans ton tableau $tab tu auras les 3 valeurs cochées
<?php print_r($tab);?>

Enregistrer case à cocher (nombre limité)

par jeff63 » 02 déc. 2008, 23:53

Bonjour à tous, dans un formulaire j'ai 9 cases à cocher mais je limite l'utilisateur à en sélectionner que 3.
Donc j'ai : case_a, case_b, case_c, case_d, case_e, case_f, case_g, case_h, case_i.

Dans la base j'ai les 3 champs : case1, case2, case3 (en fait il y en a plus pour d'autres renseignements) .

Par quel procédé est-ce que je peut récupérer la valeur des cases sélectionnées pour les enregistrer dans la base. Je cherche un procédé et un exemple pour progresser parce-que je suis complètement bloqué.

Merci d'avance pour votre aide.