![]() |
MySQL, BLOB и PHP...
Есть база MySQL в ней хранятся в одном из полей типа BLOB в одной из таблиц картинки, дык как мне получить её оттуда и отобразить на страничке?
С радостью посмотрю на пример скрипта (желательно на PHP) а не на совет RTFM. Как вобще работать с BLOB полями? |
альтернативный вариант
хмм... я вообще всегда храню картинки как файлы, а в базу кидаю только имя файла и если нужно директорию в которой он хранится... мне так проще, да и на базу куда меньше нагрузка...
|
Это конечно всё хорошо, и хранить линки в базе - проверенный способ, НО есть ситуация и надобно решение... Кроме того, с точки зрения скажем целостности данных есть смысл хранить картинки в базе, то есть делая бэкап базы ты практически сохраняешь всё что у тебя есть одним движением... Можно ещё и загонять в базу сами скрипты :) К примеру в отдельной таблице в поля типа TEXT.
Но опять таки, есть у меня такой вопрос и мне нужна помощь... |
Это делается на PHP без проблем и элементарно.
Код:
$base=mysql_connect("хост","логин","пароль");А вот при добавлении двоичных данных (картинок в том числе) в базу, надо не забыть предварительно, применить на них ф-цию addslashes, иначе ничего хорошего не выйдет. |
Стопчик... А если мне надо вставить полученную картинку в строку типа
Код:
<img src="вот сюда мне надо вставить то что я из базы получил"> |
Ещё проще. Если, например, весь вышеназванный скрипт назвать pixa.php, то пишешь так
Код:
<img src="pixa.php"> |
На самом деле для браузера значение имеет не столько расширение файла, сколько его mime тип. Этот тип передаётся с сервера в заголовке файла. Обычно сервер определяет этот тип по расширению файла на сервере. Но в этом случае мы послылаем ему тот тип, который нам нужен (Content-type: image/jpeg) из скрипта.
|
Это - единственный путь? :(
Просто получается я должен через что-то (скажем через адресную строку) передать в некий скрипт id картинки вызывая его-же из другого скрипта :) Ну, впрочем могло быть и хуже, большое спасибо! |
ну дык... зачем передавать через адресную строку...
можно ведь просто сказать, <img src="pixa.php?id=15"> |
Это я понимаю :) В конечном итоге имеем что-то такое:
take_img.php PHP код:
PHP код:
|
Ну вобщем да, так оно обычно и делается, хотя варианты всегда есть. Если ты хочешь, например, чтоб у тебя был только один скрипт - сделай один, чтоб с одним параметром выводился текст, с другим - картинка, и вызывай его из него самого.
Кстати, обрати внимание, например, на свойства картинки - аватара слева. Вот его урл http://imho.ws/avatar.php?userid=193...ine=1041493111 Тот же принцип :) |
$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 хэш какой-нидь, чтобы кэширование избегать |
Какой файлнейм? Откуда? У меня двоичные данные в ячейке таблицы в БД хранятся, откуда там имя файла? :)
Но есть ещё нюанс... Если тип поля BLOB и стоит NOT NULL то как мне проверить есть в ячейке данные или нет? Проверять на пустую строку? Или на что? И ещё, раз пошла такая пьянка :) Как ВНОСИТЬ данные в ячейку типа BLOB в MySQL при помощи PHP... Тогда эта тема будет законченной и готовой для FAQ если таковые кто-то тут делает... :) |
Черт, столько статей на сайтах по ПХП про то как работать с картинками в базе ...
http://php.spb.ru/php/image.html http://ardzhan.km.ru/doc/library.php?id=146 |
Ну извини что вывел тебя из себя, что ты даже чертыхаться стал... Прошу прощения что побеспокоил Вашу светлость, спасибо за линки.
|
| Часовой пояс GMT +4, время: 20:55. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.