begin process at 2012 02 15 20:31:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

insert multiple de checkbox dans column de table mysql


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

insert multiple de checkbox dans column de table mysql

dimanche 27 juillet 2008 à 17:44:16 | insert multiple de checkbox dans column de table mysql

lassad_haddaji

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">
<input type="text">
.......
<!--------checkbox---->
<input name="checkbox[]" type="checkbox" value="1">
<input name="checkbox[]" type="checkbox" value="2">
<input name="checkbox[]" type="checkbox" value="3">
<input name="checkbox[]" type="checkbox" value="4">
......
</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

lundi 28 juillet 2008 à 09:43:27 | Re : insert multiple de checkbox dans column de table mysql

JoJo738

Membre Club
Réponse acceptée !
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">
  <p>
    <input name="checkbox[]" type="checkbox" value="1">
    <input name="checkbox[]" type="checkbox" value="2">
    <input name="checkbox[]" type="checkbox" value="3">
    <input name="checkbox[]" type="checkbox" value="4">
  </p>
  <p>
    <input type="submit" />
  </p>
</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 ^^

?>

Si ma reponse te convient, merci de l'accepter ! 
lundi 28 juillet 2008 à 13:45:59 | Re : insert multiple de checkbox dans column de table mysql

lassad_haddaji

 merci beaucoup, ça marche nickel, j'ai pas essaie avec serialize()/unserialize(), je l'essaie plus tard

lundi 28 juillet 2008 à 16:33:05 | Re : insert multiple de checkbox dans column de table mysql

JoJo738

Membre Club
Réponse acceptée !
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


Si ma reponse te convient, merci de l'accepter ! 
lundi 28 juillet 2008 à 16:40:06 | Re : insert multiple de checkbox dans column de table mysql

lassad_haddaji


est ce que tu peux nous expliquer plus la methode avec serialize() , meme un exemple cé mieux

merci
lundi 28 juillet 2008 à 16:58:38 | Re : insert multiple de checkbox dans column de table mysql

JoJo738

Membre Club
Réponse acceptée !
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
Si ma reponse te convient, merci de l'accepter ! 
mardi 19 avril 2011 à 11:13:14 | Re : insert multiple de checkbox dans column de table mysql

soniamariem



salut je besoins de trouvez une solution pour envoyer un message à partir le pc vers un telephone mobile
Bonjour


Cette discussion est classée dans : insert, table, checkbox, mysql, multiple


Répondre à ce message

Sujets en rapport avec ce message

insert multiple de checkbox dans column de table mysql [ par lassad_haddaji ] je cherche des solutions insert code ASCII dans une table mysql [ par studenttours ] bonjour,j'ai du code hexa que je transforme en texte(la fonction marche parfaitement), et lorsque j'insere le résultat dans une table mysql, il m'inse foreach $_POST INSERT MYSQL [ par Annadrill ] bonjour,bon j'ai un souci,j'ai un formulaire envoyé en post a une page php,ce que je cherche a faire c'est que n'importe quel formulaire puisse etre e Clef etrangere [ par dykafr ] Bonjour a tous!Au fait  j'ai un probleme qui me fatique depuis plus d'une semaine,et la j'ai decider de faire appel a vous.Donc il se trouve que je su Problème avec des checkbox et MySQL... [ par Rabba ] Hello!J'ai le ptit problème suivant: J'ai une page qui va lister des option sous forme de checkbox, ses informations sont prise dans une table. Le but MySQL_INSERT_ID mais pour le delete ???? [ par ripoux ] Hello,Peut-être l'aurez-vous compris dans le titre...Je cherche un moyen pour faire un delete de plusieur table relié entre elle.Pour un Insert, il ex probleme de checkbox ... [ par Alpha911 ] Bonjour j'ai un probleme avec les checkbox en effet, j'ai une base de donnée mysql ou est renfermé le champ Compte_FTP celui ci est de type tinyint(1) mysql [ par ToToL ] bonjour j'ai une table déja créé et je cherche a ajouter un champ ou a en renomer un. comment faire car la seul manip que je trouve est de supprimer Probleme recuperation de l'id d'une table pour insérer dans une autre par la methode update [ par Alpha911 ] Bonjour,Je test plusieurs methodes pour pouvoir prendre l'id d'une table qui et la recopier dans une autre table j'ai 2 tables UTILISATEUR et une autr Insert (mysql et php) [ par nino69 ] Bonjour, voici un problème un peut difficile: Je lance une requête insert pour insérer un enregistrement. Jusqu'à là pas de problème:$query4 ="INSERT


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,008 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales