0

非常に紛らわしい問題に遭遇しました。チェックボックスが1つあるフォームがあります。チェックボックスがオンになっているかどうかにかかわらず、フォームに 1 または 0 の値を適用する必要があります。

<input type="checkbox" name="admin">

次に、PHP、次のようなもの:

$update_data['admin'] = isset($_POST['admin']) ? '1' : '0';

チェックを入れると動作します。「オフ」状態にする方法がわかりません。

4

6 に答える 6

1

チェックボックスが値なしで送信された場合、$_POST['admin'] から取得された場合、その値は 'on' です。あなたもできると思います

$update_data['admin'] = ($_POST['admin'] === 'on') ? '1' : '0';
于 2013-02-20T05:56:36.243 に答える
1

PHPコードを変更する必要があります

$update_data['admin'] = empty($_POST['admin']) ? '0' : '1';

isset() は、値が設定されているかどうか、つまり Null かどうかのみをチェックします。あなたの場合、それはゼロに設定されています

一方、両方の値が null に設定されていることを確認し、いずれかが true の場合は値がゼロであることを確認し、 true を返します。

そしてHTMLで

<input type='checkbox' value ='1' name='admim'>
于 2013-02-20T05:53:31.427 に答える
0

それは私と一緒に働くようです、ここに私のサンプルコードがあります:

<form action="" method="POST">
    <input type="checkbox" name="admin">
    <input type="submit">
</form>
<?php 
    $check = isset($_POST['admin']) ? '1' : '0';
    echo $check;
    var_dump($check);
?>

チェックボックスをオンにすると 1 文字列 (1) "1" が生成され、オフの場合は 0 文字列 (1) "0" が生成されます。

于 2013-02-20T05:59:05.297 に答える
0

すべてが意図したとおりに機能するはずです:)

for が送信されたことを確認するためだけに:

管理者

チェックボックスがオフの場合、値 (およびそのキー) はクエリ文字列に渡されません。

だから、チェック

If (isset($_POST['submit'])){
  $update_data['admin'] = isset($_POST['admin']) ;
  //actions if form has been submitted.
}
于 2013-02-20T05:57:17.947 に答える
0

別の投稿で答えを見つけました。と:

$update_data['admin'] = ($_POST['admin'] == 1) ? '1' : '0';
于 2013-02-20T06:25:17.470 に答える
0

何かが定義されているかどうかを確認することはisset、その値を取得することとは異なります。これを試して:

 <input type="checkbox" name="admin" value="checked_or_whatever_value_you_like">
 if(isset($_POST['admin'])){
     $update_data['admin'] = $_POST['admin'] == 'checked_or_whatever_value_you_like' ? '1' : '0';
 }
于 2013-02-20T05:51:41.910 に答える