首页 > 解决方案 > 如果执行某些 php 脚本,则刷新页面

问题描述

我有一个somefile.phpsomeotherfile.js,代码如下

javascript file
function deleteSelectedRow() {
  return (confirm('Are you sure you want to delete this record)) 
      };
<!DOCTYPE html>

<html lang=" en">

<head>
  <title> Title </title>
</head>

<body>
  <h1>Select the user to delete from the list below </h1>

  <form action="" method="POST">
    <?php
            if(require_once('../SQL/mySQL_connect.php'))
            {                
                $query = "SELECT id, FirstName, LastName, PhoneNumber FROM participants ORDER BY id ASC";
                $userDetails = @mysqli_query($mysqli, $query);
            }
            else
            {
                echo "Couldn't connect to database";
                echo mysqli_error($mysqli);
            }    
           // mysqli_close($mysqli);
            
        ?>
      <br><br><br>


      <table name="userDetailsTable" id="userDetailsTable" align="left" cellspacing="7" cellpadding="8">
        <tr>
          <td align="center"><b>S No</b></td>
          <td align="center"><b>Id</b></td>
          <td align="center"><b>Rank</b></td>
          <td align="center"><b>First Name</b></td>
          <td align="center"><b>Last Name</b></td>
        </tr>
        <?php
                for($i = 1; $i <= mysqli_num_rows($userDetails); $i++)
                // while($row=mysqli_fetch_array($userDetails))
                {
                    $row=mysqli_fetch_array($userDetails);
                    echo '<tr>
                    <td align ="center" >'. $i .'</td>
                    <td align ="center" >' . $row['id'] . '</td>
                    <td align ="center">' . $row['Rank'] . '</td>
                    <td align ="center">' . $row['FirstName'] . '</td>
                    <td align ="center">' . $row['LastName'] . '</td>    
                    <td align ="center"> <input type = submit name="delete" value="delete" onclick="return deleteSelectedRow();" ></input></td>';
                    echo '</tr>';
                }
            ?>
      </table>
  </form>

  <?php
       
        if(isset($_POST['delete']))
        {
            require_once('../SQL/mySQL_connect.php');
            $query="DELETE FROM `participants` WHERE `participants`.`id` = ".$_POST['IDNumber']."";
            $response = @mysqli_query($mysqli, $query);
            if($response)
            {
                echo "Deleted from Database Successfully";
            }
            else
            {
                echo "Couldn't Delete from database";
                echo'<br>';
                echo mysqli_error($mysqli);
            }
            mysqli_close($mysqli);
        }
    ?>

</body>

这段代码的作用如下

  1. 连接到数据库并检索用户详细信息
  2. 创建一个表并打印出其中的用户详细信息
  3. 用户点击任何记录前面的删除按钮,确认后删除
  4. 显示删除成功消息

我想要做的是在显示成功消息后,上面的打印表应该自动更新,以便用户确认表中不再存在 id

我尝试了以下解决方案

  1. 在显示成功消息之前重新加载页面,以便用户看到成功消息以及更新的表(因为重新加载将重新连接到数据库并重新获取表)

    我尝试使用“ location.reload(true) ”命令,但我无法确定该行的放置位置,以便在显示成功消息之前执行它。

任何帮助深表感谢

标签: javascriptphphtml

解决方案


一些东西:

  1. 您会希望删除操作是您在页面上执行的第一件事(如果它是表单提交),否则您将打印“预删除”表。

  2. 您需要通过表格中的帖子传递ID。如果每一行都有一个唯一的,并且每行都有一个隐藏的 ID 输入,那就更容易了。

  3. 确认最好附加到表单提交事件,否则你会错过其他非点击输入法。

  4. 正如问题中所写,您的删除操作容易受到 SQL 注入攻击。您需要转义该 POST 值。

像下面这样的东西应该可以工作

function deleteSelectedRow() {
  return (confirm('Are you sure you want to delete this record)) 
      };
<?php
 $message = '';
 $connected = false;
 if(require_once('../SQL/mySQL_connect.php'))
 {
    $connected = true;
 }
        if($connected && isset($_POST['delete']))
        {
            $id_to_delete = mysqli_real_escape_string($mysqli, $_POST['IDNumber']);//escape value to prevent sql injection attack
            $query="DELETE FROM `participants` WHERE `participants`.`id` = ".$id_to_delete."";
            $response = @mysqli_query($mysqli, $query);
            if($response)
            {
                $message = "Deleted from Database Successfully";
            }
            else
            {
                $message = "Couldn't Delete from database";
                $message .='<br>';
                $message .= mysqli_error($mysqli);
            }
            //mysqli_close($mysqli);
        }else{
          $message = "unable to connect to database";
        }
    ?><!DOCTYPE html>

<html lang=" en">

<head>
  <title> Title </title>
</head>

<body>
  <h1>Select the user to delete from the list below </h1>

  
    <?php
            if($connected)
            {                
                $query = "SELECT id, FirstName, LastName, PhoneNumber FROM participants ORDER BY id ASC";
                $userDetails = @mysqli_query($mysqli, $query);
            }
            else
            {
                echo "Couldn't connect to database";
                echo mysqli_error($mysqli);
            }    
           
            
        ?>
      <br><br><br>
      
<?php if($message){ /* do we have a success/error message from the delete operation? */ ?>
  <p><?php echo $message; ?></p>
<?php } ?>

      <table name="userDetailsTable" id="userDetailsTable" align="left" cellspacing="7" cellpadding="8">
        <tr>
          <td align="center"><b>S No</b></td>
          <td align="center"><b>Id</b></td>
          <td align="center"><b>Rank</b></td>
          <td align="center"><b>First Name</b></td>
          <td align="center"><b>Last Name</b></td>
        </tr>
        <?php
                for($i = 1; $i <= mysqli_num_rows($userDetails); $i++)
                // while($row=mysqli_fetch_array($userDetails))
                {
                    $row=mysqli_fetch_array($userDetails);
                    echo '<tr>
                    <td align ="center" >'. $i .'</td>
                    <td align ="center" >' . $row['id'] . '</td>
                    <td align ="center">' . $row['Rank'] . '</td>
                    <td align ="center">' . $row['FirstName'] . '</td>
                    <td align ="center">' . $row['LastName'] . '</td>    
                    <td align ="center"> <form action="" method="POST" onsubmit="return deleteSelectedRow();"><input type="hidden" name="IDNumber" value="'.$row['id'].'" /><input type = submit name="delete" value="delete"></form></td>';
                    echo '</tr>';
                }
            ?>
      </table>

<?php if($connected){
  mysqli_close($mysqli);
} ?>


</body>


推荐阅读