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

Вывод изображений из базы

28.01.2016, 22:47. Показов 8218. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Если я добавляю изображение в поле "image" ,как я его должен выводить на странице статьи?

Добавлено через 48 секунд
Или может есть альтернатива, не используя базу.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.01.2016, 22:47
Ответы с готовыми решениями:

Вывод изображений из базы данных
Из разных таблиц одной БД выводится информация,в первой колонке должно выводиться изображение.но выводится абракадабра вместо картинки: ...

Вывод изображений из базы MySQL
Всем привет! Ситуация следующая: в таблице в image (varchar500) вписываю путь к картинке формата jpeg/jpg. id image ...

Вывод изображений из базы данных
Всем доброго времени суток. Мне нужно вместо указанной в src ссылки выводить изображения из бд. Я не совсем понимаю как это сделать,...

11
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
28.01.2016, 23:20
Цитата Сообщение от Karen-Bekker Посмотреть сообщение
как я его должен выводить на странице статьи?
Подставлять ссылку на изображение в атрибут src тега img.
Цитата Сообщение от Karen-Bekker Посмотреть сообщение
Или может есть альтернатива, не используя базу.
Также.
0
-3 / 0 / 1
Регистрация: 22.01.2016
Сообщений: 309
28.01.2016, 23:29  [ТС]
Мне нужно чтобы у каждой статьи было свое изображение. Создал поле MEDIUMBLOB, изображение как-то обрабатываться должно?и как его выводить потом из базы?
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
28.01.2016, 23:48
Karen-Bekker, зачем хранить его в БД? Храните ссылку на него.

Например, файл в /files/articles/01.jpg, и в БД записываете '01.jpg', и подставляете в статьях нужную картинку.
0
-3 / 0 / 1
Регистрация: 22.01.2016
Сообщений: 309
29.01.2016, 00:10  [ТС]
А как загружать в определенную папку файл изображения?и давать ему имя?
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
29.01.2016, 00:19
Karen-Bekker, ух, посмотрите в интернете, это достаточно объёмный вопрос.
0
В экстазе
 Аватар для wolfalone
168 / 152 / 38
Регистрация: 05.08.2012
Сообщений: 767
Записей в блоге: 3
29.01.2016, 02:22
Karen-Bekker, в большинстве БД есть (и используется в большинстве таблиц/сущностей) специальное поле, которое является уникальным идентификатором записи (объекта, сущности). Например, в MySQL это поле отмеченное индексом PRIMARY KEY, называется оно обычно ID. То есть, автоинкреметное (автоматически увеличивающееся на единицу) поле, при каждой попытке добавить запись в таблицу, я думаю Вы его неоднократно встречали и использовали...

Если картинка одна, очень удобно хранить её с именем которое содержит ID этой самой записи. Например, у нас есть таблица news, в которой есть два поля, id и title, соответственно, у каждой новости, будет свой уникальный ID, соответственно, удобно хранить именованные примерно таким образом: img/news_101.jpg где 101 - это ID новости. То есть, шаблон имени файла-картинки, относящейся к данной новости будет выглядеть так: img/news_{$id}.jpg. Надеюсь, Вы понимаете, о чем я?

То есть, сначала Вы вставляете запись (строку) относящуюся к самой новости, а уже потом, добавляете (обрабатываете) к этой записи картинку. Получить ID последней вставленной записи можно например так (зависит от того, чем Вы пользуетесь для связи с БД). Для mysqli функция будет выглядеть так, а для PDO вот так... и так далее.

Добавлено через 9 минут
Если Вам нужно хранить много картинок, то есть смысл добавить дополнительную таблицу, которая будет содержать связку ID-картинки ID-новости, и делать соответствующие записи в неё... Не забывая потом удалять картинки (связанные записи могут удаляться автоматически, при правильной установке внешних ключей).

Хранение бинарных данных (картинок, MP3-файлов и пр. данных не относящихся к текстовым) хоть и в некоторой степени удобно, в том плане, что удаляя какую-либо новость (*как пример), вместе с ней удаляться и соответствующие файлы (в данном случае картинки). Но, этот метод не очень эффективен, так как Вам придётся прогонять через соединение с БД ещё и файлы и делать это каждый раз... так же это в итоге может привести к массе других порой неприятных последствий, по этому, лучше храните "мух отдельно, котлеты отдельно".

*я уже не говорю о том, что хранение картинок (и пр. бинарных данных) в БД ощутимо раздувает её размер, что в итоге никак не добавляет базе производительности...

Ну и сами картинки, Вам придётся отдавать через дополнительный скрипт, т.е. ссылка на картинку будет выглядеть примерно так: img.php?id=101 (где 101 - ID новости/картинки), этот скрипт должен будет сначала отправить в браузер соответствующий заголовок, а потом ещё передать бинарные данные (т.е. тело самой картинки), что тоже обычно производительности не добавляет...

Добавлено через 2 минуты
Цитата Сообщение от Karen-Bekker Посмотреть сообщение
А как загружать в определенную папку файл изображения?и давать ему имя?
Корневая папка сайта обычно доступна в
PHP
1
print $_SERVER['DOCUMENT_ROOT'];
, путь от текущего скрипта можно получить через
PHP
1
print dirname(__FILE__);
, про то как именовать картинки я уже писал...
0
-3 / 0 / 1
Регистрация: 22.01.2016
Сообщений: 309
30.01.2016, 13:18  [ТС]
Вот таблица для статей:

id int(11)
title varchar(255)
meta_d varchar(255)
meta_kw varchar(255)
text text
image mediumblob

Доскажите по пункту , каким образом загружать сюда фотографию???

У меня на странице добавления в форме:
<input name="image" type="file">

