简体   繁体   中英

How to make the “delete button” not to delete the latest entry using PHP

My code delete the last row instead of deleting its own row, what to do? i tried everything i can but it doesn't work please send help.

  $sql = "SELECT id, name, ArticleTitle, Article FROM article";

  if ($result = $conn->query($sql))
   {
   // output data of each row
   while($row = $result->fetch_assoc()) {

    echo "<tr><td>" . 
    $row["id"]. "</td><td>"  ."<input type=hidden name=id value=". 
    $row["id"].">".
    $row["name"] . "</td><td>" . 
    $row["ArticleTitle"]. "</td><td>" .
    $row["Article"] ."</td><td>" .
    "<a href=connection.php id=".$row["id"]."><button>View</button></a>". "</td><td>".
    "<button type=submit name=login_user>Delete</button>" .


    "</td></tr> " ;
    // href="copytrade.php?id=$_GET['id']


}

echo "</form></table>";

and here is my connection.php script

 if (isset($_POST['login_user'])) {
      $id = mysqli_real_escape_string($conn, $_POST['id']);

       if (empty($id)) {
        array_push($errors, "ID is required");
      }

    // sql to delete a record
     if (count($errors) == 0) {
        $query = "DELETE FROM article WHERE id='$id'";
        $results = mysqli_query($conn, $query);
    }
    if ($conn->query($query) === TRUE) {
        echo "Record deleted successfully";
    }
}

You're only going to want one ID hidden field (currently you have one for every row). You'll set its value to the id of the delete clicked before submitting the form. The way you're doing it right now sends every id as the same value to the page via $_POST and the last one overrides all of the others.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM