Impossible d'enregistrer les case a cocher dans ma base de donnée MYSQL (langage

Signaler
Messages postés
2
Date d'inscription
lundi 11 octobre 2010
Statut
Membre
Dernière intervention
25 décembre 2010
-
Messages postés
194
Date d'inscription
dimanche 18 mars 2007
Statut
Membre
Dernière intervention
11 juillet 2015
-
Bonjour,

J'arive sans probleme a inserer les zone de texte de mon formulaire dans ma base mais je bloque sur les cases à cocher malgrès le fait que j'ai trouver beaucoup de post traitant de ce sujet je n'arive pas à trouver la solution enfin je vous expose mon probleme:
Voici deja la partie de mon formulaire avec les case à cocher :

Cochez vos département d'activité :

<label for="01">01</label>

<label for="02">02</label>

<label for="03">03</label>

<label for="04">04</label>



J'ai dans ma base de donnée un champ par departement et j'aimerais que par exemple dans le champ 02 la case a cocher inscrive 02 dans 04-04 etc... et pour l'instant sa n'insere ni "on" ni 0 ou 1 ni rien j'ai droit soit a mon message d'erreur soit il ne se plain pas mais n'insere rien...
Voici maintenant le code php que j'utilise :
$result = mysql_query("
INSERT INTO compte_utilisateur(
Nom_Utilisateur
, Mot_de_Passe
, Adresse_Email
, Date_Inscription
, Clef_Activation , test , 01 , 02 , 03 , 04
)
VALUES(
'" . $_POST["TB_Nom_Utilisateur"] . "'
, '" . md5($_POST["TB_Mot_de_Passe"]) . "'
, '" . $_POST["TB_Adresse_Email"] . "'
, '" . time() . "'
, '" . $clef_activation . "'
, '" . $_POST["TB_test"] . "'
, '" . $_POST["01"] . "'
, '" . $_POST["02"] . "'
, '" . $_POST["03"] . "'
, '" . $_POST["04"] . "'
)
");
J'espere avoir ete asser clair et le debutant que je suis vous remercie infiniment à l'avance pour votre eventuelle futur aide.

5 réponses

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Salut,

j'ai droit soit a mon message d'erreur soit il ne se plain pas mais n'insere rien

Et c'est quoi le message d'erreur ?

Es-tu sûr que $_POST['01'] existe ? Idem pour $_POST['02'] etc ?
D'après mes souvenirs, il me semble que les cases à cocher qui ne sont pas cochées ne sont pas envoyées , donc inexistantes dans $_POST

Est-ce que ta configuration permet l'affichage des erreurs ?
error_reporting(E_ALL | E_STRICT);

pour être sûr...

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Messages postés
194
Date d'inscription
dimanche 18 mars 2007
Statut
Membre
Dernière intervention
11 juillet 2015

salut,
avec plusieurs case à cocher utilise plutôt une variable formulaire en forme de tableau
donc au lieu de faire name="01" ,name="02" tu fait


//et à la reception du formualire tu as $tab_dpt = $_POST['dpt']; // tab_dpt est un array
//nb_dpt
$nbdpt = sizeof($tab_dpt) 

un truc dans ce genre ....
Messages postés
2
Date d'inscription
lundi 11 octobre 2010
Statut
Membre
Dernière intervention
25 décembre 2010

Bon alors tout d'abord merci pour vos reponse.
En reponse a devil_may_cry j'ai fait quelques changement dans ton sens voici :
if ((isset($_POST['dpt'])) && ($_POST['dpt']!=''))
{
$tab_dpt = $_POST['dpt']; // tab_dpt est un array
while ($row_dpt = array_shift($tab_dpt))
    {
$requete_appartenir = 'INSERT INTO compte_utilisateur(01, 02, 03, 04) VALUES(' .$row_dpt.')'or die (print_r($bdd->errorInfo())) ;
$result = mysql_query ($requete_appartenir);
    }
}
(apres ce code vient mon anciene requete sql pour les champ texte)
je n'est pa reussi a utiliser la fonction sizeof() (erreur desolé je ne l'ai pa relever..) lorsque je l'est mis en boucle (a la place de la fonction array_shift ci-dessus) le temp de chargement de la page etait infini et le code de maintenant marche a la perfection mise a part que mes champs 01,02,03,04 ne sont toujours pas completé... voyez vous quelque chose que j'ai mal fait...? désolé de ramer mais mes faible competence sont a bout et je ne vois plus quoi changer...

-------------------------------

Sinon en réponse à neigedhiver je n'ai plus de message d'erreur g essayer ton code mais il n'a rien retourner et celui que j'avais precedement était celui que j'avais moi meme ecrit en cas d'echec lors de la creation dutilisateur il ne m'indiquait donc rien quand à l'existance de mes variable tu as dû voir par toi meme qu'elle paraissait dans mon formulaire sauf si tu parle d'autre chose et que je ne saisi pas le sens de ta question...

Bon et bien j'attend vos idée avec impatience et vous en remercie par avance.
Messages postés
2380
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
16
oila enfin quelqu'un qui écoute les conseils des gens et qui se couche moins bete le soir..
Bonnes fêtes
S.
Messages postés
194
Date d'inscription
dimanche 18 mars 2007
Statut
Membre
Dernière intervention
11 juillet 2015

Rien ne vaut un petit code pour expliquer donc j'espere que ca sera clair
<?php
//$_POST['dpt'] = array('01','02','03');
if( isset($_POST['dpt']) && !empty($_POST['dpt']) ) {
// Initialisation du compteur
$cpt = 0;
// Recuperation du nombre de dpt;
$dpt = count($_POST['dpt']);
// Recuperation des valeurs
$valdpt = $_POST['dpt'];
// Juste pour le deboguage
if ($dpt == 0 ) {
die('aucun dpt');
} else {
echo $dpt.' dpt';
}
// fin deb
// Construction de la requete SQL,
$sql = "INSERT INTO compte_utilisateur(01,02,03,04) VALUES(";
for( $i=0; $i < $dpt; ++$i ) {
 // Concatenation  avec les valeur à inserer
 // Si la prochaine valeur est superieur à la borne max alors on ajoute pas de virgule
 if( $i + 1 >= $dpt )
 	 $sql.= "'".$valdpt[$i]."'";
 else 
   $sql.= "'".$valdpt[$i]."',";
}
// Fn de la boucle
// Finalisation de la requête
// ICI c'est la partie la plus crutial car si le nombre de case cocher est inferieur au nombre de case à remplir
// Tu aura une erreur SQL genre "columns doesn't match" donc il faut verifier 
// si le nombre de valeur envoyer est egal un nombre de champs à remplir si c'est le cas c'est bon sinon tu complete
// Donc un aura par exmple le nombre de champs à remplir = 4
$nbchampsfinal = 4;
// On verifie le nombre de champs envoyer
if( $nbchampsfinal > $dpt ) {
for( $i = $dpt; $i < $nbchampsfinal; ++$i ) {
if( $i + 1 > $nbchampsfinal )
 	 	$sql.= "''";
 	else 
   		$sql.= ",''";
}
}

$sql.= ')';
// encore deboguage pour voir si la requete c'est bien construit
echo $sql;
// Execution de la requete
mysql_query($sql) or die(mysql_error());
// Encore une Derniere chose l'ordre des valeur dans dpt est le meme que celui de ton formulaire 
}
?>