Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
21 / 21 / 10
Регистрация: 13.08.2013
Сообщений: 295

Добавление пути изображений в базу данных

15.02.2016, 16:51. Показов 774. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Есть форма. В ней присутствует плагин загрузки изображений (он корректно работает):

newtopic.php
PHP
1
2
3
4
5
6
7
8
9
require_once("/includes/global.php"); // подключение к БД, PDO
require_once("upload.php");
// куски кода
$add_topic_query = "INSERT INTO topics (title, user_id, views, sticky, global_sticky, price, text, date) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
            $add_topic_res = $pdo->prepare($add_topic_query);
            $add_topic = $add_topic_res->execute(array($title, $user_id, $views, $sticky, $global_sticky, $price, $text, $now));
// .. Остальное
<form action="#" class="dropzone"></form>
// футер и тд
upload.php
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
$ds = DIRECTORY_SEPARATOR;  //1
    $storeFolder = 'uploads/topics';   //2
    $allowed = array('png', 'jpg', 'gif', 'jpeg');
    $max_size = 1024 * 3 * 1024;
    if (!empty($_FILES)) {
        $extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
        $tempFile = $_FILES['file']['tmp_name'];          //3
 
        $targetPath = dirname(__FILE__) . $ds . $storeFolder . $ds;  //4
        $now = time();
        $start = array('image/png', 'image/jpeg', 'image/gif', 'image/pjpeg');
        $result = array('.png', '.jpg', '.gif', '.jpg');
        $test = str_replace($start, $result, $_FILES['file']['type']);
        $targetFile = $targetPath . $now . $test;
        $url_for_db = $now . $test;
 
        if (in_array($extension, $allowed) AND $_FILES["filename"]["size"] < $max_size) {
            if (empty($_SESSION['LoggedIn']) && empty($_SESSION['user_id'])) {
            move_uploaded_file($tempFile, $targetFile); //6
            $add_topic_picture = "INSERT INTO topic_pictures (date, url) VALUES (?, ?)";
            $add_topic_picture_res = $pdo->prepare($add_topic_picture);
            $add_topic_picture = $add_topic_picture_res->execute(array($now, $url_for_db));
                return $url_for_db;
        } else echo 'Error';
    }
    }
Кратко, что делает код: сохраняет изображения на сервер в формате "текущее_время_в_юникс.расширение" (например, 1455543854.png), далее добавляет путь до картинки в таблицу topic_picture.

К каждой добавленной картинки в БД нужно приписать значение topic_id, которое появляется после создания темы.
Пример: загружаем 3 картинки на сервер, в таблице topics создаётся строка topic_id = 123, title, price и так далее, а в таблицу topic_pictures должны записаться все загруженные изображения:
PHP
1
2
3
4
5
6
topic_id = 123,
url = 123.jpg
topic_id = 123,
url = test.jpg
topic_id = 123,
url = screen.jpg
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.02.2016, 16:51
Ответы с готовыми решениями:

Добавление изображений в базу данных и их отображение
Доброго дня такая проблема не могу отобразить несколько изображений с помощью события ADOQuery1AfterScroll. Как можно сделать в этом...

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

Макрос, сохраняющий базу данных по заданному пути
У меня вся база есть, все работает, осталась последняя лаба с макросами. Эту лабу я сделал, ибо там простые макросы: открой это, обнови то...

4
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
15.02.2016, 17:57
Если topic_id – автоинкременальное поле, его значение можно получить, вызвав mysqli_insert_id сразу после создания записи. А еще лучше сначала создавать запись, а потом заполнять ее и загружать изображения.
0
21 / 21 / 10
Регистрация: 13.08.2013
Сообщений: 295
15.02.2016, 20:22  [ТС]
Цитата Сообщение от miketomlin Посмотреть сообщение
Если topic_id – автоинкременальное поле, его значение можно получить, вызвав mysqli_insert_id сразу после создания записи. А еще лучше сначала создавать запись, а потом заполнять ее и загружать изображения.
Объясните, пожалуйста, как мне сделать загрузку изображений на сервер после создания записи, если изображения загружаются ajax'ом? Дайте пример, пожалуйста
0
 Аватар для Laroux
172 / 167 / 75
Регистрация: 21.11.2014
Сообщений: 1,490
15.02.2016, 23:39
Цитата Сообщение от grisha2217 Посмотреть сообщение
если изображения загружаются ajax'ом
то в том же скрипте и записывайте
1
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
15.02.2016, 23:47
Да, передавайте topic_id вместе с загружаемыми через AJAX файлами.

Примеры не коллекционирую, к сожалению.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.02.2016, 23:47
Помогаю со студенческими работами здесь

Уменьшение нагрузки на сервер, путем хеширования изображений в базу данных
Добрый вечер. У меня есть проект (в разработке), он основан на одном едином сервисе (ASP.NET MVC API), и он имеет одну лишь HTML страницу,...

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

Запрос на добавление данных в базу данных из формы. Mysql
Надо, чтобы данные вводились из формы. Я пишу так, но не знаю как дописать. &lt;html&gt;&lt;head&gt; ...

Добавление базы данных и запросы в эту базу данных
Подскажите пожалуйста. При помощи каких компонентов в delphi можно добавить базу данных acces и какой код и как создать запросы в эту базу...

Добавление данных в базу данных во время функции printf()
Привет всем! У меня возникла проблема. Задача такая: нужно принять данные с одной таблицы в базе данных и после подтверждения их на...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru