2010-08-01 5 views
1

Comme le dit la question, j'essaie d'insérer une ou plusieurs cases dans un champ de base de données, de préférence dans un format délimité par des virgules.Insérer plusieurs cases à cocher dans un champ de base de données

Donc, si l'utilisateur choisit de cocher une case et case à cocher deux, l'entrée dans la base de données sera inséré comme tickOne, tickTwo, etc etc

Comment pourrais-je aller sur le faire? Peut-être que vous utilisez jQuery ou Javascript?

Merci d'avance!

+3

1) Pas assez de détails. 2) La dénormalisation comme celle-ci est mauvaise, ne le faites pas. – RedFilter

+2

@RedFilter - Si les valeurs ne sont que pour l'affichage de l'interface utilisateur, la dénormalisation ne peut pas être mauvaise, elle peut être beaucoup plus efficace ... vous ne pouvez pas dire que c'est mauvais, vous avez besoin de plus d'informations pour prendre cette décision, par ex. sera-t-il jamais questionné? –

+0

@RedFilter, et si c'est un simple CRM qu'il construit, c'est un gestionnaire de formulaire de contact. La dénormalisation n'est pas toujours une mauvaise chose. –

Répondre

2

Si vous voulez transmettre les valeurs comme une chaîne, par exemple délimité par des virgules comme vous l'avez mentionné dans jquery vous pouvez définir la valeur à l'aide .map(), comme ceci:

$(".mySelector:checkbox").change(function() { 
    var values = $(".mySelector:checkbox:checked").map(function() { 
       return this.value; 
       }).get().join(', '); 
    $("#myHiddenInput").val(values); 
}); 

Chaque fois qu'une case à cocher change, il va refaire la partie chaîne, re-sérialiser le résultat, donc sur la publication, il devrait être la sélection actuelle de l'interface utilisateur. .map() obtient un tableau des valeurs des éléments :checked avec votre classe mySelector, puis nous faisons juste un .join() pour convertir ce tableau en une chaîne et en utilisant .val() pour définir l'entrée cachée pour cela à cette chaîne.

Cela suppose un balisage comme ceci:

<input type="checkbox" class="mySelector" value="tickOne" /> 
<input type="checkbox" class="mySelector" value="tickTwo" /> 
.... 
<input type="hidden" id="myHiddenInput" /> 

You can give it a try here

+0

donc je devrais créer un champ de saisie caché et puis une fois que l'utilisateur a sélectionné les cases à cocher, ils seront affectés à la valeur des champs d'entrée cachés? – Odyss3us

+0

@kielie - Ouais, si vous voulez le faire côté client quelque chose comme ça ... J'ai ajouté un balisage de démonstration/exemple pour mieux l'illustrer :) –

+0

Thanx un million! ;) – Odyss3us

Questions connexes