2010-12-03 15 views
2

私は多くのイエス/ノーの質問をキャプチャしなければならないこのデータベースを持っており、ユーザーに推奨される方法はチェックボックスです。それは、値を表示して表示する場合を除いて、すべてが正常に動作しています。未チェックボックスが「0」の値を返すCodeigniterのチェックボックスをオフにすると、値は空白になりますか?

はそれがあるので、それは0を返して無視していないレポートに「0」を表示または空白に「0」からデフォルト値を変更する」

答えて

2

これはCodeIgniterとは関係ありません。 :) これはいかがですか?

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

のいずれかにとにかくありチェックボックスがチェックされていない場合にチェックボックスが返されます。チェックボックスの値が== 0の場合、必要な値を返すCI処理メソッドでifを追加するだけです。

編集:これは何もないあなたのCIで行うこと。私が意味するのは、0が返されることはフォーム自体が返すものであることです。つまり、チェックボックスの動作です。値を変更するには、CIコードを素早くチェックして0をあなたが望む価値t。私はあなたの電子メールを作成するためにどこかの値にアクセスしていると仮定します。

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

チェックボックスがオフの場合、データは送信されません。 (チェックされている場合は、value属性が送信されます)。 $_POST['checkbox']を読み込もうとすると、特別な言語構成であるempty()またはisset()を使用しない限り、PHPエラーが発生します。

this->input->post('checkbox')は、チェックボックスデータが設定されていない場合、つまりチェックされていない場合は、FALSEを返します。その値を変更する方法はありません。恐れがあります。別の値が必要な場合は、FALSEを手動で比較し、別の値を使用する必要があります。

最後に、CodeIgniterのDBアクセスAPIを使用してFALSEをデータベースに送信すると、その値は「0」に変換されます。これは、データベースのブール値の列に対してはうまくいくでしょう。ブール値の列を読み出すと、最初に送信したものに関係なく、TRUEのデータベースの優先コードが取得されます。 (sqliteの弱い型がある例外として、PHPのようなものがあります)。未確認掲示ながら、あなたが値を取得することはありませんしながら、null値を返すチェックボックス以来

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

。ここで私が探していたものをチェックボックスから未確認の値を返すためのシンプルな迅速な解決、

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

これは正確ではあるが、私はそれが参考に0とFALSEとして-1の値を持つ非表示の入力を行うことが判明しましたINTとしてキャスティングした後に私に問題を引き起こしました。 – kchason

関連する問題