2010-12-03 19 views
2

J'ai cette base de données où je dois capturer beaucoup de questions oui/non, et la méthode préférée pour les utilisateurs est des cases à cocher. Tout fonctionne comme il se doit, sauf lorsqu'il s'agit de récupérer et de montrer les valeurs. cases non cochées renvoient des valeurs de « 0 »Codeigniter décoché case à cocher valeur = vide?

est-il de toute façon soit ignorer et ne pas afficher « 0 » dans les rapports ou modifier la valeur par défaut de « 0 » à blanc »

Répondre

2

cela n'a rien à voir avec CodeIgniter. :) Que pensez-vous de cela?

if($_POST['checkbox']==0) 
    $_POST['checkbox'] = ''; 
1

Il retourne 0 parce que c'est false et c'est ce que les cases à cocher renvoyées ne sont pas cochées Il suffit d'ajouter un if dans votre méthode de traitement CI qui renvoie la valeur que vous voulez si la case à cocher == 0.

Edit: Juste pour clarifier, cela n'a rien à faire avec votre CI Ce que je veux dire par là, c'est que c'est ce que le formulaire lui-même retourne - que le comportement d'une case à cocher.Pour changer la valeur va prendre une vérification rapide dans votre code CI pour changer le 0 à une valeur que vous vouliez t. Je suppose que vous accédez à la valeur quelque part pour créer votre email.

0
if(! $_POST['checkbox']) $_POST['checkbox'] = ''; 
0

Si une case n'est pas cochée, aucune donnée n'est envoyée pour celle-ci. (Si elle est cochée, l'attribut de valeur est envoyé). Tenter de lire $_POST['checkbox'] provoquera une erreur PHP (sauf si vous utilisez empty() ou isset(), qui sont des constructions de langage spécial).

this->input->post('checkbox') renverra FALSE si les données de la case à cocher ne sont pas définies, c'est-à-dire si elles n'ont pas été cochées. J'ai peur de ne pas pouvoir changer cette valeur. Si vous voulez une valeur différente, vous devrez comparer FALSE manuellement et utiliser une valeur différente. Enfin, lorsque vous soumettez FALSE à la base de données en utilisant l'API d'accès DB de CodeIgniter, il est converti en '0'. Cela fonctionnerait bien pour une colonne booléenne dans la base de données. Lorsque vous lisez une colonne booléenne, vous obtenez le code préféré de votre base de données pour TRUE, indépendamment de ce que vous avez envoyé à l'origine. (À l'exception possible de sqlite, qui est faiblement typé, un peu comme PHP est).

5
result = $this->input->post('checkbox',TRUE)==null ? 0 : 1 
1

depuis la case retour valeur nulle alors décochée, vous ne serez pas une valeur tout en affichant. Voici une solution simple et rapide pour le retour valeur non cochée de case,

<input type="hidden" name="cbox" value="0" /> 
<input type="checkbox" name="cbox" value="1" /> 
+0

C'est exactement ce que je cherchais, mais je l'ai trouvé utile de faire l'entrée cachée avec une valeur de -1 à 0 et FAUX causé des problèmes pour moi après le casting en tant que INT. – kchason