PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 14-03-2010 09:57:19

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

CHECKBOX ET INSERTION SQL

Bonjour à tous!

J'ai un soucis avec les valeurs de mes checkbox, bien sur, j'arrive à les récupérer mais je n'arrive pas à les insérer dans un champ. Lorsque je met la requête dans le foreach qui traite le checkbox j'obtiens plusieurs enregistrements ce qui est normal.

Comment faire pour que la valeur du checkbox soit enregistrée dans un seul champ, par exemple, enregistrer la valeur 0123 provenant du formulaire (4 checkbox cochées) dans le champ fonction de ma table SQL ?

Voici mon code :

<HTML>
<HEAD>
</HEAD>
<BODY>
<!-- LES CHECKBOX --!>
<input type="checkbox" name="fonction[]" value="0">
<input type="checkbox" name="fonction[]" value="1">
<input type="checkbox" name="fonction[]" value="2">
<input type="checkbox" name="fonction[]" value="3">
</BODY>
</HTML>

<!-- TRAITEMENT DES CHECKBOX ET INSERTION BDD --!>

<?php
// LA PARTIE DE RÉCUPÉRATION DE LA VALEUR DES CHECKBOX
if(isset($_POST['creation_fournisseur']))
{
foreach ($_POST['fonction'] as $fonction)
{
echo $fonction; // ICI LA VALEUR AFFICHÉE EST LA BONNE BIEN SUR SI LES QUATRE SONT COCHES $fonction = 0123
}
// PUIS VIENS LA REQUÊTE
$SQL_INSERT_DONNEES = "INSERT INTO ".$BASE_FOURNISSEURS." (fonction) VALUES ($fonction')"; // A CE NIVEAU LA, SEUL UNE VALEUR S'ENREGISTRE - SI LA VALEUR DE TOUS LES CHECKBOX COCHÉS EST 0123 LE CHAMP NE VAUDRA QUE 3 AU LIEU DE 0123
$REQ_INSERT_DONNEES = mysql_query($SQL_INSERT_DONNEES) or die( "Impossible d'ajouter des données à la table : " .mysql_error() );
?>

Merci beaucoup pour votre aide

A bientôt !
Antho

Hors ligne

#2 14-03-2010 10:48:47

mcAllan
Mowdérateur
Lieu : Châteaurenard en Provence
Inscription : 08-05-2009
Messages : 269

Re : CHECKBOX ET INSERTION SQL

Salut,

C'est normal car à chaque passage dans la boucle $fonction se réinitialise à la valeur courante.
Tu dois concaténer les valeurs de $fonction dans une autre variable.
Avant foreach, tu initialise une variable à blanc.
par exemple $to_insert = '';
puis dans ta boucle tu y concatène la valeur de $fonction, soit :
$to_insert .= $fonction;
A la fin $to_insert aura la valeur attendue.

A+


Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop

Hors ligne

#3 14-03-2010 12:11:22

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Re : CHECKBOX ET INSERTION SQL

Bonjour

Merci beaucoup c'est exactement ce qu'il me fallait. Je comprend très bien la manipulation à faire (c'est rassurant) mais je ne savais pas l'écrire.

Un grand merci à vous pour votre réponse rapide.

A+
Antho

Hors ligne

#4 16-03-2010 13:04:14

moogli
Modérateur
Inscription : 08-05-2009
Messages : 336
Site Web

Re : CHECKBOX ET INSERTION SQL

Salut,

a essayer smile


<?php
// LA PARTIE DE RÉCUPÉRATION DE LA VALEUR DES CHECKBOX
if(isset($_POST['creation_fournisseur']))
{
$to_insert = ''
foreach ($_POST['fonction'] as $fonction)
{
//echo $fonction; // ICI LA VALEUR AFFICHÉE EST LA BONNE BIEN SUR SI LES QUATRE SONT COCHES $fonction = 0123
$to_insert .= '('.$fonction.'),';
}
//suppression de la dernière virgule
$to_insert = substr ($to_insert,0,strlen(to_insert) -1);
// PUIS VIENS LA REQUÊTE
$SQL_INSERT_DONNEES = "INSERT INTO ".$BASE_FOURNISSEURS." (fonction) VALUES ($fonction')"; // A CE NIVEAU LA, SEUL UNE VALEUR S'ENREGISTRE - SI LA VALEUR DE TOUS LES CHECKBOX COCHÉS EST 0123 LE CHAMP NE VAUDRA QUE 3 AU LIEU DE 0123
$REQ_INSERT_DONNEES = mysql_query($SQL_INSERT_DONNEES) or die( "Impossible d'ajouter des données à la table : " .mysql_error() );
?>
 

@+


Il en faut peu pour être heureux pompompompompompompompompompompom

Hors ligne

Pied de page des forums