Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Sshell
0 / 0 / 0
Регистрация: 28.01.2016
Сообщений: 59
1

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

03.02.2016, 15:00. Просмотров 954. Ответов 23
Метки нет (Все метки)

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

Добавлено через 16 минут
Есть две таблицы vars и imgs. В форме пока заполняются данные в vars, предлагается загрузить фото, нажимаем на кнопку "Загрузить", открывается окно для выбора и загрузки фото, но запись в vars ещё не закончена, т.е. Id ещё нет, для записи var-id в тбл imgs. Подскажите как быть в этой ситуации.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2016, 15:00
Ответы с готовыми решениями:

Как загружать в БД сразу несколько изображений?
Как загрузить в базу данных сразу несколько изображений в одну категорию. При...

Как добавить несколько файлов одной кнопкой и в одной форме php
Здравствуйте! Как добавить несколько файлов одной кнопкой и в одной форме php...

Как можно загрузить несколько файлов на одной странице
Как можно загрузить несколько фалов на одной странице, ну к примеру как на...

В зависимости от того, сколько файлов уже было загружено, определить директорию, куда загружать новый
В БД есть 3 колонки: file_new, file_new2 и file_new3. Если в file_new пусто, то...

Почему производится выборка только с одной записи, хотя в запросе 2 записи?
$q = "SELECT link,title FROM #__menu WHERE `menutype`='{$menu}' "; ...

23
Виталюска
475 / 463 / 229
Регистрация: 26.09.2010
Сообщений: 2,360
03.02.2016, 23:11 21
Цитата Сообщение от miketomlin Посмотреть сообщение
Чем это текущая метка лучше, чем id_img?
да хотябы тем что не надо думать о том где взять этот id_img, по вашему выходит надо сделать лишний запрос к бд чтобы узнать какой последний ид и добавить к нему 1

Добавлено через 24 минуты
Цитата Сообщение от Sshell Посмотреть сообщение
Если не трудно то покажите наглядный пример.
ну что то вроде этого
PHPHTML
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<form name="form_name" method="post" action="" enctype="multipart/form-data">
Первое значение<textarea name="value_1" wrap="hard"></textarea><br>
Второе значение<textarea name="value_2" wrap="hard"></textarea><br>
Выбирете файлы (поле для загрузки нескольких файлов) <input type="file" name="file_multiple[]" multiple>    
Выбирете файлы (поле для загрузки одного файла) <input type="file" name="file_multiple[]">  
Выбирете файлы (поле для загрузки одного файла) <input type="file" name="file_multiple[]">      
<p>Даже если в поле ("Выбирете файлы (поле для загрузки нескольких файлов)") сразу выбрать N файлов
и в каждом поле ("Выбирете файлы (поле для загрузки одного файла)") выбрать по файлу либо одно поле
оставить пустым то всеравно загрузит все выбранные файлы. Именна файлов будут храниться в массиве
file_multiple[]
</p>
<input type='submit' name='save' value='Сохранить данные'>                                                                  
</form>
 
