@Iossarian

Почему не срабатывает if-условие?

Настраиваю добавление записи с картинкой и без нее, но php не воспринимает первый if (без картинки) и сразу переходит на elseif. Где моя ошибка?
if (isset($data['add']) && empty($_FILES['image'])) {
    print_r($_FILES);
    if (empty($data['title'])) {
        $errors['title'] = 'Придумайте заголовок статьи';
    } elseif (empty($data['description'])) {
        $errors['description'] = 'Придумайте кратное описание для статьи';
    } elseif (empty($data['text'])) {
        $errors['text'] = 'Напишите текст статьи';
    }
    if (empty($errors)) {
        $sql = "INSERT INTO posts (title, description, text, date, author_id) VALUES (:title, :description, :text, NOW(), :author_id)";
        $result = $db->prepare($sql, $values);
        if ($result) {
            header("Location: ../index.php");
        }
    }
} elseif (isset($data['add']) && !empty($_FILES)) {
    $allowedTypes = ['image/jpg', 'image/png', 'image/jpeg'];
    $type = explode('/', $_FILES['image']['type']);
    $fileName = 'img\\' . uniqid() . '.' . $type[1];
    $path = 'D:\OP\OSPanel\domains\bot\\';
    if (!in_array($_FILES['image']['type'], $allowedTypes)) {
       $errors['image'] = 'Недопустимый тип файла';
    } else {
        if (empty($data['title'])) {
            $errors['title'] = 'Придумайте заголовок статьи';
        } elseif (empty($data['description'])) {
            $errors['description'] = 'Придумайте кратное описание для статьи';
        } elseif (empty($data['text'])) {
            $errors['text'] = 'Напишите текст статьи';
        }
        if (empty($errors)) {
            $values[4] = $fileName;
            $sql = "INSERT INTO posts (title, description, text, date, author_id, image) VALUES (:title, :description, :text, NOW(), :author_id , :image)";
            $result = $db->prepare($sql, $values);
            if ($result) {
                move_uploaded_file($_FILES['image']['tmp_name'], $path . $fileName);
                header("Location: ../index.php");
            }
        }
    }
}
  • Вопрос задан
  • 108 просмотров
Пригласить эксперта
Ответы на вопрос 1
AleksandrB
@AleksandrB
Квази-кодер
Вместо "И" попробуй "или" поставить
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
Ticketland.ru Москва
от 120 000 руб.
от 1 700 до 2 500 usd.
Интерно Ростов-на-Дону
от 35 000 до 50 000 руб.