1

チェックボックスがあり、可変構造を制御できるようにしたいのですが、0は構造なし、1は構造です。また、現在の値を出力して、構造がチェックされているかどうかをユーザーが確認できるようにします。チェックボックスは「チェックされていない」値を投稿しないことに気づき、私はすでに多くのことを試しました。私の論理がどこに欠陥があるのか​​わかりません。

<input name="construction" type="checkbox" id="construction" onChange="this.form.submit();" <?php if ($row_config['construction'] == 1) { echo ' checked'; } else { echo ' unchecked'; } ?>>

<?php
if ($_POST) {
    // 0 = off
    // 1 = on
    $constr = (isset($_POST['construction']) && $_POST['construction'] == "on") ? 1 : 0; 
    mysql_query("UPDATE config SET construction = '$constr'") or die(mysql_error());
    redirect('index.php');
}
?>

ユーザーへのデータ出力に問題があると思います。

修正版、みんなありがとう!

<?php
require('framework/ui_framework.php');
page_protect();

$config = mysql_query("SELECT construction FROM config") or die(mysql_error());
$row_config = mysql_fetch_assoc($config);

$isChecked = false;
$constr = 0;
if(isset($_POST['construction'])){
    if($_POST['construction']) {
        $isChecked = true;
        $constr = 1;
        mysql_query("UPDATE config SET construction = '".$constr."'") or die(mysql_error());
    }
} else {
    $isChecked = false;
    $constr = 0;
    mysql_query("UPDATE config SET construction = '".$constr."'") or die(mysql_error());
}
?>

<input name="construction" type="checkbox" id="construction" onChange="this.form.submit();" <?php if($isChecked) echo "checked='checked'"; ?> value="on">
4

3 に答える 3

2

チェックボックスの値を設定することはないため、チェックするとロジック(isset($_POST['construction']) && $_POST['construction'] == "on")が失敗します$_POST['construction'] == "on"

チェックボックスがオンになっているかどうかを確認するだけの場合はisset()、値をチェックすることを気にせずに使用してください。

于 2012-07-30T16:39:33.727 に答える
2

チェックボックスに実際に値を指定していません。value="on"以下のPHPから判断すると、チェックボックスの属性のリストから欠落しているように見えます。また、else echo 'unchecked'チェックボックスの設定は不要です。

于 2012-07-30T16:39:42.257 に答える
1

これを試して

isset($ varname)を使用して変数をチェックする必要があります

<?php
  $isChecked = false;
  $constr = 0;
  if(isset($_POST['construction'])){
    if($_POST['construction'] == 'on'){
      $isChecked = true;
      $constr = 1;
    }      
    mysql_query("UPDATE config SET contruction = '$constr'") or die(mysql_error());

  }

?>

<!doctype html>

<html>
  <head>

  </head>

  <body>
    <form action='test3.php' method='POST'>
      <input name="construction" type="checkbox" id="construction" onChange="this.form.submit()" <?php if($isChecked) echo "checked='checked'"; ?> />
      <?php

      ?>
    </form>     
  </body>
</html>
于 2012-07-30T17:17:08.200 に答える