@Lpfo

Как изменить строку из БД?

<form class="msg-wall" method="post" action="/vendor/wall.php">
            <p>
                Message Wall:
            </p>
            <input type="text" name="wall" placeholder="What are you thinking about?">
            <button type="submit">Publish</button>

            <?php foreach($check_message as $row) { ?>
                <div class="content">
                    <p class="msg"><?= $row['message'] ?></p>
                    <input type="text" name="edit">
                    <a href="?ed=<?= $row['id'] ?>">edit</a>
                </div>
            <?php } ?>

</form>


Логика вроде простая. В параграфе какая-то строка из БД, я хочу ее просто изменить на текст, который введу в input. После нажатия на ссылку с текстом edit изменения должны отобразиться.

Вот так я пытался реализовать:

if (isset($_GET['ed'])) {
    $id = $_GET['ed'];
    $value = $_POST['edit'];
    mysqli_query($connect, "UPDATE message SET message = '$value' WHERE id = $id");
    header('Location: ../profile.php');
}


Это работает, если вместо $value я передаю любой конкретно заданный текст. А здесь просто пустая строка получается, видимо в $value ничего не лежит почему-то...
Как можно исправить мой код, чтобы он работал?
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ответы на вопрос 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Поскольку у вас в определении формы в action не вписан никакой id (например action="/vendor/wall.php?id=111"), то и переменная $_GET['id'] во время исполнения PHP-скрипта не определена, не существует, не назначена, поэтому и код внутри if (isset($_GET['id'])) не должен отрабатываться.

Но лучше не вписывать id внутрь action, а добавить в форму скрытую переменную <input type=hidden name=id value='{$row['id']}'>, и поменять в скрипте на $_POST['id'].
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы