Где ошибка в считывании методом 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 =
В БД это поле, естественно, остается пустым, при этом остальные поля постятся, выводятся и изменяются в БД правильно.

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