Page 1 sur 1

ma checkbox qui ne passe pas

Posté : 02 nov. 2007, 00:05
par choubix
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 :)

Posté : 02 nov. 2007, 00:41
par h0_noMan
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;

Posté : 02 nov. 2007, 01:26
par choubix
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)

Posté : 02 nov. 2007, 01:33
par h0_noMan
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;

Posté : 02 nov. 2007, 01:52
par Truc
En complément... sujet de la FAQ

Posté : 02 nov. 2007, 01:53
par choubix
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 :)

Posté : 02 nov. 2007, 02:01
par h0_noMan
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.

Posté : 02 nov. 2007, 02:44
par choubix
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.

Posté : 02 nov. 2007, 03:04
par choubix
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 :)

Posté : 02 nov. 2007, 10:11
par choubix
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!