Petit probleme avec checkbox et isset

Résolu
maxwellcs Messages postés 21 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 17 janvier 2006 - 14 déc. 2005 à 15:43
maxwellcs Messages postés 21 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 17 janvier 2006 - 14 déc. 2005 à 20:50
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

cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
14 déc. 2005 à 15:56
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>
3
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
14 déc. 2005 à 16:03
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 :
3
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
14 déc. 2005 à 16:05
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";
}
}
3
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
14 déc. 2005 à 19:07
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...
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
14 déc. 2005 à 16:07
Ho p@@ain les belles fautes que voilà....

dis => dit

ça => sa



1000 excuses !
0
maxwellcs Messages postés 21 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 17 janvier 2006
14 déc. 2005 à 17:58
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!!
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
14 déc. 2005 à 18:07
Ben tu construis une requète !

Cherche un peu sur le site, il y'a environ 124 431 843 845 messages à ce sujet.
0
maxwellcs Messages postés 21 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 17 janvier 2006
14 déc. 2005 à 18:38
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!!!
0
maxwellcs Messages postés 21 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 17 janvier 2006
14 déc. 2005 à 20:50
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 !!!
0
Rejoignez-nous