
本文介绍了一种在PHP和JavaScript环境中,提交表单后隐藏已选中表格行的方法,而无需从数据库中删除数据。通过在数据库中添加一个布尔类型的字段,并在提交时更新该字段,可以实现选择行的隐藏功能。同时,在前端通过PHP条件判断来控制行的显示,从而达到预期的效果。
解决方案概述
核心思路是在数据库表中增加一个用于标记行是否已被选中的字段(例如 checkbox),默认值为 0 或 NULL。当用户提交表单后,通过 PHP 更新数据库中对应行的该字段值为 1。在生成表格时,使用 PHP 的条件语句判断该字段的值,如果为 1,则不显示该行。
数据库表结构修改
首先,需要在数据库表中添加一个布尔类型的字段,用于标识该行是否已被选中并提交。
ALTER TABLE your_table_name ADD COLUMN checkbox BOOLEAN DEFAULT 0;
将 your_table_name 替换为你的实际表名。 BOOLEAN 类型根据你的数据库系统可能需要调整,例如 MySQL 可以使用 TINYINT(1)。
前端表格的修改
在生成表格的 PHP 代码中,添加条件判断,根据 checkbox 字段的值来决定是否显示该行。
后端 PHP 处理 (companies.php)
在 companies.php 文件中,当处理完表单提交并生成 XML 文件后,更新数据库中对应行的 checkbox 字段。
Makingware社区版是基于Magento的电子商务平台。Makingware针对国内市场,对Magento进行了改进和调整,包括中文化,账户管理,支付方式,地址格式,物流支持,结账流程等等。Makingware旨在打造一个功能强大,高度灵活的企业级电子商务平台。 Makingware 社区版 1.6.5 更新说明改进:全新改造的后台界面,合并选项,调整选项位置,隐藏极少使用的选项,极大提高后
if ($_POST['submit']){
#### XML file create
####..... at the End, when all xml attribute to be created ######
// 假设 $invoice_number 是当前处理的 invoice number
$invoice_number = $_POST['Inum'][$ff['ID']]; // 从POST获取发票号码
$query = "UPDATE your_table_name SET checkbox = 1 WHERE Invoice_number = '{$invoice_number}'";
$result = mysqli_query($connection, $query);
if($result && mysqli_affected_rows($connection)>= 0){
$xml->formatOutput = true;
$xml->save('../includes/xml/'.$filename) or die('XML Create Error') ;
redirect_to("manage_content.php");
}
}注意事项:
- 确保 $connection 是有效的数据库连接。
- 将 your_table_name 替换为你的实际表名。
- 确保 $invoice_number 正确获取了当前处理行的发票号码。 根据你的实际POST数据结构调整获取方式。
- 错误处理:添加更完善的错误处理机制,例如记录错误日志。
- SQL 注入:使用预处理语句(Prepared Statements)来防止 SQL 注入攻击,特别是当 $invoice_number 来自用户输入时。
JavaScript 代码分析
提供的 JavaScript 代码主要用于控制表单提交和复制文本到剪贴板,与隐藏表格行的核心逻辑关系不大。以下是代码的简要分析:
- document.forms[0].addEventListener("submit", function(event){...}): 阻止表单的默认提交行为,除非 send 变量为 1。
- myFunction(el): 将指定元素的上一个兄弟元素(隐藏的 input 框)的内容复制到剪贴板。
- sendit(): 设置 send 变量为 1,允许表单提交。
- checkform(): 检查 send 变量是否为 1,如果是,则提交表单。
总结
通过以上步骤,就可以实现提交后隐藏表格中已选中的行的功能。核心在于数据库字段的更新和前端的条件判断显示。务必注意代码中的安全性和错误处理,并根据实际情况进行调整。









