使用带有数据库的输入复选框

时间:2011-08-09 17:40:59

标签: php mysql database input checkbox

因此,我正在尝试通过为他的公会编写一个出勤跟踪器进行搜查来帮助一位朋友。现在我的概念是从用户列做一个select *,并为每个用户创建一个复选框,假设该人出现了raid,它将通过表单传递“1”,并且他们的raid出席率会增加1.在用户页面上,总体出勤率将计算为(raidAtt / raidsTotal)* 100(自加入后)。

我现在的问题是,我真的不知道如何使用单个循环传递所有这些信息......

现在我的代码是这样的:

            <form action="raidattend.php" method="post">
            <?php 

                mysql_connect("$database",$username,$password);
                @mysql_select_db($database) or die( "Unable to select database");
                $query="SELECT * FROM attend WHERE UserName = $v_member ORDER BY date desc";
                $result=mysql_query($query);

                $num=mysql_numrows($result);

                mysql_close();
                ?>
            <table>
            <tr>
            <th>Member</th>
            <th>Attended?</th>
            </tr>   
            <?php
                $i=0;
                while ($i < $num) {
                $f1=mysql_result($result,$i,"UserName");
            }
            <tr>
            <td><?php echo $f1; ?></td><td input type="checkbox" checked value="1">

这就是我遇到问题的地方。我不知道如何将每个用户和复选框的结果传递回数据库。一旦我理解了如何做到这一点就像递增一样简单,但我很遗憾。

感谢您的帮助!

编辑:为了澄清,我不确定的是如何分解它以便每个成员都得到更新,我知道我需要使用提交和所有这些。

编辑2:流浪}

2 个答案:

答案 0 :(得分:0)

表格上的

<input type=checkbox name=selected[] value='" . $f1 . "'>

on raidattend.php:

$selected=$_POST['selected'];

while (list ($key,$val) = @each ($selected)) {

    //$val will hold the username

}

答案 1 :(得分:0)

您应该更改复选框,使它们都具有相同的名称(即name =“member []”)。这样,当您提交表单时,所有已检查的成员都将在$ _POST ['member']中。然后,循环遍历$ _POST ['member']并更新你的表。

<td><?php echo $f1; ?><td> <input type="checkbox" name="member[]" value=<?php echo "'$f1'"; ?> /></td>

这应该为您提供复选框列表,其中包含参加会员的姓名。

以下是如何进行更新的快速概述:

1.浏览$ _POST ['member']并增加该人参加的金额:

 foreach($_POST['member'] as $member)
 {
    mysql_query("update table_name set attended=(attended+1) where username='$member'");
 }

2.更新参加的每个成员后,对整个表格进行更新,以增加已发生的突袭总数:

mssql_query("update table_name set total=(total+1)");