Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 04.07.2015
Сообщений: 8

Загрузка нескольких файлов и запись в бд

04.07.2015, 00:37. Показов 1941. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Помогите разобраться, как правильно загружать несколько файлов на сервер и сформировать запрос в БД для сохранения имен файлов
Вроде бы с загрузкой разобрался
PHP
1
2
3
4
5
6
7
foreach ($_FILES['photo']['error'] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
            $tmp_name = $_FILES['photo']["tmp_name"][$key];
            $name = date('dmY-His_') . $_FILES['photo']['name'][$key];
            move_uploaded_file($tmp_name, $dir . $name);
      }
}
но никак не могу понять, как записать имена файлов в БД

С загрузкой одной картинки проблем нет, а вот чтобы несколько - не могу разобраться
Вот весь файл
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php
    require_once  $_SERVER['DOCUMENT_ROOT'] . '/ad/app_connect.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/ad/fun.php';
 
    if (empty($_POST)){
        echo 'Что то не так с формой!';
        exit;
    }
/** $path Определяем путь к загружаемым картинкам
*  $dir Проверка есть ли папка с датой Если нет, то создаем
*/
    $path = $_SERVER['DOCUMENT_ROOT'] . '/images/kv/';
    $dir = $path . date('m-Y') . '/';
    if (!is_dir($dir)){
        mkdir($dir);
    }
 
/**
*  Загружаем картинку
*/
 
    if ($_FILES['photo']['error'] == 0){
        if($_FILES['photo']['type'] == "image/gif" || $_FILES['photo']['type'] == "image/png" ||
            $_FILES['photo']['type'] == "image/jpg" || $_FILES['photo']['type'] == "image/jpeg"){
                $blacklist = array(".php", ".phtml", ".php3", ".php4");
                foreach ($blacklist as $item){
                    if(preg_match("/$item\$/i", $_FILES['photo']['name'])){
                        echo 'Нельзя загружать скрипты!';
                        exit;
                    }
                }
                $tmp_name = $_FILES['photo']["tmp_name"];
                $image = date('dmY-His_') . $_FILES['photo']['name'];
                move_uploaded_file($tmp_name, $dir . $image);
        }else{
            echo 'Только gif, png, jpg, jpeg';
            exit;
        }
    }else{
        echo 'Ошибка при загрузке!';
        exit;
    }
 
/**
*  функция add_String_To_Db() безопасное добавление в БД
*/
 
    $address = (string)(add_String_To_Db($_POST['address']));
    $object = (int)(add_String_To_Db($_POST['object']));
    $floor = (int)(add_String_To_Db($_POST['floor']));
    $type_of_house = (string)(add_String_To_Db($_POST['type_of_house']));
    $total_area = (int)(add_String_To_Db($_POST['total_area']));
    $area_of_rooms = (string)(add_String_To_Db($_POST['area_of_rooms']));
    $living_area = (int)(add_String_To_Db($_POST['living_area']));
    $kitchen_area = (int)(add_String_To_Db($_POST['kitchen_area']));
    $bathroom = (string)(add_String_To_Db($_POST['bathroom']));
    $balcony = (string)(add_String_To_Db($_POST['balcony']));
    $elevator = (string)(add_String_To_Db($_POST['elevator']));
    $prise = (int)(add_String_To_Db($_POST['prise']));
    $comment = (string)(add_String_To_Db($_POST['comment']));
 
/**
*  Отправляем в БД
*/
    $query = "INSERT INTO `object` (`address`, `object`, `prise`, `floor`, `type_of_house`, `total_area`, `area_of_rooms`, `living_area`, `kitchen_area`, `bathroom`, `balcony`, `elevator`, `comment`, `images`)
                        VALUES ('{$address}', '{$object}', '{$floor}', '{$type_of_house}', '{$total_area}', '{$area_of_rooms}', '{$living_area}', '{$kitchen_area}', '{$bathroom}', '{$balcony}', '{$elevator}', '{$prise}', '{$comment}', '{$image}')";
 
    $result = mysqli_query($connect, $query) or die ('Ошибка:' . mysqli_error($connect));
    confirm_query($result);
Заранее благодарен
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.07.2015, 00:37
Ответы с готовыми решениями:

Загрузка нескольких файлов
В общем, тема такая. Допустим, на сайте создаю пост, где надо загрузить изображения. Но стандартный инпут не подходит, нужно что-то...

