Как передать новое значение в поле input?

Видимо, я вообще не знаю php... (((
Есть простая форма, которая принимает поле из БД, в котором хранится имя файла изображения. Затем, в той же форме выбираем новый файл изображения и копируем его в папку, где хранятся все картинки для сайта.
Приведенные ниже скрипты эту задачу успешно выполняют.
Скрипт самой формы
<form action="img-upload.php" enctype="multipart/form-data" method="POST" name="form_upload">
                                        <?php img_data_read(); ?> // выбираем данные из БД и передаем значение поля в переменную $ImgName - все делает успешно!
                                        <div class="form-group row h-20">
                                                <label for="logo" class="col-2 col-form-label my-auto">Логотип и фавикон сайта</label>
                                                <div id="image" class="col-1 my-auto">
                                                        <img class-"img-fluid" src="./images/<?php echo $ImgName; ?>" style="width: 10vh; height: auto;">
                                                </div>
                                                <div class="col-4 my-auto">
                                                        <input class="form-control site-name" type="text" name="Logo" value="<?php echo $ImgName; ?>" id="Logo" readonly>
                                                </div>
                                                <div class="col-5 my-auto">
                                                        <label><input id="file" name="file" type="file" /></label>
                                                        <label><input name="button" type="submit" value="Сохранить" /></label>
                                                </div>
                                                <?php echo "Loaded file name: " . $_FILES['file']['name']; ?>
                                        </div>

Здесь обратите внимание на предпоследнюю строку кода, которая должна бы выводить имя загруженного файла, но не выводит вообще ничего.
Скрипт img-upload.php - action для ^
require 'functions.php';
header('Location: admin.php');
$extensions = array('jpg', 'jpeg', 'png', 'gif'); // массив разрешенных расширений
$upload_dir =  'images';  // папка для загрузки
if(!empty($_POST['button'])) {
        $message = uploadHandle(8, $extensions, $upload_dir);
        echo $message = $message['error'] ? $message['error'] : $message['info'];
}

header здесь используем для возврата ни страницу инициации скрипта. Вызываемая функция uploadHandle содержится в файле functions.php:
function uploadHandle($max_file_size = 1024, $valid_extensions = array(), $upload_dir =  '.') {
        $error = null;
        $info  = null;
        $max_file_size *= 1048576;  // максимальный размер файла в байтах: 1 048 576 байт = 1 Мб
        if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
                // проверяем расширение файла
                $file_extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
                if (in_array(strtolower($file_extension), $valid_extensions)) {
                        // проверяем размер файла
                        if ($_FILES['file']['size'] < $max_file_size) {
                                $file_name = $_FILES['file']['name'];  // получаем имя файла
                                $destination = './' . $upload_dir . '/' . $file_name;
                                if (move_uploaded_file($_FILES['file']['tmp_name'], $destination)) $info = 'Файл ' . $file_name . ' успешно загружен';
                                else $error = 'Не удалось загрузить файл';}
                        else $error = 'Размер файла больше допустимого';}
                else $error = 'У файла недопустимое расширение';}
        else {
                // массив ошибок
                $error_values = array(
                UPLOAD_ERR_INI_SIZE   => 'Размер файла больше разрешенного директивой upload_max_filesize в php.ini',
                UPLOAD_ERR_FORM_SIZE  => 'Размер файла превышает указанное значение в MAX_FILE_SIZE',
                UPLOAD_ERR_PARTIAL    => 'Файл был загружен только частично',
                UPLOAD_ERR_NO_FILE    => 'Не был выбран файл для загрузки',
                UPLOAD_ERR_NO_TMP_DIR => 'Не найдена папка для временных файлов',
                UPLOAD_ERR_CANT_WRITE => 'Ошибка записи файла на диск');
                $error_code = $_FILES['file']['error'];
                if (!empty($error_values[$error_code])) $error = $error_values[$error_code];
                        else $error = 'Случилось что-то непонятное';
        }
        return array('info' => $info, 'error' => $error);
}

На всяческие проверки можно внимания не обращать, они, в принципе, почти все срабатывают.
Итого, результат: файл выбрали и скопировали в нужную папку.
Задача: заменить (скорее всего нужен ajax) значения переменной $ImgName в
  • Вопрос задан
  • 110 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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