【发布时间】:2011-06-09 20:57:54
【问题描述】:
我不确定如何解决这个困扰我几天的问题。我有一个表单可以在选中复选框时更新 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,为复选框提供一个值,该值将在用户选择它时动态更新。然后,只有那些复选框会被放入数组中。这可能吗?有更好的解决方案吗?我什至不确定我是否可以用 Javascript 来解决这个问题。答案或许在于我的mysql代码是怎么写的?
--
编辑:好的,只是更多信息。我正在进行的 SQL 查询 - 前两个是清除所有内容(以防复选框未选中),然后他们根据发布时选中的复选框更新 SQL 查询。
但是,我认为这是一种不好的方法。为什么要强制数据库首先清除 paymetreceived、paymetdate 的所有数据?这样做的问题还在于,*所有后续的复选框,无论多久之前被选中,都会像现在一样在 SQL 查询中更新。*必须有一种方法更新它更好。我只是不知道该怎么做。有什么想法吗?
【问题讨论】:
标签: php javascript mysql forms checkbox