警告:这个问题可能有点长,我提前道歉。
所以我在这里看到的最后一个问题: 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%。
答案 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和我终于得到了解决方案。哈哈。