На странице сохранения ,сохраняется так же как другие поля.
0
В экстазе
 Аватар для wolfalone
168 / 152 / 38
Регистрация: 05.08.2012
Сообщений: 767
Записей в блоге: 3
02.02.2016, 07:23
Karen-Bekker, например вот, инструкция по записи картинки в БД, коих в сети целая свалка

Или у Вас в чём-то боле конкретном проблема?
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
02.02.2016, 11:12
Цитата Сообщение от Karen-Bekker Посмотреть сообщение
Доскажите по пункту , каким образом загружать сюда фотографию???
картинки храните лучше на сервере, а в БД храните пути к ним

самый простой вариант:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if(empty($_FILES['image']['size']))  die('Вы не выбрали файл');
        if($_FILES['image']['size'] > (5 * 1024 * 1024)) die('Размер файла не должен превышать 5Мб');
        $imageinfo = getimagesize($_FILES['image']['tmp_name']);
        $arr = array('image/jpeg','image/gif','image/png'); // массив допустимых форматов
        if(!in_array($imageinfo['mime'],$arr)) { 
            echo ('Картинка должна быть формата JPG, GIF или PNG');
        } else {
            $upload_dir = 'images/'; //имя папки с картинками
            $name = $upload_dir.date('YmdHis').rand(100,1000).'.png'; // переименовываем файл чтоб исключить повторы имен
            $mov = move_uploaded_file($_FILES['image']['tmp_name'],$name); // перемещаем файл
            if($mov) {
                mysqli_query($link, "INSERT INTO `table_name` (`title`, `meta_d`, `meta_kw`, `text`, `image`) VALUES ('".$title."', '".$meta_d."', '".$meta_kw."', '".$text."', '".$name."')");
            } else {
                echo 'Произошла ошибка при загрузке фотографии. Пожалуйста, попробуйте снова';
            } 
        }
да и изменить тип поля в БД
image mediumblob
например на
image char(255)

тут тоже задайте нужные значения переменным кроме $name
('".$title."', '".$meta_d."', '".$meta_kw."', '".$text."', '".$name."')
0
-3 / 0 / 1
Регистрация: 22.01.2016
Сообщений: 309
03.02.2016, 13:39  [ТС]
Помогите поправить страницу сохранения статьи:

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
<?php
    if (isset($_POST['title'])) { $title=$_POST['title']; if ($title =='') { unset($title);} }
    if (isset($_POST['meta_d'])) { $meta_d=$_POST['meta_d']; if ($meta_d =='') { unset($meta_d);} }
    if (isset($_POST['meta_kw'])) { $meta_kw=$_POST['meta_kw']; if ($meta_kw =='') { unset($meta_kw);} }
    if (isset($_POST['text'])) { $text=$_POST['text']; if ($text =='') { unset($text);} }
    
    
    
    if(empty($_FILES['image']['size']))  die('Вы не выбрали файл');
        if($_FILES['image']['size'] > (5 * 1024 * 1024)) die('Размер файла не должен превышать 5Мб');
        $imageinfo = getimagesize($_FILES['image']['tmp_name']);
        $arr = array('image/jpeg','image/gif','image/png'); // массив допустимых форматов
        if(!in_array($imageinfo['mime'],$arr)) { 
            echo ('Картинка должна быть формата JPG, GIF или PNG');
        } else {
            $upload_dir = 'images/'; //имя папки с картинками
            $name = $upload_dir.date('YmdHis').rand(100,1000).'.png'; // переименовываем файл чтоб исключить повторы имен
            $mov = move_uploaded_file($_FILES['image']['tmp_name'],$name); // перемещаем файл
            if($mov) {
                mysqli_query($link, "INSERT INTO `table_name` (`title`, `meta_d`, `meta_kw`, `text`, `image`) VALUES ('".$title."', '".$meta_d."', '".$meta_kw."', '".$text."', '".$image."')");
            } else {
                echo 'Произошла ошибка при загрузке фотографии. Пожалуйста, попробуйте снова';
            } 
        }
        
        
 if (empty($title) or empty($meta_d) or empty($meta_kw) or empty($text)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
    {
    exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
    }
 // подключаемся к базе
    include ("secret/db_connect.php");
 // если такого нет, то сохраняем данные
    $result2 = mysql_query ("INSERT INTO all_news (title,meta_d,meta_kw,text,image) VALUES('$title','$meta_d','$meta_kw','$text','$image')");
 // Проверяем, есть ли ошибки
    if ($result2=='TRUE')
    {
    echo "Вы успешно добавили новость!<br><a href='index.php'>Главная страница</a><br><a href='news_add.php'>Добавить новость</a>";
    }
 else {
    echo "Ошибка!";
    }
    ?>
Добавлено через 35 секунд
Чтобы изображение в папку сохранялось
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
03.02.2016, 14:20
Цитата Сообщение от Karen-Bekker Посмотреть сообщение
$mov = move_uploaded_file($_FILES['image']['tmp_name'],$name); // перемещаем файл
эта строка сохраняет изображение в директории (по уровню в которой находится сам скрипт обработчик) в папку
Цитата Сообщение от Karen-Bekker Посмотреть сообщение
$upload_dir = 'images/';
проверь правильность указания пути, скрипт рабочий
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.02.2016, 14:20
Помогаю со студенческими работами здесь

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

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

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

Получение изображений из базы данных AJAX
Всем привет, как получить фотографии из базы данных, используя AJAX во View?

Вставка изображений в pictureBox и datagridview из базы данных
Здравствуйте! Ситуацию такая: в базе данных есть таблица с полем nvarchar и в нем хранятся НАЗВАНИЯ картинок(картинка.jpg). Картинки...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
моя боль
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/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru