когда конкретный пользователь входит в систему, он будет отображать, что у него есть книги ... и внутри каждой кнопки удаления книги ... я хочу удалить строку, когда я нажал кнопку удаления ... но когда я нажал кнопку удаления, она перезагрузила страницу, пожалуйста, мне нужна помощь
эта функция 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");
}
}
Вы пробовали это? `echo" <td> "." <form method = 'POST'> <input type = 'hidden' value = '". $ row [' nameOfBook ']."'> <input type = 'submit' name = ' delete 'value =' Удалить ''> </form> ". "</td>"; `






Я сделал функцию удаления с помощью 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 (содержащий идентификаторы книг и пользователей) в кнопку удаления, чтобы наш 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 в User.php добавьте следующую функцию:
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");
}
}
?>
Он дал мне эту ошибку Предупреждение: нечисловое значение обнаружено в ......
Я сделал именно то, что ты говоришь
Кстати, перед продолжением обязательно сделайте резервную копию своей базы данных.
когда я ввожу истинное имя пользователя и пароль, он выдает это предупреждение: нечисловое значение обнаружено в /var/www/html/User.php в строке 111. Предупреждение: нечисловое значение обнаружено в / var / www / html / User. .php в строке 111
Позвольте нам продолжить обсуждение в чате.
и внутри каждой строки нет кнопки удаления
Вы просто отправляете текущую страницу, поэтому она перезагружается. Если вы не хотите, чтобы он перезагружался и на удаление отправлялись только данные, переходите к концепции Ajax.