2014-04-12 53 views
1

我有一個設置頁面作爲我的遊戲類的一部分,其中一個設置字段是複選框。問題與數據庫中的複選框值...?

這是我的複選框HTML場:

<div class="field"> 
    <label for="allow_robot_name">Allow Robot Name?</label> 
    <input type="checkbox" name="allow_robot_name" <?php if ($r->allow_robot_name == 1) { echo "checked"; } ?>>Yes 
</div> 

我遇到的問題是,當用戶檢查複選框,在數據庫中變爲1的值。但是,如果他們然後取消選中它,然後更新複選框重置數據庫來檢查和值不會從1到0

這是我更新數據庫更改代碼:

<?php 
$records = array(); 


if (!empty($_POST)) { 
    if (isset($_POST['site_name'], $_POST['header_text'], $_POST['footer_copyright'], $_POST['default_robot_name'])) { 

$site_name   = $_POST['site_name']; 
$header_text  = $_POST['header_text']; 
$footer_copyright = $_POST['footer_copyright']; 
$default_robot_name = $_POST['default_robot_name']; 

if (isset($_POST['allow_robot_name'])) { 
    $allow_robot_name = 1; 
} else { 
    $allow_robot_name = 0; 
} 

if (!empty($site_name) && !empty($header_text) && !empty($footer_copyright) && !empty($allow_robot_name) && !empty($default_robot_name)) { 
$update = $db->prepare("UPDATE user_settings set site_name = ?, header_text = ?, footer_copyright = ?, allow_robot_name = ?, default_robot_name = ?"); 
$update->bind_param('sssis', $site_name, $header_text, $footer_copyright, $allow_robot_name, $default_robot_name); 


if ($update->execute()) { 
    header('Location: index.php'); 
    die(); 
    } 
    } 
} 
} 

爲什麼沒有按」 t複選框值更新?

回答

1

這是由於!empty($allow_robot_name)

empty($x)表示!isset($x) || $x == null。由於0被認爲等同於PHP中的null,因此如果複選框處於未選中狀態,並且未執行更新查詢,則empty($allow_robot_name)將評估爲true