Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : insert multiple de checkbox dans column de table mysql [ Base de données / MySQL ] (lassad_haddaji)

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 ! 



Cette discussion est classé 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...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,468 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.