【问题标题】:pdo button delete rowpdo按钮删除行
【发布时间】:2018-05-13 15:05:03
【问题描述】:

当特定用户登录时,它将显示他有什么书.. 在每本书删除按钮内.. 当我点击删除按钮时我想删除行......但是当我点击删除按钮时,它会重新加载页面,请我需要帮助

这个getbooks函数

public function getBooks($start = 0, $limit = 2)
{
    $sql_start = $start * $limit;
    $sql_limit = $limit;

    //SELECT loginUser.username, Library.nameOfBook FROM loginUser JOIN userBook JOIN Library ON userBook.user_id = loginUser.id AND userBook.book_id = Library.id WHERE loginUser.username="loay";
    $query = "SELECT Library.nameOfBook FROM loginUser JOIN userBook JOIN Library ON userBook.user_id = loginUser.id AND userBook.book_id = Library.id WHERE loginUser.username=:username LIMIT $sql_start, $sql_limit";
    $statment = $this->db->prepare($query);
    $statment->execute([
        ':username' => $this->username
        //,':start' => $start, ':limit' => $limit
    ]);
    $result = $statment->fetchAll();

   echo "<table border='1'>
   <form method='POST'>
    <tr>
    <th>Books</th>
    <th>Action</th>
    </tr>";
    foreach($result as $row){
        echo "<tr>";
        echo "<td>" . $row['nameOfBook'] . "</td>";
        echo "<td>" ."<input type='submit' name='delete' value='Delete' method='post' >" . "</td>";
        echo "</tr>";
    }

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

    if(isset($_POST['delete'])){
        die("SS");
    }
}

【问题讨论】:

  • 您只是提交当前页面,这就是它重新加载的原因。如果您不希望它重新加载并且只发送要删除的数据,那么请使用 Ajax 概念
  • 你试过这个吗? ` echo "" ."
    "。 ""; `

标签: php pdo pagination


【解决方案1】:

我使用 jquery 和 ajax 制作了删除功能。

在您的表单代码上方添加:

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script>
function deleteBook(b) {
 $(document).ready(function() {
    var book = $(b).parent('td').prev('td').html();
    if(confirm("Are you sure you want to delete book - "+book+"?") == false){
        return;
    }
    var ids = $(b).attr('id').substr(6).split('-');
    var book_id_to_delete = ids[0];
    var user_id = ids[1];
    //alert("book_id is " + book_id_to_delete + ", user_id is " + user_id);
    $.ajax({
      type: "POST",
      url: "" + "deletebook.php",
      data: {
        'book_id': book_id_to_delete,
        'user_id': user_id,
        submit: 'submit',
      },
      success: function(res) {
        if (res == "deleted") {
          $(b).closest('tr').remove();
        } else {
          alert(res);
        }
      }
    });
  });
}
</script>

在 getBooks() 函数中,我在删除按钮中添加了 id 属性(包含书籍和用户 ID),以便我们的 js 代码知道应该删除用户的哪些书籍。

将您的 getBooks() 函数替换为:

<?php
public function getBooks($start = 0, $limit = 2)
{
    $sql_start = $start * $limit;
    $sql_limit = $limit;

    $query = "SELECT Library.nameOfBook, userBook.book_id, userBook.user_id FROM loginUser JOIN userBook JOIN Library ON userBook.user_id = loginUser.id AND userBook.book_id = Library.id WHERE loginUser.username=:username LIMIT $sql_start, $sql_limit";
    $statment = $this->db->prepare($query);
    $statment->execute([
        ':username' => $this->username
    ]);
    $result = $statment->fetchAll();

   echo "<table border='1'>

    <tr>
    <th>Books</th>
    <th>Action</th>
    </tr>";
    foreach($result as $row){
        echo "<tr>";
        echo "<td>" . $row['nameOfBook'] . "</td>";
        echo "<td>" ."<input type='submit' id='delete".$row['book_id']."-".$row['user_id']."' onclick='deleteBook(this)' name='delete' value='Delete'>" . "</td>";
        echo "</tr>";
    }

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

    if(isset($_POST['delete'])){
        die("SS");
    }
}

?>

创建一个处理用户图书删除的类函数。

在 User.php 中的 User 类中,添加以下函数:

public function deleteBook($book_id, $user_id)
{
    $stmt = $this->db->prepare("DELETE FROM userBook WHERE book_id = :book_id AND user_id = :user_id");
    $stmt->bindValue(":book_id", $book_id);
    $stmt->bindValue(":user_id", $user_id);
    return $stmt->execute();
}

以下代码将通过 ajax 执行,以便从数据库中删除所选书籍。

创建一个名为 - deletebook.php 的文件

并添加以下代码:

<?php
    include_once('User.php');

    if(isset($_POST['submit'])){
        $object = new User();
        if($object->deleteBook($_POST['book_id'], $_POST['user_id'])){
            die('deleted');
        }
        else {
            die("fail");
        }
    }
?>

【讨论】:

  • 他给我这个错误警告:A non-numeric value遇到......
  • 我完全按照你说的做了
  • 顺便说一句,请确保在继续之前备份您的数据库。
  • 当我输入真实的用户名和密码时,他给出了这个警告:在第 111 行的 /var/www/html/User.php 中遇到的非数字值警告:在/var/www/html/User.php 第 111 行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多