获取最后选中的复选框

时间:2011-01-16 03:38:36

标签: php javascript mysql forms checkbox

我不知道如何解决这个困扰我几天的问题。我有一个表单,在选中复选框时更新MySQL中的用户记录。现在,这就是我的表单如何做到这一点:

if (isset($_POST['Update'])) {  
        $paymentr = $_POST['paymentr']; //put checkboxes array into variable
        $paymentr2 = implode(', ', $paymentr); //implode array for mysql
        $query = "UPDATE transactions SET paymentreceived=NULL";
        $result = mysql_query($query);
        $query = "UPDATE transactions SET paymentdate='0000-00-00'";
        $result = mysql_query($query);
        $query = "UPDATE transactions SET paymentreceived='Yes' WHERE id IN ($paymentr2)";
        $result = mysql_query($query);
        $query = "UPDATE transactions SET paymentdate=NOW() WHERE id IN ($paymentr2)"; 
        $result = mysql_query($query);

        foreach ($paymentr as $v) { //should collect last updated records and put them into variable for emailing. 

            $query = "SELECT id, refid, affid FROM transactions WHERE id = '$v'";

            $result = mysql_query($query) or die("Query Failed: ".mysql_errno()." - ".mysql_error()."<BR>\n$query<BR>\n");
            $trans = mysql_fetch_array($result, MYSQL_ASSOC);

            $transactions .= '<br>User ID:'.$trans['id'].' -- '.$trans['refid'].' -- '.$trans['affid'].'<br>'; 


        }


    }   

不幸的是,它然后用最新的日期更新所有用户记录,这不是我想要它做的。我想到的替代方案是,通过Javascript,给复选框一个值,当用户选择它时,该值将动态更新。然后,只有THOSE复选框将被放入数组中。这可能吗?有更好的解决方案吗?我甚至不确定我是否可以用Javascript来解决如何做到这一点。答案可能在于我的mysql代码是如何编写的?

-

编辑:好的,更多信息。我正在进行的SQL查询 - 前两个是擦除所有内容(如果复选框是UNCHECKED),然后接下来他们根据发布时检查的复选框更新SQL查询。

然而,我认为这是一个不好的方法。为什么强制数据库首先清除paymetreceived,paymetdate的所有数据?此问题的另一个问题是* 所有后续复选框,无论多长时间检查它们,都会像现在一样在SQL查询中进行更新。 *必须有办法更新它。我只是不确定如何做到这一点。任何想法?

2 个答案:

答案 0 :(得分:2)

您未在此查询中按ID过滤:

 $query = "UPDATE transactions SET paymentreceived=NULL";
 $query = "UPDATE transactions SET paymentdate='0000-00-00'";

尝试添加:WHERE id IN ($paymentr2)";

答案 1 :(得分:0)

问题在于您的前2个sql UPDATE语句。您没有提供WHERE子句,因此将更新所有记录。你可以添加:

 WHERE id IN ($paymentr2)

到你的前两个UPDATE语句