Les cases à cocher représentent généralement les données binaires qui sont stockées dans la base de données sous forme de valeurs Oui / Non, O / N ou 1/0. Les cases à cocher HTML sont de mauvaise nature pour envoyer de la valeur au serveur uniquement si la case est cochée! Cela signifie que le script du serveur sur un autre site doit savoir à l'avance quelles sont toutes les cases à cocher possibles sur la page Web afin de pouvoir stocker des valeurs positives (cochées) ou négatives (non cochées). En fait, seules les valeurs négatives posent problème (lorsque l'utilisateur décoche la valeur précédemment (pré) vérifiée - comment le serveur peut-il le savoir lorsque rien n'est envoyé s'il ne sait pas à l'avance que ce nom doit être envoyé). Si vous avez un script côté serveur qui crée dynamiquement un script UPDATE, il y a un problème parce que vous ne savez pas ce que toutes les cases à cocher doivent être reçues afin de définir la valeur Y pour les cases cochées et N pour les cases non cochées (non reçues).
Étant donné que je stocke les valeurs «Y» et «N» dans ma base de données et les représente via des cases à cocher cochées et non cochées sur la page, j'ai ajouté un champ masqué pour chaque valeur (case à cocher) avec les valeurs «Y» et «N», puis j'utilise des cases à cocher uniquement à des fins visuelles. représentation, et utilisez la fonction JavaScript simple check () pour définir la valeur de if selon la sélection.
<input type="hidden" id="N1" name="N1" value="Y" />
<input type="checkbox"<?php if($N1==='Y') echo ' checked="checked"'; ?> onclick="check(this);" />
<label for="N1">Checkbox #1</label>
utiliser un écouteur JavaScript onclick et appeler la fonction check () pour chaque case à cocher sur ma page Web:
function check(me)
{
if(me.checked)
{
me.previousSibling.previousSibling.value='Y';
}
else
{
me.previousSibling.previousSibling.value='N';
}
}
De cette façon, les valeurs «Y» ou «N» sont toujours envoyées au script côté serveur, il sait quels sont les champs qui doivent être mis à jour et il n'est pas nécessaire de convertir la valeur checbox «on» en «Y» ou la case à cocher non reçue en «N '.
REMARQUE: un espace blanc ou une nouvelle ligne est également un frère donc ici j'ai besoin de .previousSibling.previousSibling.value. S'il n'y a pas d'espace entre alors seulement .previousSibling.value
Vous n'avez pas besoin d'ajouter explicitement l'écouteur onclick comme auparavant, vous pouvez utiliser la bibliothèque jQuery pour ajouter dynamiquement l'écouteur click avec fonction pour changer la valeur de toutes les cases à cocher de votre page:
$('input[type=checkbox]').click(function()
{
if(this.checked)
{
$(this).prev().val('Y');
}
else
{
$(this).prev().val('N');
}
});