Не выводятся данные из БД в форму

Представьте, что у меня есть страница, в левой части которой выводится список данных из БД, а справа имеется форма. У каждой строки этого списка есть кнопка "редактировать". При нажатии на нее данные этой строки должны выводиться в форму. У формы также есть кнопка "сохранить". Я могу изменить данные формы и при нажатии этой кнопки перезаписать их. Проблема в том, что при нажатии кнопки "редактировать" данные строки не выводятся в форму. Хотя если я прописываю в форме какие-то данные и нажимаю кнопку "сохранить", данные в БД действительно перезаписываются.

Вот код:

<? 

    $database = mysqli_connect('localhost', 'root', '', 'portfolio');
    function get_articles($database) {
        $sql2 = "SELECT * FROM articles";
        $result2 = mysqli_query($database, $sql2);
        $articles = mysqli_fetch_all($result2, MYSQLI_ASSOC);
        return $articles; // подключаю бд
    }

    if (isset($_POST["slogan"])) {
        if (isset($_GET['red'])) {
          $sql = mysqli_query($database, "UPDATE `articles` SET `article` = '{$_POST['words']}',`head` = '{$_POST['slogan']}', `link` = '{$_POST['silka']}' WHERE `id`={$_GET['red']}");
        } else {
          $sql = mysqli_query($database, "INSERT INTO `articles` (`article`, `head`, `link`) VALUES ('{$_POST['words']}', '{$_POST['slogan']}', '{$_POST['silka']}')");
          header('location: '.$_SERVER['HTTP_REFERER']);
          exit;
        }
    } // если это режим редактирования, данные заменяются, если нет, то записываются в новую строку

    if (isset($_GET['del'])) {
        $sql = mysqli_query($database, "DELETE FROM `articles` WHERE `id` = {$_GET['del']}");
        header('location: '.$_SERVER['HTTP_REFERER']);
        exit; // код удаления
    }
?>

<div class="fields">
    <div class="edit-left">

        <? foreach ($articles as $items): ?>
        <div class="art">
            <h3><?=$items['head'];?></h3>
            <div class="buttons">
                <? echo "<a href='?del={$items['id']}'>Удалить</a>"?> 
                <? echo "<a href='?red={$items['id']}'>Редактировать</a>"?> 
            </div>
        </div>
        <? endforeach; ?> // список строк из БД


    </div>
    <div class="edit-right">
                <form id="sendwords" method="post"> // форма
                    <input tabindex="0" type="text" value="<?= isset($_GET['red']) ? $articles['head'] : ''; ?>" placeholder="Название статьи" id="slogan" name="slogan" autocomplete="off" class="slogan"> 
                    <textarea tabindex="0" rows="7" value="<?= isset($_GET['red']) ? $articles['article'] : ''; ?>" cols="50" type="text" id="words" autocomplete="off" name="words" class="words" autocomplete="off" placeholder="Текст статьи"></textarea>
                    <input tabindex="0" type="text" value="<?= isset($_GET['red']) ? $articles['link'] : ''; ?>" placeholder="Ссылка на источник" id="silka" name="silka" autocomplete="off" class="silka">
                    <div class="buttons">
                        <a href="?add=new">Режим создания</a>
                        <input tabindex="0" class="sohr" type="submit" id="redact" name="redact" value="Сохранить">
                    </div>
                </form>
    </div>
</div>

   // если нажимаю "редактировать", собираются данные той строки, на которую на нажал 
    if (isset($_GET['red'])) {
        $sql = mysqli_query($database, "SELECT `id`, `article`, `head`, `link` FROM `articles` WHERE `id`={$_GET['red']}");
        $articles = mysqli_fetch_array($sql);
    }

Ответы (1 шт):

Автор решения: Макс Максимус

У вас данные не будут попадать в форму потому что вы их нигде не не получаете. Там где у вас проверка if (isset($_GET['red'])) нужно получить данные статьи по ее id (SELECT * FROM ... WHERE id = $_GET['red']). Полученные данные записать в переменную $article. Далее где у вас html форма подставить нужные значения из переменной. Только исправьте $articles на $article в ваше форме. А в кнопке input type="submit" исправьте имя на name="save". Далее вставьте в нужном месте проверку на isset($_POST['save']) для выполнения обновления записи в БД. Но лучше редактирование записей сделать на отдельной странице (по другому урлу, например: http://mysite/articles/edit.php)

→ Ссылка