Где ошибка в считывании методом POST?

Не могу понять, где ошибаюсь...
Есть форма (Bootstrap 4), включающая запрос и обновление данных (там, вообще, 5 полей + кнопка, покажу одно поле, остальные аналогичны):
<form role="form" name="GlobalsForm" action="" method="post">
<?php global_data_read (); ?> <!-- Читаем данные из БД -->
   <div class="form-group row h-20">
      <label for="site-name-input" class="col-2 col-form-label my-auto">Заголовок сайта</label>
      <div class="col-5 my-auto">
         <input class="form-control site-name" type="text" name="SiteName" value="<?php echo $GlobalData['SiteName']; ?>" id="site-name-input">
      </div>
      <span id="site-name-input" class="text-muted my-auto">Заголовок сайта. Применяется в названии вкладки браузера</span>
   </div>
   <button type="submit" name="submit" id="globals-data-save" class="btn btn-success btn-lg pull-right ">Сохранить общие настройки</button>
   <?php global_data_update (); ?> <!-- Изменяем данные в БД -->
</form>

Функция считывания данных из БД global_data_read:
function global_data_read () {
        global $GlobalData;
        $GlobalData = array();
        $bd_link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
        if (mysqli_connect_errno()) {
                printf("Не удалось подключиться: %s\n", mysqli_connect_error());
                exit();
        }
        if (!$bd_link->set_charset("utf8")) {
                printf("Ошибка при загрузке набора символов utf8: %s\n", $bd_link->error);
                exit();
        }
        $globals_query = "SELECT * FROM site_data";
        $globals_result = $bd_link->query($globals_query);
        while($globals_row = $globals_result->fetch_array()) {
                $globals_rows[] = $globals_row;
                $GlobalData['SiteName'] = $globals_row['SiteName'];
                $GlobalData['CompanyName'] = $globals_row['CompanyName'];
                $GlobalData['Theme'] = $globals_row['Theme'];
                $GlobalData['Phone'] = $globals_row['Phone'];
                $GlobalData['Email'] = $globals_row['Email'];
        }
        return $GlobalData;
}

Здесь все работает штатно: данные читаются и заносятся в поля формы.
Функция function global_data_update для обновления данных, работающая по нажатию кнопки в форме:
function global_data_update () {
        $bd_link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
        if (mysqli_connect_errno()) {
                printf("Не удалось подключиться: %s\n", mysqli_connect_error());
                exit();
        }
        if (!$bd_link->set_charset("utf8")) {
                printf("Ошибка при загрузке набора символов utf8: %s\n", $bd_link->error);
                exit();
        }
        if (form_submitted()) {
                $GlobalData['SiteName'] = $_POST['SiteName'];
                echo "SiteName = " . $GlobalData['SiteName'] . "<br />";
                $GlobalData['CompanyName'] = $_POST['CompanyName'];
                echo "CompanyName = " . $GlobalData['CompanyName'] . "<br />";
                $GlobalData['Theme'] = $_POST['Theme'];
                echo "Theme = " . $GlobalData['Theme'] . "<br />";
                $GlobalData['Phone'] = $_POST['Phone'];
                echo "Phone = " . $GlobalData['Phone'] . "<br />";
                $GlobalData['Email'] = $_POST['Email'];
                echo "Email = " . $GlobalData['Email'];
                $globals_query = "UPDATE site_data SET
                        SiteName = '" . $GlobalData['SiteName'] . "',
                        CompanyName = '" . $GlobalData['CompanyName'] . "',
                        Theme = '" . $GlobalData['Theme'] . "',
                        Phone = '" . $GlobalData['Phone'] . "',
                        Email = '" . $GlobalData['Email'] . "'";
                $globals_result = $bd_link->query($globals_query);
        }
        return $GlobalData;
}

Здесь есть функция form_submitted, которая просто проверяет isset и $_POST.
Обратите внимание: я в global_data_update проверяю и вывожу на экран значения массива GlobalData. Тут и появляется глюк - код не распознает поле БД Theme, хотя успешно видит его при запросе функцией global_data_read.
В контрольном выводе появляется ошибка:
Notice: Undefined index: Theme in C:\Users\user\Desktop\XAMPP\htdocs\constreq\_db-operate\db-op.php on line 42
Theme =
В БД это поле, естественно, остается пустым, при этом остальные поля постятся, выводятся и изменяются в БД правильно.

Замучился уже проверять синтаксис, может просто глаз замылился?
  • Вопрос задан
  • 148 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Kulay
Попробуй так: $GlobalData['Theme'] = isset($_POST['Theme']) ? $_POST['Theme'] : '';
А ошибка говорит о том, что ты ссылаешься на несуществующий индекс, то есть в массиве $GlobalData не существует индекса 'Theme'
PS: может там какая-нибудь буква из кириллицы вместо латиницы, чем черт не шутит
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы