javascript - 即使在刷新 HTML JQUERY PHP 后如何永久禁用提交输入按钮
问题描述
实际上,我正在制作一个待办任务表,每个任务标题旁边都有一个虚拟提交表单,只有一个提交输入按钮,当点击它时,使用 $_POST[] 方法将数据插入到数据库中。我需要的是,提交后,用户不能再次提交相同的任务,因为每个任务必须由用户完成一次。所以我需要让用户所做的任务的特定提交按钮永久禁用!在我的方法中,一旦我提交任务,按钮就会被禁用,但是在刷新/重新加载页面之后,按钮就会被单独启用。这不是我需要的……有什么值得赞赏的帮助吗?
在每个任务旁边制作提交按钮的代码(正在创建具有许多提交按钮的许多表单,我的区别在于它们的 ID =(增量 i)和 NAME =(任务 ID,以便通过 post 方法检索它) ) :
<?php
$membergroup=$_SESSION['membergroup'];
$sql="select * from taskstable where task_group_name=\"$membergroup\" ";
$result2=mysqli_query($db,$sql);[![enter image description here][1]][1]
$i=0;
while($taskstable=mysqli_fetch_array($result2))
{
$taskPoints=$taskstable['task_points'];
$taskID=$taskstable['task_id'];
print"
<tr>
<td>".$taskstable['task_title']."</td>
<td >".$taskstable['task_description']."</td>
<td style=\"text-align:center;\">".$taskstable['task_points']."</td>
<td>
<form action=$pagename method=\"post\" enctype=\"multipart/form-data\">
<input type=\"submit\" id=\"".$i."\" name =\"$taskID\" class=\"form-control\" value=\"إرسال\" style=\"background-color:#2b3062;width:85%;margin:auto;float:none;color:white;text-align:center;\">
</form>
</td>
</tr>
";
$i++;}
?>
然后,通过 post 方法检查是否有任何提交任务按钮被点击的代码。
$sql5="SELECT * from taskstable where task_group_name='$membergroup' ";
$result5=mysqli_query($db,$sql5);
while($row=mysqli_fetch_array($result5)){
$taskID2=$row['task_id'];
if(isset($_POST[$taskID2])) {
$query = "select * from taskstable where task_group_name='$membergroup' AND task_id='$taskID2'";
$result7 = mysqli_query($db,$query);
$row2=mysqli_fetch_array($result7);
$taskTitle2=$row2['task_title'];
$oneTaskPoint=$row2['task_points'];
$sql6="INSERT into tasksubmitted(member_username,task_title,task_group_name) VALUES('$uname',N'$taskTitle2','$membergroup');";
$result6=mysqli_query($db,$sql6);
if(!$result6)
echo "<script language='JavaScript'>alert('Error in the query!');</script>";
else
{
$memberPoints+=$oneTaskPoint;
$flag=true;
echo"<script language='JavaScript'>$(\"input[name='$taskID']\").prop('disabled',true)</script>";
}
}
}
解决方案
您正在保存任务已提交到数据库的事实。因此,现在您需要做的是在 PHP 中生成页面时查询相同的数据库(您的第一个代码片段)。如果任务完成,将disabled="disabled"
属性添加到提交按钮。
$title_esc = mysqli_real_escape_string($taskstable['task_title']);
$group_esc = mysqli_real_escape_string($membergroup);
$query = "SELECT * FROM tasksubmitted WHERE task_title=$title_esc AND task_group_name=$group_esc";
(注意,我不是 100% 确定你正在实现的逻辑,所以你可能需要稍微调整一下查询)
运行该查询,如果它返回某些内容,这意味着任务已经完成,您需要disabled
如上所述添加属性(或者完全跳过提交按钮)。
这种方法比本地存储更可靠,因为即使用户移动到另一台计算机或使用不同的浏览器,它也可以工作。
推荐阅读
- azure - Azure 数据工厂:从 postgresql 数据库复制数据(或数据流)
- python - 验证字符串是否是python中的有效HTML?
- java - Java中有没有办法使用json文件中的jsonpointer获取行号
- flutter - 无法在 Mac 上安装 Flutter
- bootstrap-modal - 如何控制引导向导模态最终按钮
- javascript - 取标签的内容
- sql - 使用动态表和列名加入
- jenkins - Kubernetes 集群上的 Jenkins 容器持久性 - PersistentVolumeClaim (VMware/Vsphere)
- php - PHP/MySQL - 如果查询失败,如何删除插入?
- generics - 如何使用类类型及其派生作为集合的通用键和值?