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

tonc Messages postés 2 Date d'inscription lundi 11 octobre 2010 Statut Membre Dernière intervention 25 décembre 2010 - 24 déc. 2010 à 15:55
devil_may_cry Messages postés 194 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 11 juillet 2015 - 27 déc. 2010 à 05:34
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

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
24 déc. 2010 à 18:58
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à ;)
0
devil_may_cry Messages postés 194 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 11 juillet 2015
25 déc. 2010 à 04:59
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 ....
0
tonc Messages postés 2 Date d'inscription lundi 11 octobre 2010 Statut Membre Dernière intervention 25 décembre 2010
25 déc. 2010 à 22:09
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.
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 19
26 déc. 2010 à 10:16
oila enfin quelqu'un qui écoute les conseils des gens et qui se couche moins bete le soir..
Bonnes fêtes
S.
0

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

Posez votre question
devil_may_cry Messages postés 194 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 11 juillet 2015
27 déc. 2010 à 05:34
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 
}
?>
0