За последние 24 часа нас посетил 18551 программист и 1618 роботов. Сейчас ищут 1176 программистов ...

Как загрузить два и более изображения из разных полей формы

Тема в разделе "PHP и базы данных", создана пользователем dinaminator, 15 авг 2023.

  1. dinaminator

    dinaminator Новичок

    С нами с:
    15 авг 2023
    Сообщения:
    4
    Симпатии:
    0
    Вопрос на основе курса "Авторизация и регистрация на чистом PHP. Автор успешно демонстрирует загрузку изображения из формы:
    PHP:
    1. <label>Изображение профиля</label>
    2. <input type="file" name="avatar">
    Затем в обработчике прописывается путь в папку на компьютере:
    PHP:
    1.  $path = 'uploads/' . time() . $_FILES['avatar']['name'];
    2.     if (!move_uploaded_file($_FILES['avatar']['tmp_name'], '../' . $path)) {
    3.         $response = [
    4.             "status" => false,
    5.             "type" => 2,
    6.             "message" => "Ошибка при загрузке аватарки",
    7.         ];
    8.         echo json_encode($response);
    9.     }
    После этого изображение (выделено красным) вместе с другими данными отправляется в базу MYSQL:
    PHP:
    1. mysqli_query($connect, "INSERT INTO `users` (`id`, `lastname`, `name`, `patronymic`, `login`, `phone`, `email`, `password`, `avatar`) VALUES (NULL, '$lastname', '$name', '$patronymic', '$login', '$phone', '$email', '$password', '$path';
    ЭТО ВСЕ РАБОТАЕТ. Но у меня дополнительная задача. Мне нужно загрузить не одно, а два и более изображения из разных полей формы и, соответственно, в разные поля таблицы MYSQL. Например, помимо изображения с именем "avatar" нужно загрузить еще изображение с именем "dantar". Разумеется, поле с этим именем в MYSQL приготовлено. Итак, пишу код формы:
    PHP:
    1. <label>Изображение профиля</label>
    2. <input type="file" name="avatar">
    3. <label>Второе изображение</label>
    4. <input type="file" name="dantar">
    В обработчике прописываю пути в папку:
    PHP:
    1. $path = 'uploads/' . time() . $_FILES['avatar']['name'];
    2.     if (!move_uploaded_file($_FILES['avatar']['tmp_name'], '../' . $path)) {
    3.         $response = [
    4.             "status" => false,
    5.             "type" => 2,
    6.             "message" => "Ошибка при загрузке аватарки",
    7.         ];
    8.         echo json_encode($response);
    9.         $path2 = 'uploads/' . time() . $_FILES['dantar']['name'];
    10.     if (!move_uploaded_file($_FILES['dantar']['tmp_name'], '../' . $path2)) {
    11.         $response = [
    12.             "status" => false,
    13.             "type" => 2,
    14.             "message" => "Ошибка при загрузке аватарки",
    15.         ];
    16.         echo json_encode($response);
    Пытаюсь отправить оба изображения в базу:
    PHP:
    1. mysqli_query($connect, "INSERT INTO `users` (`id`, `lastname`, `name`, `patronymic`, `login`, `phone`, `email`, `password`, `avatar`, `dantar` VALUES (NULL, '$lastname', '$name', '$patronymic', '$login', '$phone', '$email', '$password', '$path', '$path2')");
    И НИЧЕГО НЕ ПОЛУЧАЕТСЯ!!! Регистрация не проходит. Обоих картинок нет ни в папке, ни в базе.
    Помогите, чем сможете, уважаемые программисты. Кстати, к общему коду в исходнике прикреплен скрипт, вот фрагмент по первому изображению:
    Код (Text):
    1. let avatar = false;
    2. $('input[name="avatar"]').change(function (e) {
    3. avatar = e.target.files[0];
    4. });
    Как правильно прописать здесь второе изображение?
    ЗАРАНЕЕ БЛАГОДАРЕН!
     
    #1 dinaminator, 15 авг 2023
    Последнее редактирование модератором: 16 авг 2023
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.105
    Симпатии:
    1.243
    Адрес:
    там-сям
    Используй ббкоды php или code чтобы оформить код.
    Один раз я сделал это для тебя, во второй раз забаню и удалю тему.
    --- Добавлено ---
    НИЧЕГО НЕ ПОЛУЧАЕТСЯ — это не описание. есть какая-то ошибка, например что у тебя фигурные скобки непарные, открывающих больше чем закрывающих. Или о том что у тебя ошибка в SQL - не хватает закрывающей скобки перед VALUES.
    --- Добавлено ---
    Посмотри как надо отлавливать ошибки: https://phpfaq.ru/debug
    Как выводить ошибки, возникающие при неправильном запросе MySQL можешь посмотреть в примерах документации: https://www.php.net/manual/ru/function.mysql-query.php
     
    #2 artoodetoo, 16 авг 2023
    Последнее редактирование: 16 авг 2023
  3. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.854
    Симпатии:
    748
    Адрес:
    Татарстан
    заметки на будущее:
    - вы отправляете не изображения а путь до них,
    - при INSERT не надо писать NULL в id с автоинкрементом ... просто уберите это поле из запроса
    - отлаживайте запросы. запрос сформируйте в переменную и выведете его - вот и увидите что не так с запросом

    а вообще - тут кусок, там кусок... а логики и не видно .. может у вас до запроса то и не доходит дело

    насчет js - все ж логично
    Код (Javascript):
    1. $('input[name="dantar"]').change(function (e) {
    2. dantar= e.target.files[0];
    3. });
    только опять же непонятно где потом этот dantar использовать и зачем он
     
  4. dinaminator

    dinaminator Новичок

    С нами с:
    15 авг 2023
    Сообщения:
    4
    Симпатии:
    0
    Изначально код пишу не сам. Сейчас попытался реализовать эту же идею на основе другого исходника. Теперь уже в базу данных уходят два пути к изображениям, но ОДИНАКОВЫЕ (первое и его копия), хотя в форме изображения записаны с разными именами. И переменные путей тоже разные. Ни каких ошибок не получаю, просто по логике не могу понять, почему так. Уверен, что развязка простая. В PHP абсолютный новичок, но если наведете на правильную мысль, дальше сам смогу справиться.
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.788
    Симпатии:
    1.328
    Адрес:
    Лень
    4000 руб.
     
    don.bidon нравится это.
  6. dinaminator

    dinaminator Новичок

    С нами с:
    15 авг 2023
    Сообщения:
    4
    Симпатии:
    0
    Спасибо, разобрались вроде. Не во фреймворках дело, а в банальной внимательности.