使用带数据库的输入复选框 - 第2部分

时间:2011-08-09 20:40:51

标签: php mysql input checkbox

警告:这个问题可能有点长,我提前道歉。

所以我在这里看到的最后一个问题: Using input checkboxes with a database 我问了一个问题:“如何通过复选框和数据库循环管理多个用户raid出勤”,我得到了一个在短期运行中有效的解决方案,但从长期来看却失败了。

这是运行循环的代码/允许用户选择被搜查的人:                                     检查/>                                   

当我将它添加到数据库时,我实际上使用了3个查询,如下所示:

foreach($_POST['member'] as $member)
{
    mysql_query("UPDATE attend set rAttend=(rAttend+1) WHERE UserName='$member'");
    mysql_query("INSERT INTO attend set rDate =(CURDATE()) WHERE UserName='$member'");
    mysql_query("UPDATE attend set rTotal=(rTotal+1) WHERE UserName='$member'");
}

我不能使用单个“总计”的原因是因为每个用户需要根据他们参加的突袭数量来计算总数。现在页面显示如下:

http://i.imgur.com/dwxLf.png

尽管我输入了一个日期(使用CURDATE())并选中了要检查的复选框。

以下是显示上述内容的查询的完整代码:(警告长)

    $query="SELECT rTotal FROM rAttend WHERE Username=('$v_member')";
    $total=mysql_query($query) or die(mysql_error());

    $query="SELECT * FROM rAttend WHERE UserName =('$v_member') order by UserName";
    $result=mysql_query($query);
    $num=mysql_num_rows($result);
?>
<center><h3><?php echo ($v_member)?>'s attendence record</h3></center>
<?php
$i=0;
$j=0;
while ($i < $num) {

$f1=mysql_result($result,$i,"rDate");
$f2=mysql_result($result,$i,"UserName");
$f3=mysql_result($result,$i,"rAttend");
?>

<tr>
<td><?php echo $f1; ?></td>
<td><?php echo '<a href="'.$f2.'.php">'.$f2.'</a>'; ?></td>
<?php if ($f3 == 1){
echo "<td>yes"; $j++;
}else{ echo "<td>no" ;} ?></td>
</tr>

<?php
$i++;
}
?>
<center>"Raid Attendence: "<?php echo ($j/$total)*100; ?> %</center><br />
</table>

如果有人可以帮我调试这个,我会非常感激,因为php / mysql从来都不是我最喜欢的语言。

谢谢TON !!!

编辑1:缩短发布的代码约30%。

2 个答案:

答案 0 :(得分:2)

在显示代码的第二行:

$total=mysql_query($query) or die(mysql_error());

您似乎期望$total是一个数字,但它实际上是一个资源(这是mysql_query所做的,它将资源返回到结果集)。你需要这样的东西:

$total_query = mysql_query($query) or die(mysql_error());
$total_row = mysql_fetch_array($total_query);
$total = $total_row['rTotal'];

答案 1 :(得分:1)

在过去几个小时为此工作之后,HunderThooves和我终于得到了解决方案。哈哈。