Petit probleme avec checkbox et isset [Résolu]

Signaler
Messages postés
21
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
17 janvier 2006
-
Messages postés
21
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
17 janvier 2006
-
Bonjour!!!



J'ai un formulaire avec des checkbox!!!

J'ai créé une table produit avec 3 champ ( un champ par produit ,je sais pas tro comment faire )



voici un extrait:



<label>produit1 name="produit1" type="checkbox" value="produit1"
/></label>





<label>produit2
name="produit2" type="checkbox" value="produit2" /></label>



<label>produit3
name="produit3" type="checkbox" value="produit3" /></label>



Mon problème est le test de l'existence des variables avec isset!!





Dans ce formulaire on peut avoir un ou plusieurs choix!!

Seulement quand je fais isset($_POST['produit1'] and
isset($_POST['produit2'] and isset($_POST['produit3']) rien ne se passe
( pas d'insertion ou de mise jour dans ma base) car on ne coche
pas forcément toutes les cases ( ceci , je l'ai bien compris)!!



Si je mets pas ce test, il me dit ensuite un message de ce style Notice: Undefined index: product1 in e:\perso\site\modif_client.php on line 44 quand je veux cocher les produits 2 et 3 mais l'insertion dans la base se fait correctement!!



Comment puis je contourner ce problème???



MERCI D'AVANCE!!

9 réponses

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,

ça veut dire que tu tentes d'utiliser une $variable['product1'] qui n'existe pas, il faut donc savoir si la variable existe avant de l'utiliser :

par exemple if(isset($_POST['product1'])) //action sur product

a +

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
7
Salut,



il y'a une manière très très très élégante de faire ça... Manière
d'ailleurs mainte fois commentée sur ce site, et présentée ici :

http://fr.php.net/sizeof (par exemple...)





Je t'en sort le bout morceau :




Thing #1


Thing #2


Thing #1


Thing #4












Que dire de plus...?

Sinon, que ça marche aussi comme ça :




Thing #1


Thing #2


Thing #1


Thing #4










ou comme ça :




Thing #1


Thing #2


Thing #1


Thing #4














Alors, tu récupère un tableau de toutes les checkboxes cochée (!!! uniquement celles-ci !!!) :

foreach( $_POST['arreglo'] as $k=>$v) {
echo "Vous avez coché $k et ça valeur est $v
\n";
}






Voilà, au plaisir...





PS : La bonne syntaxe pour label est

Ettiquette pour :
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
7
Note : ce que dis antho est vrai, et doit être aussi fait dans mon exemple...

if( isset($_POST['arreglo']) and is_array($_POST['arreglo']) ) {
foreach( $_POST['arreglo'] as $k=>$v) {
echo "Vous avez coché $k et ça valeur est $v
\n";
}
}
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
7
Tout Faux !



Je flaire, et peux me tromper, que tu n'a pas compris ce qu'est une table MySQL.

J'ai aussi comme l'impression que tu ne sais pas ce que veux dire "foreach". Et la j'ai moins la sensation de me tromper...



Didactiquement, je devrais t'engueler séverement en te disant qu'on
n'utilise pas PHP et MySQL sans avoir jeté un oeil attentif sur des
tutoriaux pour débutant !

(La signature d'Anthonomicro en compte deux jolis).



Mais, ne voulant pas en savoir plus, je vais exceptionnelement te
cracher le code ! Ne prends pas la mauvaise habitude de faire faire tes
codes par les autres...



$champ = '(NOM_DU_CHAMP)'; // <= !!!!!


$table = 'clients';



$values = '';


$
first = true;


if( isset($_POST['produit']) and is_array($_POST['produit']) ) {


foreach( $_POST['produit'] as $k=>$v) {


if($first) $first = false;


else $values.= ',';


$values.='('.addslashes($v).')';


}


}


$query = "insert into $table $champ values $value;";




Tu ne comprends pas mon code ? Alors ne l'utilise pas !

Ou sinon, tu vas revenir ici dans 15 minutes...
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
7
Ho p@@ain les belles fautes que voilà....

dis => dit

ça => sa



1000 excuses !
Messages postés
21
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
17 janvier 2006

Merci pour vos réponses!!Je vais pouvoir enfin avancer depuis le temps que je prenais la tête avec!!!!



Une toute petite question si ce n'est pas trop osé!!!



Il ya un petit truc que je comprends pas!!

Comment je pourrai faire pour insérer les cases cochées dans le champ de ma table??? Merci encore!!
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
7
Ben tu construis une requète !

Cherche un peu sur le site, il y'a environ 124 431 843 845 messages à ce sujet.
Messages postés
21
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
17 janvier 2006

Donc pour récapituler voici ce que je dois avoir en a ppliquant vos conseils







Voici pour le formulaire:





<label>Product1 name="produit[product1]" type="checkbox" value="amasis"
/></label>





<label>Product2
name="produit[product2]" type="checkbox" value="keops"
/></label>



<label>Product3
name="produit[product3]" type="checkbox" value="ramses"
/></label>



Il manque la syntaxe du label mais ca , je le ferai apres!





Du coup , les 3 champs dans ma table que j'avais pour chaque produit est remplacée par le champ produit que j'ai créé



test de l'existence de produit:

if( isset($_POST['produit']) and is_array($_POST['produit']) ) {
foreach( $_POST['produit'] as $k=>$v) {
echo "Vous avez coché $k et ça valeur est $v
\n";
}
}


Requete pour insérer valeur des checkbox cochées:



mysql_query("INSERT into clients values('".$_POST['produit']."')");]



Est ce que c'est ca ou j'ai tout faux!!!
Messages postés
21
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
17 janvier 2006

Merci encor J_G!!



Je crois que t'a entierement raison!!!J'ai beaucoup de boulot!!!!

Je vais m'entrainer beaucoup c'est promis!!!



Merci encore !!!