Удалить проблемы PDO ООП

0

Всем добрый день. Я полностью нуждаюсь в вашей помощи. Я новичок в 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"; ?>
Теги:

1 ответ

1
Лучший ответ

Похоже, вы почти получили его и хорошо сделали с использованием PDO с параметризованными запросами. Проблема в том, что вы не выводите $ id через php-интерпретатор. Вам нужно сделать это:

<button class="btn"><a href="bookDeleteUI.php?id=<?php echo urlencode($id); ?>">Delete</a></button></td>
  • 0
    спасибо мистер Макродт! Это сработало, но что такое urlencode и для чего он нужен? и, между прочим, если вы не возражаете ответить на другой вопрос ... почему мой javascript не работает (приглашение "книга была удалена")? ..
  • 0
    urlencode используется для экранирования символов, чтобы их можно было безопасно использовать в запросе $_GET , например & становится %26 чтобы вы случайно не начали новый параметр key=value (см. php.net/urlencode ). В вашей функции deleteData отсутствует инструкция deleteData . Вы должны return true; если запись была удалена или return false; если это не удалось.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню