0

假设现在取出的资料有六十笔
每一个品项都有一个,当勾了复选框后表示我要选中这个品项
稍微示意一下

<input type =“checkbox”>
<input name =“store []”>

假设勾选后我会把store []赋值
所以当后端接收时会这样

foreach($ _POST ['store'] as $ key => $ val){
    ...
}

我就会根据商店阵列里面有的东西去INSERT INTO表示你选中这些
但如果当我某一个品项不选了呢我要怎么知道?
我现在的做法是INSERT INTO之前会先将所有有关的商店清除
再重新INSERT INTO一次,就表示你最新要的就是这些

现在遇到一个问题是
资料现在可能有一百笔,于是需要做分页,分页事小
但我假设在第一页也勾了我要勾的按送出(此时正常)
但是当我到第二页勾好后送出,就会把其他页的商店资讯删除
因为上面那步骤是我INSERT INTO前会先清除所有相关商店
所以我很好奇怎么做才能解决这个问题?
解法可能是需要用比对的?那是怎么个比对法呢

asys0512 2.7k
2019-05-27 提问
1 个回答
1

已采纳

假设每页有10个选项,每个选项都有id,当用户选择完之后,你提交之前计算好选择的和未选择的id值集合 比如

checked: [1,3,5]
unchecked: [2,4,6,7,8,9,10]

然后提交到后台,遍历下这俩数组,选择的就保存到数据库,未选择的如何存在记录则删除,就搞定了。这样不需要处理未传过来的ID数据。

还有一种解决方案就是前端处理,每次翻页前把当前的数据保存到cookie或者某个变量(页面不刷新ajax翻页情况),等全选择完之后一起提交,提交之后把这个人选择记录清空,再重新保存提交过来的值。

撰写答案

推广链接