
本文将介绍如何在提交包含复选框的表格后,隐藏之前选中的行,而无需从数据库中删除这些数据。核心思路是在数据库中添加一个布尔类型的字段,用于标记行是否已被选中并提交。通过PHP和JavaScript的配合,实现表格数据的动态显示与隐藏。
首先,需要在你的数据表(例如,示例中的 ff 表)中添加一个布尔类型的字段,用于标识该行是否已被选中并提交。 假设我们添加的字段名为 checkbox,其默认值为 0 (表示未选中)。
ALTER TABLE ff ADD COLUMN checkbox BOOLEAN DEFAULT 0;
在生成表格的 PHP 代码中,添加一个条件判断,只显示 checkbox 字段值为 0 的行。
<form action="companies.php" method="post" onsubmit='checkform()'>
<table border=2 style="width:1200px";>
<?php
// 查询数据库,获取数据
$query = "SELECT * FROM ff"; // 可以根据需要添加 WHERE 条件
$result = mysqli_query($connection, $query);
while($ff = mysqli_fetch_assoc($result)) {
if($ff['checkbox'] == 0){ // 只显示 checkbox 值为 0 的行
?>
<tr>
<td class="ttd"><input type="checkbox" value="<?php echo $ff['ID']; ?>" name="chk[]"> </td>
<td class="ttd"><?php echo htmlentities($ff['ID']); ?> </td>
<td class="ttd"><?php echo htmlentities($ff['Invoice_number']); ?>
<input type="hidden" name="Inum[<?php echo $ff['ID']; ?>]" value="<?php echo $ff['Invoice_number']; ?>"></td>
<td class="ttd"><?php echo htmlentities($ff['Invoice_date']); ?> </td>
<td class="ttd"><?php echo htmlentities($ff['Month']); ?> </td>
<td class="ttd"><?php echo htmlentities($ff['Space_name']); ?>
<input type="hidden" name="Sname[<?php echo $ff['ID']; ?>]" value="<?php echo $ff['Space_name']; ?>"></td>
<td class="ttd"><?php echo htmlentities($ff['Company_Name']); ?>
<input type="hidden" name="Cname[<?php echo $ff['ID']; ?>]" value="<?php echo $ff['Company_Name']; ?>"></td>
<td class="ttd"><?php echo htmlentities($ff['Amount']); ?>
<input type="hidden" name="amount[<?php echo $ff['ID']; ?>]" value="<?php echo $ff['Amount']; ?>"></td>
<td class="ttd" style="width:200px;"><?php echo htmlentities($x); ?>
<input type="hidden" name="iban[<?php echo $ff['ID']; ?>]" value="<?php echo $ff['Iban']; ?>"></td>
<td class="ttd"><?php echo htmlentities($ff['BIC']); ?>
<input type="hidden" name="bic[<?php echo $ff['ID']; ?>]" value="<?php echo $ff['BIC']; ?>"></td>
</tr>
<?php
} // end if
} // end while
?>
</table>
<button type="submit" name="submit" value="submit" onclick='sendit()'>submit</button>
</form>在 companies.php 文件中,当处理提交的表单数据并生成 XML 文件后,更新数据库中对应行的 checkbox 字段值为 1。 这里假设你通过 Invoice_number 来唯一标识每一行。
立即学习“PHP免费学习笔记(深入)”;
if ($_POST['submit']){
// XML 文件创建过程...
// 更新数据库
$invoice_number = $_POST['Inum'][$ff['ID']]; // 获取对应的 Invoice_number。 需要根据你的实际数据结构调整。
$query = "UPDATE ff 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");
}
}注意:
虽然主要逻辑在 PHP 端实现,但 JavaScript 代码可以用来优化用户体验。 例如,可以在提交表单前,禁用已选中的行,防止用户重复提交。
function checkform(){
// 获取所有选中的复选框
var checkboxes = document.querySelectorAll('input[name="chk[]"]:checked');
// 禁用选中的行 (可选)
checkboxes.forEach(function(checkbox) {
var row = checkbox.parentNode.parentNode; // 获取复选框所在的行
row.style.display = 'none'; // 隐藏该行,提供即时反馈
});
if (send == 1){
console.log(send);
//document.form[0].submit(); // 移除这行,让默认的 submit 行为发生
return true; // 确保表单可以提交
} else {
return false;
}
}重要提示:
通过以上步骤,你就可以实现在提交表格后,隐藏已选中的行,而无需删除数据库中的数据。 这种方法既保留了历史数据,又方便用户查看和管理未处理的条目。
以上就是如何在提交后隐藏已选中的表格行(PHP & JavaScript)的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号