Insert multiple de checkbox dans column de table mysql

Résolu
lassad_haddaji Messages postés 141 Date d'inscription mardi 24 avril 2007 Statut Membre Dernière intervention 6 avril 2012 - 27 juil. 2008 à 17:44
soniamariem Messages postés 3 Date d'inscription lundi 18 avril 2011 Statut Membre Dernière intervention 26 avril 2011 - 19 avril 2011 à 11:13
salut tt le monde,
mon probleme est que je veux inserer des champs de checkbox dans une seule solumn de tabe mysql
1)fichier formulaire.html
<form action="insert.php" methode="post">

.......
<!--------checkbox---->

......
</form>

2) fichier insert.php

<?php
include('connection.php');

for ($i=0;$i<count($_post['checkbox']);$i++)
{
$sql="insert into $table values (..,...,...,'".$_POST['checkbox'][$i]."') ";
mysql_query($sql);


}

mysql_close();

?>

l'erreur que dans la table fais l'ajout de multiligne si je coche 3 checkbox fais lajout de 3 ligne

est ce que possible de mettre l'ensemble de checkbox dans un table array()??? jai essai cette methode mais jai ambigu
j'attend vos reponse.
merci
A voir également:

6 réponses

JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
28 juil. 2008 à 09:43
Hello.

Dans ton cas, tu fais une boucle pour enregistrer chaque checkbox coché. Donc N checkbox coché = N insertions dans la table

Non, il est impossible de stocker un Array dans SQL ... enfin, directement.
Heureusement, il existe les fonctions magiques serialize() et unserialize() (voir explode() et implode() pour certains cas)

serialize() va transformer un Array en une chaine String.
unserialize() va faire l'inverse : une chaine String vers un Array

Donc prennons le formulaire suivant :
<form action="insert.php" methode="post">
 
   
   
   
   
 

 
   
 

</form>

Et avec explode()/implode()
<?php


if( isset($_POST['checkbox']) && is_array($_POST['checkbox']) )

{

    // POST['checkbox'] existe et est un array.

    $return_checkbox = implode(',', $POST['checkbox']);

    // On obtient ici : "1,2,3,4"


    // Dans ce cas là, pour faire des vérifications il faut mettre des
filtres (array_filter par exemple) ou faire une bouche (foreach) et
faire une vérificationn à l'intérieur (ici, on ajoute soit tout de
suite la valeur au $_return_checkbox soit on crée un nouveau array (ou
on supprime la valeur actuelle) et on fait l'implode.
    // Et ne pas oublier le séparateur !

    mysql_query('[...] "' . $return_checkbox . '" [...]') or die(mysql_error());
}

// La lecture se fat normalement, mais on utilise explode('séparateur', 'row["champ_array"]') (ou split si on à plusieurs séparateurs) pour transformer en array


?>

Et avec serialize()/unserialize()
<?php


if( isset($_POST['checkbox']) && is_array($_POST['checkbox']) )

{

    // POST['checkbox'] existe et est un array.

    $return_checkbox = serialize(',', $POST['checkbox']);

    // On obtient ici : "a:4:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;}"


    // Dans ce cas là, pour faire des vérifications il faut mettre des
filtres (array_filter par exemple) ou faire une bouche (foreach) et
faire une vérificationn à l'intérieur (ici, on ajoute soit tout de
suite la valeur au $_return_checkbox soit on crée un nouveau array (ou
on supprime la valeur actuelle) et on fait le serialize().

    mysql_query('[...] "' . $return_checkbox . '" [...]') or die(mysql_error());
}

// Idem, lecture en passant par unserialize(). Ici besoin d'aucun séparateurs, la fonction gérant tout toute seule ^^


?>
<hr />Si ma reponse te convient, merci de l'accepter ! 
3
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
28 juil. 2008 à 16:33
Re ^^

Euh, après tout dépend de ton cas.
Si tu n'enregistreras que des valeurs numériques ou "simple" : 1, 2, 3, 4, a, b, c, d, mot ... je conseil l'explode/implode.
Mais si tu dois stoquer des valeurs un peu plus complxes (objets, array, descriptif, ...) le (un)serialize() est ton ami

<hr />Si ma reponse te convient, merci de l'accepter ! 
3
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
28 juil. 2008 à 16:58
re,

Euh, serialize() te permet de convertir un array/object en string.
C'est un peu la même méthode qu'avec explode()/implode(). Dans la méthode E/I on à un array, puis après le passage à l'implode(',', $array); on obtient une chaine de caractère ("1,2,3,4"). Ensuite, à la lecture l'explode(',', $row); permet de récupérer l'array.
Malheureusement cette méthode à des limites (pas d'Array multi-dim, d'object, ...).

Donc, si on prend cet exemple :

$array = array(1, 2, 3, 4); // Par exemple ton _POST['checkbox']

echo serialize($array);
// " a:4:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;} "
// (en gras tu peux voir les valeurs i:Int, s:String, o:Object, a:Array, ...

print_r(unserialize('a:4:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;}'));
// -> unserialise($row['champ_sql']);
// Array(1, 2, 3, 4)

L'avantage, c'est qu'il n'y a pas besoin de séparateurs (donc pas besoin de te tracasser pour savoir si tel ou tel caractère peut être utilisé) et tu peux enregistrer absolument toutes les informations ! Mais ça prend plus de place, et c'est plus gourmand en ressources ...

Ah oui, pour faire une recherche, puisque ce sont des méthodes trafiquées ... il faut jouer sur les regex/LIKE pour utiliser la clause WHERE<hr />Si ma reponse te convient, merci de l'accepter ! 
3
lassad_haddaji Messages postés 141 Date d'inscription mardi 24 avril 2007 Statut Membre Dernière intervention 6 avril 2012
28 juil. 2008 à 13:45
 merci beaucoup, ça marche nickel, j'ai pas essaie avec serialize()/unserialize(), je l'essaie plus tard
0

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

Posez votre question
lassad_haddaji Messages postés 141 Date d'inscription mardi 24 avril 2007 Statut Membre Dernière intervention 6 avril 2012
28 juil. 2008 à 16:40
est ce que tu peux nous expliquer plus la methode avec serialize() , meme un exemple cé mieux

merci
0
soniamariem Messages postés 3 Date d'inscription lundi 18 avril 2011 Statut Membre Dernière intervention 26 avril 2011
19 avril 2011 à 11:13
salut je besoins de trouvez une solution pour envoyer un message à partir le pc vers un telephone mobile
Bonjour
0
Rejoignez-nous