За последние 24 часа нас посетили 20929 программистов и 1106 роботов. Сейчас ищут 434 программиста ...

Не записываются задания в лист задач

Тема в разделе "PHP и базы данных", создана пользователем macr, 27 май 2018.

Метки:
  1. macr

    macr Новичок

    С нами с:
    26 май 2018
    Сообщения:
    2
    Симпатии:
    0

    Есть лист задач на php, по коду вроде всё верно, не выбивает никакой ошибки, но задания не добавляются в сам лист задач и в БД, вот код, в чём проблема?
    PHP:
    1. <?php
    2.     $errors = "";
    3.  
    4.     // подключение к БД
    5.     $db = mysqli_connect('localhost', 'root', 'mysql', 'todo');
    6.  
    7.     if (isset($_POST['submit'])) {
    8.         $task = $_POST['task'];
    9.         if (empty($task)) {
    10.             $errors = "Ты должен что-то записать";
    11.         } else {
    12.             mysqli_query($db, "INSERT INTO tasks (task) VALUES ('$task')");
    13.         header('location: index.php');
    14.         }
    15.     }
    16.  
    17.     // delete task
    18.     if (isset($_GET['del_task'])) {
    19.         $id = $_GET['del_task'];
    20.         mysqli_query($db, "DELETE FROM tasks WHERE id=$id");
    21.         header('location: index.php');
    22.     }
    23.     $tasks = mysqli_query($db, "SELECT * FROM tasks");
    24.  
    25. ?>
    26.  
    27. <!DOCTYPE html>
    28. <html lang="ru">
    29. <head>
    30.     <meta charset="UTF-8">
    31.     <title>Лист задач с PHPMyAdmin</title>
    32.     <link rel="stylesheet" href="style.css">
    33. </head>
    34. <body>
    35.     <div class="heading">
    36.         <h2>Лист задач используя MySQL</h2>
    37.     </div>
    38.  
    39.     <form action="index.php" method="POST">
    40.         <?php
    41.         if (isset($errors)) { ?>
    42.             <p><?php echo $errors; ?></p>
    43.         <?php } ?>
    44.         <input type="text" name="tasks" class="task_input">
    45.         <button type="submit" class="add_btn" name="submit">Добавить задание</button>
    46.     </form>
    47.  
    48.     <table>
    49.         <thead>
    50.             <tr>
    51.                 <th>N</th>
    52.                 <th>Task</th>
    53.                 <th>Action</th>
    54.             </tr>
    55.         </thead>
    56.  
    57.         <tbody>
    58.         <?php $i = 1; while ($row = mysqli_fetch_array($tasks)) { ?>
    59.             <tr>
    60.                 <td><?php echo $i; ?></td>
    61.                 <td class="task"><?php echo $row['task']; ?></td>
    62.                 <td class="delete">
    63.                     <a href="index.php?del_task=<?php echo $row['id']; ?>">x</a>
    64.                 </td>
    65.             </tr>
    66.         <?php $i++; } ?>
    67.         </tbody>
    68.  
    69.     </table>
    70. </body>
    71. </html>
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.789
    Симпатии:
    646
    Ошибки не выбивает, потому что ты делаешь редирект (после header Location крайне желательно везде повтыкать exit). Да и результат самой вставки не проверяешь.

    Удаление лучше тоже делать POST-запросом.

    Нет защиты от SQL-инъекций. Не проверяются результаты подключения к БД и выполнения запросов. Не проверяется наличие непосредственно $_POST['task'].
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    --- Добавлено ---
    https://github.com/MouseZver/My-gar...e-zapisyvajutsja-zadanija-v-list-zadach.70961

    PHP:
    1. <?php
    2.  
    3. error_reporting ( E_ALL );
    4.  
    5. use Aero\Supports\Lerma;
    6.  
    7. require 'vendor/autoload.php';
    8.  
    9. if ( $_SERVER['REQUEST_METHOD'] === 'POST' )
    10. {
    11.     $task = filter_input ( INPUT_POST, 'task', FILTER_SANITIZE_SPECIAL_CHARS, FILTER_NULL_ON_FAILURE ) or die ( '<p>Значение пустое</p>' );
    12.    
    13.     Lerma::prepare( 'INSERT INTO `tasks`( `task` ) VALUES ( ? )', [ $task ] );
    14. }
    15. elseif ( $id = filter_input ( INPUT_GET, 'del_task', FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE ) )
    16. {
    17.     Lerma::query( [ 'DELETE FROM `tasks` WHERE id = %d', $id ] );
    18. }
    19.  
    20.  
    21.  
    22. $lerma = Lerma::query( 'SELECT * FROM `tasks`' );
    23.  
    24. ?>
    25. <!DOCTYPE html>
    26. <html lang="ru">
    27. <head>
    28.     <meta charset="UTF-8">
    29.     <title>Лист задач с PHPMyAdmin</title>
    30.     <link rel="stylesheet" href="/style.css">
    31. </head>
    32. <body>
    33.     <div class="heading">
    34.         <h2>Лист задач используя MySQL</h2>
    35.     </div>
    36.     <form action="/index.php" method="POST">
    37.         <input type="text" name="task" class="task_input">
    38.         <button type="submit" class="add_btn" name="submit">Добавить задание</button>
    39.     </form>
    40. <? if ( $lerma -> rowCount() ) { ?>
    41.     <table>
    42.         <thead>
    43.             <tr>
    44.                 <th>N</th>
    45.                 <th>Task</th>
    46.                 <th>Action</th>
    47.             </tr>
    48.         </thead>
    49.         <tbody>
    50.         <?
    51.             $i = 1;
    52.            
    53.             echo implode ( PHP_EOL, $lerma -> fetchAll( Lerma::FETCH_FUNC, function ( ...$row ) use ( &$i )
    54.             {
    55.                 return sprintf ( '<tr><td>%d</td><td class="task">%s</td><td class="delete"><a href="/index.php?del_task=%d">x</a></td></tr>', $i++, $row[1], $row[0] );
    56.             } ) );
    57.         ?>
    58.         </tbody>
    59.     </table>
    60. <? } ?>
    61. </body>
    62. </html>