我已经更新了我的代码。除非我一次选择更多选择框,否则它正在工作。如果我同时选择2个选择框并且我更新它们,数据库将它们都更新为0.当我单独更新它们时,一切都很顺利。
现在这个代码:
<?php
include "header.php";
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(isset($_POST['aan']))
{
$doSave = implode(',',$_POST['aan']);
mysql_query("UPDATE Modules SET
aan = '".mysql_real_escape_string('1')."'
WHERE module_name IN ('".mysql_real_escape_string($doSave)."')") or die (mysql_error());
mysql_query("UPDATE Modules SET
aan = '".mysql_real_escape_string('0')."'
WHERE module_name NOT IN ('".mysql_real_escape_string($doSave)."')") or die (mysql_error());
}
elseif(!isset($_POST['aan']))
{
mysql_query("UPDATE Modules SET
aan = '".mysql_real_escape_string('0')."'
WHERE module_name NOT IN ('".mysql_real_escape_string($doSave)."')") or die (mysql_error());
}
echo $doSave;
}
echo "<h1>Module beheer</h1>";
$getmodules = mysql_query("SELECT * FROM Modules") or die(mysql_error());
echo "<form id='module' method='post'>";
while($modules = mysql_fetch_array($getmodules))
{
echo "<label>".$modules['module_name']."</label>";
echo "<input type='hidden' name='module_name' value='".$modules['module_name']."' />";
if($modules['aan'] == 1)
{
$set_checked = "CHECKED";
}
else
{
$set_checked = "";
}
echo "<input type='checkbox' name='aan[]' value=".$modules['module_name']." ".$set_checked." /><br />";
}
echo "<input type='submit' id='modulesubmit' name='modulesubmit' value='Opslaan'>";
echo "</form>";
include "footer.php";
?>
答案 0 :(得分:0)
请开始使用PDO访问数据库! mysql_ *函数已弃用,不再维护!
status
是MySQL中保留的关键字;使用它作为列名称不是很聪明。您可以通过使用backtiks避免将其用作关键字。但为了避免混淆,我会采取另一个列名称。让我们说:aan
。
让我们稍微清理你的代码。
你有很多行做同样的'逻辑';每当你在代码中多次写东西时,就会出现问题。当statu字段本身已经在模块行中时,为什么要单独查询状态?
那么同样适用于更新声明?您只想将状态字段更新为1 | 0。
if($_POST){
if(intval($_POST['aan']) == 1 || intval($_POST['aan']) == 0){
$aan = intval($_POST['aan']);
}else{
$aan = 0; //what if it's not 1|0
}
mysql_query("UPDATE Modules SET
aan = '".mysql_real_escape_string($aan)."'
WHERE module_name = '".mysql_real_escape_string($_POST['module_name'])."'") or die (mysql_error());
)
echo "<h1>Module beheer</h1>";
$getmodules = mysql_query("SELECT * FROM Modules") or die(mysql_error());
echo "<form id='module' method='post' action='*****add action parameter*****'>";
while($m = mysql_fetch_array($getmodules)){
{
echo "<label name='module_name'>".$m['module_name']."</label>";
echo "<input type='checkbox' name='aan' value='".$m['aan']."'>";
}
echo "<input type='submit' id='modulesubmit' name='modulesubmit' value='Opslaan'>";
echo "</form>";
答案 1 :(得分:-1)
您在提交表单时尝试访问标签值,无法按照您的定义访问标签值。 您必须将代码更改为:
mysql_query("UPDATE Modules SET
Status = '".mysql_real_escape_string('1')."'
WHERE module_name = '".mysql_real_escape_string($_POST['uitgeschakeld'])."'") or die (mysql_error());
echo'bhal';
并在以下行中进行更改 -
**echo "<input type='checkbox' id='ingeschakeld' name='ingeschakeld' value='.$fetchmodules['module_name'].' checked></br>";**