<?php
// скрипт сохранения
if (isset($_POST['save'])) {
    // данные перед вставкой в БД надо обработать
    $value_1 = $_POST['value_1'];
    $value_2 = $_POST['value_2'];
    // проверка на ошибки заполнены ли поля и т.д. если все ОК то подключение к БД
    // после подключения запрос на сохранение в таблицу vars
    $sql = mysqli_query($db, "INSERT INTO `vars` (`value_vars1`, `value_vars2`) VALUES ('".$value_1."', '".$value_2."')");
    // получаем ид добавленной записи
    $last_id = mysqli_insert_id($sql);
    // далее идет добавление файлов
    if  ($last_id > 0) {        
                //ширина и высота в пикселях
                $pic_weight = 3000;
                $pic_height = 3000;
                if (isset($_FILES))
                {
                  //пролистываем весь массив изображений по одному $_FILES
                  foreach ($_FILES['file_multiple']['name'] as $k=>$v)
                  {
                if(!empty($_FILES['file_multiple']['name'][$k])) {
                    //директория загрузки
                    $uploaddir = "images/";
                    //новое имя изображения
                    $apend=date('YmdHis').rand(100,1000).'.png';
                    //путь к новому изображению
                    $uploadfile = "$uploaddir$apend";
                 
                    //Проверка расширений загружаемых изображений
                    if($_FILES['file_multiple']['type'][$k] == "image/gif" || $_FILES['file_multiple']['type'][$k] == "image/png" ||
                    $_FILES['file_multiple']['type'][$k] == "image/jpg" || $_FILES['file_multiple']['type'][$k] == "image/jpeg")
                    {
                      //черный список типов файлов
                      $blacklist = array(".php", ".phtml", ".php3", ".php4");
                      foreach ($blacklist as $item)
                      {
                        if(preg_match("/$item\$/i", $_FILES['file_multiple']['name'][$k]))
                        {
                          echo "Нельзя загружать скрипты.";
                          exit;
                        }
                      }
                 
                      //перемещаем файл из временного хранилища
                      if (move_uploaded_file($_FILES['file_multiple']['tmp_name'][$k], $uploadfile))
                      {
                        //получаем размеры файла
                        $size = getimagesize($uploadfile);
                        //проверяем размеры файла, если они нам подходят, то оставляем файл и добавляем в БД
                        if ($size[0] < $pic_weight && $size[1] < $pic_height)
                        {
                            
                        $sql_img = mysqli_query($db, "INSERT INTO `imgs` (`id_vars`, `patch`) VALUES ('".$last_id."',
                    '".$uploadfile."')");
                        }
                        //если размеры файла нам не подходят, то удаляем файл unlink($uploadfile);
                        else
                        {
                          echo "<center><br>Размер пикселей превышает допустимые нормы.</center>";
                          unlink($uploadfile);
                        }
                      }
                      else
                        echo "<center><br>Файл не загружен, вернитесь и попробуйте еще раз.</center>";
                    }
                    else
                      echo "<center><br>Можно загружать только изображения в форматах jpg, jpeg, gif и png.</center>";
                  }
                  }
                }
        }
}
?>
1
miketomlin
Заблокирован
04.02.2016, 00:27 22
Цитата Сообщение от Виталюска Посмотреть сообщение
да хотябы тем что не надо думать о том где взять этот id_img, по вашему выходит надо сделать лишний запрос к бд чтобы узнать какой последний ид и добавить к нему 1
??? Какую единицу? В MySQL есть функция (а в PHP – ее аналог), которая вернет id вставленной записи. Если вы не хотите выполнять даже этот запрос, хотя он выполняется не на таблице и поэтому достаточно быстро, можно использовать в имени файла id_vars вместе с порядковым номером этого файла, получаемым при загрузке.
0
Виталюска
475 / 463 / 229
Регистрация: 26.09.2010
Сообщений: 2,360
04.02.2016, 00:36 23
Цитата Сообщение от miketomlin Посмотреть сообщение
В MySQL есть функция
какая функция в MySQL позволяет получить ид вставленной записи и как ее использовать в скрипте? (это не ирония просто просветите меня может Ваш вариант будет легче)
Цитата Сообщение от miketomlin Посмотреть сообщение
в имени файла id_vars вместе с порядковым номером этого файла
от куда будет браться порядковый номер файла? покажите свой пример
0
miketomlin
Заблокирован
04.02.2016, 00:53 24
Цитата Сообщение от Виталюска Посмотреть сообщение
какая функция в MySQL позволяет получить ид вставленной записи и как ее использовать в скрипте? (это не ирония просто просветите меня может Ваш вариант будет легче)
LAST_INSERT_ID/mysqli_insert_id

Цитата Сообщение от Виталюска Посмотреть сообщение
от куда будет браться порядковый номер файла? покажите свой пример
Какой пример? Вы наверняка будете в цикле обрабатывать полученные файлы, так и используйте счетчик цикла/ключ в массиве файлов. Например: <id_vars>-<i>.ext (в таблице можно сохранять только концовку имени <i>.ext).
0
04.02.2016, 00:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2016, 00:53

Как в запросе искать id одной записи в свойстве другой записи?
Дана таблица с деревом категорий CREATE TABLE category ( id integer not...

Сохранение изображений, загружаемых на страницу, в базе данных
Здраствуйте. Кто знает, скажите пожалуйста ресурс, где подробно описывается...

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


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru