Задать вопрос

Ошибка обработки формы или обновления базы данных?

Всем привет!
Есть проблемка, над которой бьюсь уже сутки. Не пойму, что не так, а может просто глаз замылился )))
Есть простенькая форма:
<form id="upload-image" enctype="multipart/form-data">
    <div class="image-preview">
        <img class="logo_class" id="preview" src="../images/<?php echo $globals_data[1]['logo_file']; ?>" alt="Logo">
    </div>
    <input id="logo_file" name="logo_file" type="hidden" value="<?php echo $globals_data[1]['logo_file']; ?>" >
    <input type="file" name="image" id="image">
    <input class="form-group" name="site_name" value="<?php echo $globals_data[1]['site_name']; ?>" >
    <input class="form-group" name="company_name" value="<?php echo $globals_data[1]['company_name']; ?>" >
    <input class="form-group" name="description" value="<?php echo $globals_data[1]['description']; ?>" >
    <input class="form-group" name="phone" value="<?php echo $globals_data[1]['phone']; ?>" >
    <input class="form-group" name="email" value="<?php echo $globals_data[1]['email']; ?>" >
    <input class="block-button" type="submit" name="gform_btn" value="Обновить данные сайта">
    <div id="result"></div>
</form>

в ней поле для загрузки логотипа и разные текстовые поля.
Для предварительной загрузки картинки и отправки формы используется javascript:
$(document).ready(function () {
        function readImage (input) {
                if (input.files && input.files[0]) {
                        var reader = new FileReader();
                        reader.onload = function (e) {
                                $('#preview').attr('src', e.target.result);
                                $('#logo_file').val(input.files[0].name);
                        }
                        reader.readAsDataURL(input.files[0]);
                }
        }
        function printMessage(destination, msg) {
                $(destination).removeClass();
                if (msg == 'success') {
                        $(destination).addClass('result_class_success').text('Логотип успешно обновлен');
                }
                if (msg == 'error') {
                        $(destination).addClass('result_class_error').text('Произошла ошибка');
                }
        }
        $('#image').change(function(){
                readImage(this);
        });
        $('#upload-image').on('submit',(function(e) {
                e.preventDefault();
                var formData = new FormData(this);
                //for (var [key, value] of formData.entries()) {
                //        console.log(key, value);
                //}
                $.ajax({
                        type:'POST', // Тип запроса
                        url: 'handler.php', // Скрипт обработчика
                        data: formData, // Данные которые мы передаем
                        cache:false, // В запросах POST отключено по умолчанию, но перестрахуемся
                        contentType: false, // Тип кодирования данных мы задали в форме, это отключим
                        processData: false, // Отключаем, так как передаем файл
                        success:function(data){
                                printMessage('#result', data);
                        },
                        error:function(data){
                                console.log(data);
                        }
                });
        }));
И вот, скорее всего, главное: php-обработчик формы:
<code lang="php">
<?php
global $gform_data;
if(isset($_FILES) && isset($_FILES['image'])) {
        $image = $_FILES['image'];
        if ($image['size'] > 200000) {die('error');}
        $imageFormat = explode('.', $image['name']);
        $imageFormat = $imageFormat[1];
        $imageFullName = '../images/' . $image['name'];
        $imageType = $image['type'];
        if ($imageType == 'image/jpeg' || $imageType == 'image/jpg' || $imageType == 'image/png' || $imageType == 'image/gif') {
                if (move_uploaded_file($image['tmp_name'],$imageFullName)) { echo 'success'; } else { echo 'error'; }
        }
}
update_globals ();
?>
До этого места все хорошо: картинка грузится и перемещается в указанную директорию. В переменную formData в js правильно записываются все поля формы (проверено - посмотрите закомметированный код в <code lang="java">
$('#upload-image')</code>. Но вот в базу данных эти значения не записываются функцией update_globals ():
<code lang="php">
global $bd_link;
db_connect();
        $globals_data['logo_file'] = $_POST['logo_file'];
        $globals_data['site_name'] = $_POST['site_name'];
        $globals_data['company_name'] = $_POST['company_name'];
        $globals_data['description'] = $_POST['description'];
        $globals_data['phone'] = $_POST['phone'];
        $globals_data['email'] = $_POST['email'];
        $globals_query = "UPDATE globals_data SET
                logo_file = '" . $globals_data['logo_file'] . "',
                site_name = '" . $globals_data['site_name'] . "',
                company_name = '" . $globals_data['company_name'] . "',
                description = '" . $globals_data['description'] . "',
                phone = '" . $globals_data['phone'] . "',
                email = '" . $globals_data['email'] . "'";
        $globals_result = $bd_link->query($globals_query);
}
</code>
Уважаемые эксперты! Пожалуйста, не комментируйте качество кода - я его еще не чистил, и не предлагайте принципиально других решений - у меня нет времени их тестировать и внедрять. Все части представленного кода по отдельности отлично работают, это проверено в других проектах. Мне непонятно, почему они не работают здесь вместе?
  • Вопрос задан
  • 106 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