首页 > 解决方案 > 即使在刷新 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>";
         }


}

}

标签: javascriptphpjqueryhtml

解决方案


您正在保存任务已提交到数据库的事实。因此,现在您需要做的是在 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如上所述添加属性(或者完全跳过提交按钮)。

这种方法比本地存储更可靠,因为即使用户移动到另一台计算机或使用不同的浏览器,它也可以工作。


推荐阅读