开发者

Get the last checked checkboxes

I'm not sure how to accomplish this issue which has been confusing me for a few days. I have a form that updates a user record in MySQL when a checkbox is checked. Now, this is how my form does this:

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>'; 


        }


    }   

Unfortunately, it then updates ALL the user records with the latest date which is not what I want it to do. The alternative I thought of was, via Javascript, giving the checkbox a value that would be dynamically updated when the user selected it. Then, only THOSE checkboxes would be put into the array. Is this possible? Is there a better solution? I'm not even sure I could wrap my brain around how to do that WITH Javascript. Does the answer perhaps lie in how my mysql code is written?

--

Edit: Ok, just more information. The SQL Queries 开发者_运维知识库I have going on - the first two are to wipe everything clean (in case a checkbox is UNCHECKED) and then next they are updating the SQL queries based on which checkboxes are checked upon post.

However, I'm thinking this is a bad way to do it. Why force the database to first wipe out ALL data for paymetreceived, paymetdate? The problem with this, also, is that *all the subsequent checkboxes, regardless of how long ago they were checked, get updated in the SQL query as it is now.*There's got to be a way to update it better. I'm just not sure HOW to do it. any ideas?


You are not filtering by id in this queries:

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

Try adding: WHERE id IN ($paymentr2)";


The problem is in your first 2 sql UPDATE statements. You don't provide a WHERE clause, so that's going to update all your records. You could add:

 WHERE id IN ($paymentr2)

to your first two UPDATE statements

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