【发布时间】:2013-01-16 18:55:42
【问题描述】:
我有一个电子邮件系统,订阅者可以订阅多个列表。在订阅者编辑模式下,我有一个表格,其中列出了所有列表,其中列出了订阅者订阅的复选框。
到目前为止一切顺利:)
但是,我需要在表单提交时处理这些复选框。到目前为止,复选框代码如下所示:
<input type="checkbox" name="lists[]" value="<?= $list->id ?>" />
这会在提交时返回以下数据:
array(2) {
[0]=> string(1) "7"
[1]=> string(1) "8"
}
但这就是“困难”部分。我总是可以循环数组并将订阅者添加到这些列表中,但用户可能已经订阅了这些列表。即使未操作任何复选框,也会发送这些 ID。
我想我可以做的是获取数组中的所有可用列表,标记那些取消订阅和订阅的列表,并忽略那些没有被操纵的列表。唯一的问题是这听起来有点太复杂了。
你会怎么做?肯定有更简单的方法来做到这一点。底线是,如果订阅没有通过复选框进行操作,我不想更新它们。
【问题讨论】:
-
你不能删除所有订阅然后添加提交的订阅吗?
-
INSERT IGNORE后跟DELETE WHERE NOT IN...? -
取决于您的架构。订阅是由值(如
subscribed=1)还是仅由记录的存在来表示? -
可能是个奇怪的想法。您可以使用 javascript 或 Jquery 捕获单击或检查事件。使用隐藏字段将 id 更新为逗号分隔值,即为每个复选框操作附加 id 和逗号。基于此,您可以知道用户更改了哪些复选框。
-
“重新发送”这些标志是否重要?我不明白为什么会这样。
标签: php html mysql checkbox laravel