PHP勾选复选框保存DataTable选中行全量数据到TXT文件问题求助
问题根源
- 复选框未绑定对应商品ID,提交后无法识别选中的是哪一行数据
- 表单未提交商品名称、描述等字段,后端无法直接从
$_POST获取对应数据 - 后端代码存在变量名不一致问题:定义的变量是
$description_short,写入文件时误用为$short_description - 文件打开模式
w+会清空原有内容,仅保留最后一次提交的记录
修改方案
1. 修改表格部分的复选框代码
将循环输出复选框的行替换为以下代码,用数组格式命名复选框,value绑定当前商品ID,支持同时选中多个商品:
echo "<td> <input type='checkbox' name='selected_ids[]' value='{$data['id']}'> </td>";
2. 修改后端提交处理代码
提交后根据选中的商品ID,从已拉取到的$json商品数组中匹配对应完整数据,再写入文件:
<?php if (isset($_POST['submitp']) && !empty($_POST['selected_ids'])) { $content = ""; // 遍历所有选中的商品ID foreach ($_POST['selected_ids'] as $selected_id) { // 从products数组中匹配对应ID的商品数据 foreach ($json['products'] as $product) { if ($product['id'] == $selected_id) { // 拼接当前商品全量信息,加分隔符方便阅读 $content .= "product id:{$product['id']}\n"; $content .= "product name:{$product['name']}\n"; $content .= "product description:{$product['description']}\n"; $content .= "short product description:{$product['description_short']}\n"; $image_url = "http://www.website.com/{$product['id_default_image']}-home_default/{$product['link_rewrite']}.jpg"; $content .= "product image:{$image_url}\n"; $content .= "------------------------\n"; break; } } } // a+模式为追加写入保留历史记录,如需每次提交覆盖原有内容可改回w+ $file = fopen("file.txt", "a+"); fwrite($file, $content); fclose($file); } ?>
补充说明
- 若仅需要单选商品,把复选框
type='checkbox'改为type='radio',同时去掉name属性后的[]即可 - 若接口请求频率有限制,可以把拉取到的
$json数据存入session,避免每次提交都重复请求接口
内容的提问来源于stack exchange,提问作者Luigi
相关产品推荐
相关产品推荐

