ma checkbox qui ne passe pas

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 : ma checkbox qui ne passe pas

par choubix » 02 nov. 2007, 10:11

suffisait juste de faire une sieste pour avoir les yeux en face des trous...
il manquait jsute une petite parenthese.

ca marche au poil.
approuve et adopte!

merci!

par choubix » 02 nov. 2007, 03:04

marrant: autant ca marche bien avec newsletter_1 et 2 autant qd j'applique le code a tout le formulaire ca plante.

j'avais trouve une petite erreur de typo dans le code (un m a la place d'un l dans le passage de l'info des newsletters) mais ca ne vient pas de ca.

je vais faire un petite pause et m'y remettre avec la tete reposee :)


au fait: oui les champs du formulaires portent les memes noms que les variables :)

par choubix » 02 nov. 2007, 02:44

je sais pas pourquoi j'ai voulu utiliser une boucle vu que j'extrais pas d'infos de la base de donnees par ailleurs. le manque de sommeil certainement!

je garde en tete ta syntaxe qui me semble bien pratique!

merci aussi a Truc pour le lien Faq. j'ai l'impression que je vais devoir y refaire u ntour rapidement.

par h0_noMan » 02 nov. 2007, 02:01

Ta boucle n'a aucune utilité vu le fait que tu ne te sers pas de $i

Tu ferais mieux de recuperer tes valeurs directement sans te compliquer la vie.
$fname = (isset($_POST['fname'])?$_POST['fname']:'';
$lname = (isset($_POST['lname'])?$_POST['lname']:'';
$ccode = (isset($_POST['ccode'])?$_POST['ccode']:'';
$mobile = (isset($_POST['mobile'])?$_POST['mobile']:'';
$address1 = (isset($_POST['address1'])?$_POST['address1']:'';
$address2 = (isset($_POST['address2'])?$_POST['address2']:'';
$zip = (isset($_POST['zip'])?$_POST['zip']:'';
$country = (isset($_POST['country'])?$_POST['country']:'';
$city = (isset($_POST['city'])?$_POST['city']:'';
$newsletter_1 = (isset($_POST['newsmetter_1'])?$_POST['newsletter_1']:'';
$newsletter_2 = (isset($_POST['newsmetter_2'])?$_POST['newsletter_2']:'';

print "$fname, $lname, $ccode, $mobile, $address1, $address2, $zip, $country, $city, $newsletter_1, $newsletter_2"; 
A condition que les champs de ton formulaire aient le meme nom que les variables.
Si non, tu changes pour que cela corresponde.

par choubix » 02 nov. 2007, 01:53

j'avais bien compris la syntaxe mais je ne voayis pas comment l'inclure dnas ma boucle.

en fait c'est a utiliser en controle et pas dans la boucle.
je vais voir comment utiliser la fonction avec les champs de texte

en attendant: merci pour ton post :)

par Truc » 02 nov. 2007, 01:52

En complément... sujet de la FAQ

par h0_noMan » 02 nov. 2007, 01:33

Je pense que tu devrais l'utiliser pour toutes les valeurs.

Maintenant je t'explique la ligne.
$newsletter_1 = (isset($_POST["newsletter_1"]))?1:0; 
isset($_POST["newsletter_1"]) -> Test si la valeur a bien ete envoyé dans le formulaire (ou si la checkbox n'a pas ete coché)

?1:0; -> Si c'est vrai alors $newsletter_1=1 sinon $newsletter_1=0

(condition)?valeur si vrai:valeur si faux;

par choubix » 02 nov. 2007, 01:26

salut h0_noMan,

je ne te suis pas: c'est a faire pour toutes les valeurs?
je ne comprends pas comment utiliser ta ligne... (bien que j'en vois l'utilite)

par h0_noMan » 02 nov. 2007, 00:41

Tu ne controles pas les clef de tableau.

Tu ferais mieux de recuperer tes valeurs comme ceci :
$newsletter_1 = (isset($_POST["newsletter_1"]))?1:0;

ma checkbox qui ne passe pas

par choubix » 02 nov. 2007, 00:05

hello,

j'ai un petit formulaire pour que les membres update leurs informations perso.
il y a 2 checkbox dont les noms sont: newsletter_1 et newsletter_2

par defaut elles sont cochees avec une valeur de 1:

Code : Tout sélectionner

<td class="styleboldblack"><input name="newsletter_1" type="checkbox" id="newsletter_1" value="1" checked></td> <td colspan="3"><span class="styleboldblack">I wish to receive your newsletter!</span></td>
le script qui traite les infos recupere tout correctement:
<?php 
$fields = array_keys($_POST);

for ($i = 0; $i < count($fields); $i++)
	{
	$fname = $_POST[$fields[0]];	
	$lname = $_POST[$fields[1]];
	$ccode = $_POST[$fields[2]];
	$mobile = $_POST[$fields[3]];
	$address1 = $_POST[$fields[4]];
	$address2 = $_POST[$fields[5]];
	$zip = $_POST[$fields[6]];
	$country = $_POST[$fields[7]];
	$city = $_POST[$fields[8]];
	$newsletter_1 = $_POST[$fields[9]];
	$newsletter_2 = $_POST[$fields[10]];
	
	}

print "$fname, $lname, $ccode, $mobile, $address1, $address2, $zip, $country, $city, $newsletter_1, $newsletter_2";

mysql_close();
?>
maintenant si les checkbox sont decochees mon tableau se decalle et $_POST[$fields[9]]; et $_POST[$fields[10]]; me retourne respectivement un champs vide et "Submit"


comment est ce que je peux faire pour eviter ca svp?
je cherche qq chose de simple et direct pour pas avoir a me taper du code pour gerer les cas: 0 au 2 checkbox, 1ere cochee et 2nd decochee, 1ere decochee et 2nd cochee...

merci :)