ma checkbox qui ne passe pas

Eléphant du PHP | 319 Messages

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 :)
niveau: pas terrible en php mais je me soigne...

Eléphant du PHP | 445 Messages

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;

Eléphant du PHP | 319 Messages

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)
niveau: pas terrible en php mais je me soigne...

Eléphant du PHP | 445 Messages

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;

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

02 nov. 2007, 01:52

En complément... sujet de la FAQ

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 319 Messages

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 :)
niveau: pas terrible en php mais je me soigne...

Eléphant du PHP | 445 Messages

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.

Eléphant du PHP | 319 Messages

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.
niveau: pas terrible en php mais je me soigne...

Eléphant du PHP | 319 Messages

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 :)
niveau: pas terrible en php mais je me soigne...

Eléphant du PHP | 319 Messages

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!
niveau: pas terrible en php mais je me soigne...