imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 04.03.2003, 00:14     # 1
Ku6ep
Guest
 
Сообщения: n/a

Question MySQL, BLOB и PHP...

Есть база MySQL в ней хранятся в одном из полей типа BLOB в одной из таблиц картинки, дык как мне получить её оттуда и отобразить на страничке?
С радостью посмотрю на пример скрипта (желательно на PHP) а не на совет RTFM. Как вобще работать с BLOB полями?
 
Старый 04.03.2003, 01:08     # 2
Aeon
::VIP::
 
Аватар для Aeon
 
Регистрация: 28.06.2002
Адрес: neverwhere
Сообщения: 1 166

Aeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собой
альтернативный вариант

хмм... я вообще всегда храню картинки как файлы, а в базу кидаю только имя файла и если нужно директорию в которой он хранится... мне так проще, да и на базу куда меньше нагрузка...
Aeon вне форума  
Старый 04.03.2003, 01:14     # 3
Ku6ep
Guest
 
Сообщения: n/a

Это конечно всё хорошо, и хранить линки в базе - проверенный способ, НО есть ситуация и надобно решение... Кроме того, с точки зрения скажем целостности данных есть смысл хранить картинки в базе, то есть делая бэкап базы ты практически сохраняешь всё что у тебя есть одним движением... Можно ещё и загонять в базу сами скрипты К примеру в отдельной таблице в поля типа TEXT.
Но опять таки, есть у меня такой вопрос и мне нужна помощь...
 
Старый 04.03.2003, 01:15     # 4
penguin
Птица в сети
 
Аватар для penguin
 
Регистрация: 25.11.2001
Адрес: Днепропетровск
Сообщения: 39

penguin Путь к славе только начался
Это делается на PHP без проблем и элементарно.
Код:
$base=mysql_connect("хост","логин","пароль");
mysql_select_db("имя базы");
$result=mysql_query("SELECT picture FROM pix WHERE id=1"); // здесь напиши свой запрос, для получения содержимого поля BLOB с картинкой
mysql_close($base);

$line=mysql_fetch_row($result);
$pic=$line[0];
header("Content-type: image/jpeg");
echo($pic);
И все дела.

А вот при добавлении двоичных данных (картинок в том числе) в базу, надо не забыть предварительно, применить на них ф-цию addslashes, иначе ничего хорошего не выйдет.
penguin вне форума  
Старый 04.03.2003, 01:22     # 5
Ku6ep
Guest
 
Сообщения: n/a

Стопчик... А если мне надо вставить полученную картинку в строку типа
Код:
 <img src="вот сюда мне надо вставить то что я из базы получил">
тогда как действовать? Потому как в твоём варианте (спасибо кстати) декодированием данных из базы собственно в имедж занимается браузер...
 
Старый 04.03.2003, 01:35     # 6
penguin
Птица в сети
 
Аватар для penguin
 
Регистрация: 25.11.2001
Адрес: Днепропетровск
Сообщения: 39

penguin Путь к славе только начался
Ещё проще. Если, например, весь вышеназванный скрипт назвать pixa.php, то пишешь так
Код:
<img src="pixa.php">
penguin вне форума  
Старый 04.03.2003, 01:45     # 7
penguin
Птица в сети
 
Аватар для penguin
 
Регистрация: 25.11.2001
Адрес: Днепропетровск
Сообщения: 39

penguin Путь к славе только начался
На самом деле для браузера значение имеет не столько расширение файла, сколько его mime тип. Этот тип передаётся с сервера в заголовке файла. Обычно сервер определяет этот тип по расширению файла на сервере. Но в этом случае мы послылаем ему тот тип, который нам нужен (Content-type: image/jpeg) из скрипта.
penguin вне форума  
Старый 04.03.2003, 01:53     # 8
Ku6ep
Guest
 
Сообщения: n/a

Это - единственный путь?
Просто получается я должен через что-то (скажем через адресную строку) передать в некий скрипт id картинки вызывая его-же из другого скрипта
Ну, впрочем могло быть и хуже, большое спасибо!
 
Старый 04.03.2003, 01:59     # 9
Aeon
::VIP::
 
Аватар для Aeon
 
Регистрация: 28.06.2002
Адрес: neverwhere
Сообщения: 1 166

Aeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собой
ну дык... зачем передавать через адресную строку...
можно ведь просто сказать, <img src="pixa.php?id=15">
Aeon вне форума  
Старый 04.03.2003, 02:12     # 10
Ku6ep
Guest
 
Сообщения: n/a

Это я понимаю В конечном итоге имеем что-то такое:

take_img.php
PHP код:
if($id){
$db=mysql-connect("localhost""root");
mysql_select_db("mydb");
$result=mysql_query("SELECT picture FROM images WHERE id=$id");
$row=mysql_fetch_array($result);
$pic=$row["picture"];
header("Content-type: image/jpeg");
echo(
$pic);

paste_img.php
PHP код:
<?
$id=1;
?>
<img src="<?echo "take_img.php?id=$id";?>">
 
Старый 04.03.2003, 02:19     # 11
penguin
Птица в сети
 
Аватар для penguin
 
Регистрация: 25.11.2001
Адрес: Днепропетровск
Сообщения: 39

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

Кстати, обрати внимание, например, на свойства картинки - аватара слева. Вот его урл

http://imho.ws/avatar.php?userid=193...ine=1041493111

Тот же принцип
penguin вне форума  
Старый 04.03.2003, 17:29     # 12
Stasik
Registered User
 
Аватар для Stasik
 
Регистрация: 27.03.2002
Адрес: дома
Сообщения: 1 660

Stasik Известность не заставит себя ждатьStasik Известность не заставит себя ждать
$extension=strtolower(substr(strrchr($filename,"."),1));
if ($extension=='gif') {
header('Content-type: image/gif');
} elseif ($extension=='jpg' or $extension=='jpeg') {
header('Content-type: image/jpeg');
} elseif ($extension=='png') {
header('Content-type: image/png');
}

во

и как и VB приделывать надо к УРЛУ или дату или md хэш какой-нидь, чтобы кэширование избегать
__________________
Всё будет хорошо!
Stasik вне форума  
Старый 04.03.2003, 18:10     # 13
Ku6ep
Guest
 
Сообщения: n/a

Какой файлнейм? Откуда? У меня двоичные данные в ячейке таблицы в БД хранятся, откуда там имя файла?
Но есть ещё нюанс... Если тип поля BLOB и стоит NOT NULL то как мне проверить есть в ячейке данные или нет? Проверять на пустую строку? Или на что?
И ещё, раз пошла такая пьянка Как ВНОСИТЬ данные в ячейку типа BLOB в MySQL при помощи PHP... Тогда эта тема будет законченной и готовой для FAQ если таковые кто-то тут делает...
 
Старый 05.03.2003, 16:59     # 14
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Черт, столько статей на сайтах по ПХП про то как работать с картинками в базе ...

http://php.spb.ru/php/image.html
http://ardzhan.km.ru/doc/library.php?id=146
RaZEr вне форума  
Старый 05.03.2003, 23:31     # 15
Ku6ep
Guest
 
Сообщения: n/a

Ну извини что вывел тебя из себя, что ты даже чертыхаться стал... Прошу прощения что побеспокоил Вашу светлость, спасибо за линки.
 


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 21:02.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.