Всем добрый день. Я полностью нуждаюсь в вашей помощи. Я новичок в oop & pdo, и у меня возникают проблемы с моей функцией удаления. Элемент не будет удаляться всякий раз, когда я нажимаю кнопку "Удалить". Кажется, я не могу назвать идентификатор. Я просто не знаю, что делать. Пожалуйста, помогите мне решить эту проблему.
Вот мой код. Для класса (codex):
public function deleteData($id,$table)
{
$q = "DELETE FROM $table WHERE id = :id";
$stmt = $this->con->prepare($q);
$stmt->execute(array(':id'=>$id));
}
Для пользовательского интерфейса и страницы, на которой я вызываю идентификатор:
<?php
include_once "../styles/header-menu-out.php";
include_once "dbconnection.php";
function __autoload($class){
include_once("../main/".$class.".php");}
$code = new codex("localhost","library_books","root","" );
$books = $code->showData("book_info");
if(isset($_REQUEST['id'])){
if($code->deleteData($_REQUEST['id'],"book_info")){
echo "<script type='text/javascript'>
alert('Book Information have been deleted.');
window.location='bookDeleteUI.php';
</script>";
}}
?>
<html>
<head><link rel="stylesheet" type="text/css" href="../styles/library_style.css"></head>
<title>Book-A-Holic: Delete & Update Books</title>
<body><br /><center>
<div id="content"><div class="echoname"><br/><br/><b><h2>Book Settings</h2></b><br/></div>
<table id="tablecolor" class="echoname" border="1">
<td>ID</td>
<td>Title</td>
<td>Author</td>
<td>ISBN</td>
<td>Publisher</td>
<td>Language</td>
<td>Genre</td>
<td>Quantity</td>
<td>Availability</td>
<td>Queue</td>
<td><center>Settings</center></td>
<?php
echo "<pre>";
foreach ($books as $book)
{
echo "<tr>";
extract($book);
echo "<td>".$id."</td>";
echo "<td>".$title."</td>";
echo "<td>".$author."</td>";
echo "<td>".$isbn."</td>";
echo "<td>".$publisher."</td>";
echo "<td>".$language."</td>";
echo "<td>".$genre."</td>";
echo "<td>".$quantity."</td>";
echo "<td>".$availability."</td>";
echo "<td>".$queue."</td>";
?>
<td><button class="btn"><a href="bookUpdateUI.php?update=$id" >Edit</a></button>
<button class="btn"><a href="bookDeleteUI.php?id=$id">Delete</a></button></td>
<?php echo "</td>";
}
echo "</pre>";
?>
</table><br />
</div></center>
</body>
</hmtl>
<?php include_once "../styles/footer-admin.php"; ?>
Похоже, вы почти получили его и хорошо сделали с использованием PDO с параметризованными запросами. Проблема в том, что вы не выводите $ id через php-интерпретатор. Вам нужно сделать это:
<button class="btn"><a href="bookDeleteUI.php?id=<?php echo urlencode($id); ?>">Delete</a></button></td>
urlencode
используется для экранирования символов, чтобы их можно было безопасно использовать в запросе$_GET
, например&
становится%26
чтобы вы случайно не начали новый параметрkey=value
(см. php.net/urlencode ). В вашей функцииdeleteData
отсутствует инструкцияdeleteData
. Вы должныreturn true;
если запись была удалена илиreturn false;
если это не удалось.