За последние 24 часа нас посетил 20931 программист и 1112 роботов. Сейчас ищут 390 программистов ...

Редактирование статьи

Тема в разделе "Вопросы от блондинок", создана пользователем Hoprock, 6 дек 2018.

  1. Hoprock

    Hoprock Гость

    С нами с:
    6 дек 2018
    Сообщения:
    1
    Симпатии:
    0
    Редактирую статью, при нажатии выдает статью и её текст в полях, если нажимаю "Изменить" то статья редактируется как надо, если нажимаю "Отменить редактирование", то статья и все что в ней было кроме id и даты создания исчезает, почему так?
    PHP:
    1. <?php
    2. require_once ("MySiteDB.php");
    3. $note_id = $_GET['note'];
    4. $query = "SELECT * FROM notes WHERE id = $note_id";
    5. $result = mysqli_query ($link, $query);
    6. $edit_note = mysqli_fetch_array ($result);
    7. ?>
    8. <!DOCTYPE html>
    9. <html>
    10. <head>
    11. <meta charset="utf-8">
    12. </head>
    13. <body>
    14. <form method="post" name='editnote'>
    15. <p>Заголовок заметки: <input type="text" name="title" value =
    16. "<?php echo $edit_note['title'];?>" /></p>
    17. <p>Текст заметки:<textarea name="article">
    18. <?php echo $edit_note['article'];?></textarea></p>
    19. <input type="hidden" name = "note" value="<?php echo $edit_note['id']?>" />
    20. <input type="submit" name="submit" value="Изменить" /> </form>
    21. <a href = "default.php"> На главную </a> <br>
    22. <a href = 'comments.php?note=<?php echo $note_id; ?>'>Отменить редактирование</a>
    23. </body>
    24. </html>
    25. <?php
    26. $title = $_POST['title'];
    27. $article = $_POST['article'];
    28. $update_query = "UPDATE notes SET title = '$title', article = '$article'
    29. WHERE id = $note_id";
    30. $update_result = mysqli_query ($link, $update_query);
    31. ?>
     
    #1 Hoprock, 6 дек 2018
    Последнее редактирование: 6 дек 2018
  2. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @Hoprock, в ссылку "отменить" подставляете параметр, полученный методом get, которого нет, если загрузка страницы выполнена после нажатия кнопки "изменить".
    Кроме того, обновление статьи в базе выполняется всегда, после выдачи браузеру данных о статье.
    Не считая, конечно, "мелочей", связанных с sql-инъекциями и способностью браузера обновить страницу по запросу пользователя (попробуйте, после submit'а формы).
    То есть, сначала надо проверить входные данные (filter_input(), или filter_input_array()), затем - либо обновить статью в базе (если была нажата кнопка "изменить", либо не обновлять, и после - получить недостающие данные из базы и показать форму.
    А в запросах к базе использовать, например, подготовленные выражения (prepared statements) вместо прямой подстановки переменных.
    --- Добавлено ---
    А для возврата полей формы к исходному состоянию (данным, которые они имели при загрузке страницы), существует кнопка с type='reset'