从表中的数据库中选取复选框并使用PHP将其更新回来
我从数据库中选取了数据,并将其排列在表中。表中还包含一个复选框,如果为1,则为true,如果为0,则为false。程序应根据复选框功能更新数据库从表中的数据库中选取复选框并使用PHP将其更新回来,php,mysql,Php,Mysql,我从数据库中选取了数据,并将其排列在表中。表中还包含一个复选框,如果为1,则为true,如果为0,则为false。程序应根据复选框功能更新数据库 <?php $query1="SELECT * FROM notices;"; $result1=mysql_query($query1,$conn); $num_rows=mysql_num_rows($result1); $pick
<?php
$query1="SELECT * FROM notices;";
$result1=mysql_query($query1,$conn);
$num_rows=mysql_num_rows($result1);
$pick=array();
if($num_rows>0)
{
while ( ($row=mysql_fetch_array($result1)) != null)
{
$pick=$row['sl'];
?>
<tr class="trc">
<td align="left"><label class="lab1"><?php echo($row['notice']); ?></label></td>
<td align="center"><label class="lab1"><?php echo($row['date']); ?></label></td>
<td align="center"><input type="checkbox" name="notice_id[]" value="YES" <?php
if($row['active']==1)
{
echo("checked");
}
?> /></td>
</tr>
<?php
}
}
?>
下面是将数据更新回dabase的代码
if(isset($_POST['up_note'])==true)
{
$n_ids = $_POST['notice_id'];
$sl_no = 1;
foreach($n_ids as $key => $id)
{
echo($n_ids." | ".$id." | ".$key."<br />");
$cb = ($POST['notice_id[$id]'] == 'YES')?'1':'0';
if($cb==1)
{
$query3 = "UPDATE notices SET active = 1 WHERE sl='$sl_no';";
$result3 = mysql_query($query3, $conn);
echo("entered");
}
else
{
$query3 = "UPDATE notices SET active = 0 WHERE sl='$sl_no';";
$result3 = mysql_query($query3, $conn);
echo("not entered");
}
$sl_no = $sl_no + 1;
}
}
if(isset($\u POST['up\u note'])==true)
{
$n_id=$_POST['notice_id'];
$sl_no=1;
foreach($key=>$id的n_id)
{
echo($n_id.“|”。$id.“|”。$key.“
”);
$cb=($POST['notice_id[$id]']='YES')?'1':'0';
如果($cb==1)
{
$query3=“更新通知集活动=1,其中sl='$sl_no';”;
$result3=mysql\u查询($query3,$conn);
回音(“输入”);
}
其他的
{
$query3=“更新通知集活动=0,其中sl='$sl_no';”;
$result3=mysql\u查询($query3,$conn);
回声(“未输入”);
}
$sl_no=$sl_no+1;
}
}
你确定这一行吗
$cb = ($POST['notice_id[$id]'] == 'YES')?'1':'0';
我想是有意的
$cb = ($_POST['notice_id[$id]'] == 'YES')?'1':'0';
并将单引号替换为双引号
$cb = ($_POST["notice_id[$id]"] == 'YES')?'1':'0';
那么,你的问题是什么?代码不起作用。它没有将更新后的数据保存回数据库。您是否得到任何输入或未输入的数据,并尝试回显mysql错误。在上面我获取数据的部分是OK的。它正在获取所有三条记录。但在我试图将更新的数据保存到数据库的下面,它只是显示“未输入”。这是一个错误(可能是其中之一),但仍然不起作用。它仍然是not enter子句。如果您在单引号内给出php变量,该变量将被视为字符串,这可能就是我在上面更改代码的原因。感谢您的时间,但它没有解决问题。$query3=“UPDATE notices SET active=1,其中sl=“$id”;”;我正在使用上述查询。你的循环运行良好。现在的问题是,我不知道在sl=?????????检查编辑的代码复选框的值是您在提交时收到的sl_编号,并更新相应的recordOH BOY!它正在工作,正在保存未选中的复选框,请同时解决else条件,如果未选中,则应替换active=0。谢谢您的时间!我对您(当然是您的)的上述代码做了一些更改$query\u all=“UPDATE notices SET active=0”$result\u all=mysql\u query($query\u all,$conn);我已经把上面的两个命令放在了isset上面($\u POST['up\u note'])下面,这是一个问题。再次感谢你!!!
<?php
$query1="SELECT * FROM notices;";
$result1=mysql_query($query1,$conn);
$num_rows=mysql_num_rows($result1);
$pick=array();
if($num_rows>0)
{
while ( ($row=mysql_fetch_array($result1)) != null)
{
$pick=$row['sl'];
?>
<tr class="trc">
<td align="left"><label class="lab1"><?php echo($row['notice']); ?></label></td>
<td align="center"><label class="lab1"><?php echo($row['date']); ?></label></td>
<td align="center"><input type="checkbox" name="notice_id[]" value="<?php echo $pick; ?>" <?php if($row['active']==1){ echo("checked"); } ?> /></td>
</tr>
<?php
}
}
?>
/////////////////////////////////////
if(isset($_POST['up_note'])==true)
{
if(!empty($_POST['notice_id'])){
$n_ids = $_POST['notice_id'];
$query_all = "UPDATE notices SET active = 0";
$result_all = mysql_query($query_all, $conn);
foreach($n_ids as $key => $id){
$sl_no = $n_ids[$key];
$query3 = "UPDATE notices SET active = 1 WHERE sl=$sl_no;";
$result3 = mysql_query($query3, $conn);
echo("entered");
}
} else {
$query_all = "UPDATE notices SET active = 0";
$result_all = mysql_query($query_all, $conn);
}
}