2013-06-19 102 views
0

由于标题显示我遇到了如何更新已在我的SQL数据库中有数据的复选框的问题。使用PHP更新SQL数据库中的复选框数据

我的代码看起来像以下:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
Name <input type"text" name="inputName" value="<?php echo $hemsida['Namn']; ?>" /> </br> 
Commentar <input type"text" name="inputComment" value="<?php echo $hemsida['Comment']; ?>" /> 
<br/> 
</br><input type="checkbox" name="inputAll" value="checked" <?php echo $hemsida['All']; ?>/>Alla 
<input type="hidden" name="id" value="<?php echo $_GET['id']; ?>" /> 
<input type="submit" name="submit" value="Redigera"> 

<?php 

if(isset($_POST['submit'])) { 
    $u = "UPDATE hemsida SET `Namn`='$_POST[inputName]', `Comment`='$_POST[inputComment]', `ALL`='$_POST[inputALL]' WHERE ID = $_POST[id]"; 
    mysql_query($u) or die(mysql_error()); 

    echo "User has been modified"; 
    header("Location: ..//sokh.php"); 
} 
?> 

回声$ hemsida [ 'NAMN'],[ '评论']和[ '所有']只是带来了和显示数据库中的旧数据,但我不明白如何更新复选框。我到处都找,但我卡住了。先谢谢你!

+0

部分消失,问题是在第二个PHP部分(即刚回来)拿起表格。我可以看到它仍然是一个不清楚的问题。这是我在Stack Overflow中的第一个问题。 ALL ='$ _ POST [inputALL]'是根本不接收任何数据的东西。不知道如何使它工作。尽管谢谢你的快速回应! <?php echo $ hemsida ['All']; ?>是“检查”,所以当它进入“修改器”或我应该调用它时,一切都有效。问题在于恢复。 –

+0

我更新我的答案看,如果这是你想要的 – medBo

回答

0

你的问题不清楚,但我认为你有一个名为“所有”的数据库中的列?也许这个专栏只能取1个值(真或假)!

那么您可以在您的形式测试此值,如果值是true:复选框将被勾选,否则:复选框将不检查:

<input type="checkbox" name="inputAll" checked="<?php if($hemsida['All'] == true) echo checked; ?>" />Alla 

不使用值=“”,利用检查,而不是,然后测试$ hemsida ['All']的值,如果它是真的回显检查其他任何事情

为您的PHP代码和服务器端的应用程序,你可以测试如果复选框被选中,然后你有选择什么是否要在数据库中分配您的列,例如,如果选中了复选框,请创建一个变量(例如$ value_of_checkbox)并将值(“true” exampel)这个变量,然后包括用于更新数据库列在您的SQL代码这个变量:

if (isset($_POST['inputALL'])) { 
     $value_of_checkbox = true; 
    } 
    else { 
     $value_of_checkbox = false; 
    } 

    if(isset($_POST['submit'])) { 
     $u = "UPDATE hemsida SET `Namn`='$_POST[inputName]', `Comment`='$_POST[inputComment]', `ALL`='$value_of_checkbox' WHERE ID = $_POST[id]"; 

    mysql_query($u) or die(mysql_error()); 

    echo "User has been modified"; 
    header("Location: ..//sokh.php") 

:我也改变SQL代码在此部分:ALL='$value_of_checkbox'

+0

代码的一部分消失了,问题出现在第二个PHP部分(刚刚回来),拿起表单。我可以看到它仍然是一个不清楚的问题。这是我在Stack Overflow中的第一个问题。 ALL ='$ _ POST [inputALL]'是根本不接收任何数据的东西。不知道如何使它工作。尽管谢谢你的快速回应! <?php echo $ hemsida ['All']; ?>是“检查”,所以当它进入“修改器”或我应该调用它时,一切都有效。问题在于恢复。 –

+0

你在你的数据库表中有一个名为“ALL”的列,我是对的?你有一个名为inputAll的复选框吧?当你发送你的表单时,如果选中此复选框 - > $ _POST ['inputALL'] exists,if not checked ---> $ _POST ['inputALL']不存在,我告诉你用if(isset $ _POST ['inputALL']))这意味着如果你的复选框被选中,那么我创建一个变量并赋值为true,否则我赋值为false,最后我将这个变量传递给sql代码:ALL = $ variable而不是ALL = “$ _POST [inputALL] – medBo

0

如果我正确理解你的问题,您正在寻找一种方法来根据数据库信息选中或不选中复选框。如果是这样,我会尝试这样的事情。在你的代码,你得到你的数据库信息的顶部,把

if($conditionForCheck){ 
    $inputAll = ' checked="checked"'; 
} 

然后在你的表单代码的

<input type="checkbox" name="inputAll"<?php echo $inputAll; ?> /> 
+0

代码的一部分消失了,问题出现在第二个PHP部分(刚刚回来)中,它接受了Form,我可以看到它仍然是一个不清楚的问题。我的生活在堆栈溢出中,'ALL' ='$ _ POST [inputALL]'是根本没有接收任何数据的东西,不知道如何使它工作,谢谢你的快速响应! <?php echo $ hemsida ['All'];?>是“checked”,所以当它进入到“Modifier”或者我应该调用它的时候,所有东西都能正常工作。 –