|
Trouver une ressource
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)
Informations & options pour cette discussion
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
|
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
|
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
|
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
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|