Member 14993740 Ответов: 1

Как создать кнопку удаления, где я могу удалить список в базе данных


Я пытаюсь создать кнопку удаления для каждой введенной строки в соответствии с идентификатором, указанным в моей базе данных.

Что я уже пробовал:

Это мой текущий код :

<html>

<head>
    <link rel="stylesheet"  href="css/booklist.css">
    <title>Search data by its ID</title>

<script type="text/javascript">
function out(){
     alert("Checkout Items Successful!");
    }
</script>

</head>
<div class ="background">
    <h1>Library Checkout System</h1>
    <h2>Loan/Request Your Books Here</h2>

        <form action="" method="POST">
            <input type="text" name="id" placeholder="Please enter Book ID" />
            <input type="submit" name="search" value="Search By ID" />
        
        </form>
        <table border="2" id="newton">
            <tr>

                <th>Product Name</th>
                <th>Quantity</th>
                <th>Returned Date</th>
            </tr><br><br>

            <?php
            $connection = mysqli_connect("localhost","root", "");
            $db = mysqli_select_db($connection,"myfirstdb");
            session_start();

            if (!isset($_SESSION['id'])) {
                $_SESSION['id'] = array();
            }
            

            if(isset($_POST['search']))
            {
                $id = $_POST['id'];

                array_push($_SESSION['id'],$id); //Here we have declared a session array. We can add elements to it by array_push function.//
                $_SESSION['id'] = array_unique($_SESSION['id']); //array_unique: Removes duplicate values from an array


                $id = implode(',',$_SESSION['id']);  //implode : returns a strings from the elements of an array.//
         // instead of changing the database of each row, the implode() function adds the rows according to the selected id entered.//
         // this function is the key for solving my original problem.//    
               
               

                $query = "SELECT * FROM `table3` where id in ($id)";
                $query_run = mysqli_query($connection, $query);

                while($row = mysqli_fetch_array($query_run))
                {
                    ?>
                    <tr>
                        <td>
          <?php echo $row ['product_name']; ?> </td>
        <td>
          <?php echo $row ['quantity']; ?> </td>
        <td>
          <?php echo $row ['returned_date']; ?> </td>


                    </tr>

                    <?php

                }
            }


            ?>
        
        </table>
        <br>
        <input type="submit" name="send" value="Confirm Booklist" onclick="out()" />
        </form>
</div>
</body>
<a href=""></a><a href=""></a>
</html>

Richard Deeming

Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк / интерполяцию для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

PHP: SQL-инъекция - руководство пользователя[^]
РНР: Подготовленные инструкции и хранимые процедуры - руководство пользователя[^]

Richard Deeming

Кроме того, вы не задали ни одного вопроса. Вы рассказали нам, что вы пытаетесь сделать, и показали нам код, который вы используете. Но вы не описали проблему, которая у вас есть.

Нажмите на зеленую ссылку "улучшить вопрос" и обновите свой вопрос, чтобы включить правильное описание вашей проблемы. Включите полную информацию о любых ошибках и не забудьте указать, к какой строке кода они относятся.

1 Ответов

Рейтинг:
2

W∴ Balboos, GHB

Вам понадобится следующее, Чтобы сделать то, что вы описываете:

Ан &ЛТ;входной&ГТ; кнопки тип='' или &ЛТ;кнопка> элемент.
Событие onclick для этой кнопки
Вызов AJAX для события onclick
PHP-страница на сервере для приема данных от вашего AJAX-вызова (вы можете использовать переменные сеанса, но я думаю, что вам будет лучше использовать JSON.
Инструкции SQL в PHP цель AJAX-вызов, чтобы сделать свой удалить
(через цикл или с предложением IN, в зависимости от того, что вы считаете лучшим)

При необходимости повторите свой исходный запрос данных (с теперь уменьшенным набором данных из-за удалений) и отправьте его обратно, чтобы обновить innerHTML вашей таблицы.

Это и есть "как" в терминах потока. Надеюсь, вы хорошо разбираетесь в этих различных частях "веб-технологии".

Обратите внимание: нет элемента <form> - AJAX намного лучше, в общем (IMO).