Загрузка нескольких файлов
Возникла проблемка как сделать загрузку нескольких файлов одновременно &lt;form action=&quot;&quot; method=&quot;post&quot;...

Загрузка нескольких файлов одновременно
Здравствуйте, у меня есть скрипт загрузки файлов, кстати, доработанный при помощи вашего форума! Но у меня появилась еще одна задача по...

6
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
04.07.2015, 07:48
Цитата Сообщение от Yura13 Посмотреть сообщение
а вот чтобы несколько - не могу разобраться
Вы хотите все имена в одно поле вписать, что-ли? Из Вашего кода сделал вывод, что - да. Лучше сделать ещё одну таблицу для картинок и привязывать их по ID к записи, для которой они добавляются.
1
0 / 0 / 0
Регистрация: 04.07.2015
Сообщений: 8
04.07.2015, 09:06  [ТС]
Цитата Сообщение от Para bellum Посмотреть сообщение
Лучше сделать ещё одну таблицу для картинок и привязывать их по ID к записи, для которой они добавляются.
2-я таблица сколько полей должна иметь?
Под каждую картинку отдельное поле?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
04.07.2015, 09:27
Цитата Сообщение от Yura13 Посмотреть сообщение
2-я таблица сколько полей должна иметь?
Цитата Сообщение от Yura13 Посмотреть сообщение
Под каждую картинку отдельное поле?
Нет. Достаточно 3-х полей:
id, parent_id, image
В поле parent_id пишете ID записи в таблице object (таким образом мы привязываем картинку к записи), в поле image пишете название картинки.
1
0 / 0 / 0
Регистрация: 04.07.2015
Сообщений: 8
04.07.2015, 09:47  [ТС]
А как реализовать?
Как из цикла имена в файлв в запрос записывать?
PHP
1
2
$query = "INSERT INTO `pictures` (`id_pic`, `id_parent`, `image`)
                        VALUES ('', '????', '?????');
В каком виде имена будут хранится в поле (через ',' или как )?
Цитата Сообщение от Para bellum Посмотреть сообщение
В поле parent_id пишете ID записи в таблице object
Не могу понять как привязать к id записи в таблице object? Если она еще не создана
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
04.07.2015, 10:13
Цитата Сообщение от Yura13 Посмотреть сообщение
В каком виде имена будут хранится в поле (через ',' или как )?
Нет. Я же говорю, для каждого изображения своя запись, а привязывайте по ID. Если писать в оно поле через запятую, то такой смысл, если с тем же успехом можно было бы такое поле создать и в таблице "object".
Цитата Сообщение от Yura13 Посмотреть сообщение
Не могу понять как привязать к id записи в таблице object? Если она еще не создана
Поэтому сначала создайте запись в object, получите её ID с помощью mysqli_insert_id и этот ID передайте уже на вставку в таблицу pictures.
Цитата Сообщение от Yura13 Посмотреть сообщение
Как из цикла имена в файлов в запрос записывать?
Создайте подготовленный запрос с помощью mysqli_stmt_prepare(). В цикле привязывайте данные для вставки, а после цикла выполняйте этот подготовленный запрос.
1
2 / 2 / 2
Регистрация: 25.01.2015
Сообщений: 128
01.02.2019, 06:43
Цитата Сообщение от Para bellum Посмотреть сообщение
Создайте подготовленный запрос с помощью mysqli_stmt_prepare(). В цикле привязывайте данные для вставки, а после цикла выполняйте этот подготовленный запрос.
Вас не затруднит выложить код на примере кода ТС?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.02.2019, 06:43
Помогаю со студенческими работами здесь

Загрузка нескольких файлов по url
Добрый вечер. Помогите пожалуйста перелать код под загрузку нескольких файлов по url. Как один файл загружать я разобрался, а как несколько...

Загрузка нескольких файлов на сервер php
Доброго времени суток! Появилась потребность в загрузке нескольких файлов на сервер, например фотографий. Как можно это осуществить с...

Загрузка нескольких файлов на сервер не работает
Не получается реализовать загрузку нескольких файлов на сервер. Если один файл, то такая конструкция работает, если несколько нет....

PHP загрузка нескольких файлов не сервер
Помогите, не могу загрузить два файла на сервер. Первый файл загружается нормально, а на втором ошибка. Нужно срочно. Код HTML...

Загрузка нескольких файлов
Доброго времени суток. В пхп я новичок, подскажите пожалуйста как реализовать загрузку нескольких файлов на сервер. Количество файлов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru