这是我的问题:我有一个带有复选框的 html 模板。当 php 脚本运行时,它会将一个值传递给复选框的“checked”属性,如下所示:
<input type="checkbox" name="form_data[show_products]" {SHOW_PRODUCTS} />
where{SHOW_PRODUCTS}
可以是'checked="true"'
或''
,具体取决于数据库列中的数据是 1 还是 0。因此,换句话说,根据从数据库传递的数据,复选框是选中还是未选中。
现在,由于这是编辑表单的模板,我需要收集“checked”属性的值并将其传递给数据库。但是,如果我取消选中在页面加载时自动选中的复选框并尝试保存更改,脚本仍会将 1 而不是 0 写入数据库。我该如何更改?
编辑
这些是处理数据的 php 部分:
else if (isset($_POST['edit']))
{
$form_data = $_POST['form_data'];
$present_id = $form_data['present_id'];
$present=new Present();
$present->load($present_id);
if (isValidForm())
{
$present->set($form_data);
$present->update();
}
else
{
$errors=$formValidator->getErrors();
$page_content_HTML=edit_form_HTML($form_data, $errors);
}
}
function set($data){
$keys=array_keys($data);
foreach($keys as $key)
{
$this->$key=$data[$key];
}
}
function update(){
global $db;
$date_from = format_datetime($this->date_from, "%Y.%m.%d. %H:%M:%S");
$date_to = format_datetime($this->date_to, "%Y.%m.%d. %H:%M:%S");
$sql="UPDATE presents SET present_name='".$this->present_name."', description='".$this->description."', present_image='".$this->present_image."', date_from='".$date_from."', date_to='".$date_to."', short_description='".$this->short_description."', show_products='".$this->show_products."' WHERE present_id='$this->present_id'";
$db->query($sql);
}