Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Картинка из базы не выводится на сайт. Выводится место под нее.
 
 автор: gost   (02.12.2005 в 01:23)   письмо автору
 
 

У меня такая проблема:
Картинки из базы не выводятся на страницы сайта, вернее сказать в месте, где должна быть картинка
я вижу только место под эту картинку с красным крестиком.
В денвере у меня все прет без вопросов.
Текстовые данные на сайт из таблицы выводятся.
В чем дело?
домен : www.bigskidka.ru
Откуда я вообще могу закачивать картинки? С жесткого диска она как бы приходит - я вижу, что в базе под картинку занято сколько- то места, но картинку в базе я не вижу как саму по себе.
Версия PHPMYAdmin 2.6.4-pl2 не позволяет прямо в базе задавать типы MIME - эти типы я задаю на cpanel
тип поля картинки задан как mediumblob
Админ ответил, что типа где- то мне надо задать chmod - права доступа - а где это делается и как?
Это php или еще что - в cpanel я это не нашла.
Помогите, плиз!

   
 
 автор: cheops   (02.12.2005 в 01:42)   письмо автору
 
   для: gost   (02.12.2005 в 01:23)
 

Пока не очень понятно...
1) В базе хранится путь к картинки или само бинарное содержимое?
2) Как выводится картинка на страницу?

   
 
 автор: gost   (02.12.2005 в 01:50)   письмо автору
 
   для: cheops   (02.12.2005 в 01:42)
 

ответ1. помещаю картинку в базу, указывая путь с ж.диска моего локального компьютера. База находится на сервере моего хоста.
ответ2.
соединение с базой есть,
в файле картинка выводится вот такой строкой:

<img src=http://www.bigskidka.ru/view.php?id=$row[id]>

файл view.php

<?php
header 
("Content-type: image/gif");
include 
'1.php' ;
$res=mysql_query(" SELECT  *   FROM PROBA WHERE id=$_GET[id] ");
while(
$row=mysql_fetch_array($res)){
echo 
$row['pix']; 
};
?>

   
 
 автор: cheops   (02.12.2005 в 13:34)   письмо автору
 
   для: gost   (02.12.2005 в 01:50)
 

1) В HTML-коде конечной странице id - заполнен?
2) При непосредственном обращении к картинке по адресу http://www.bigskidka.ru/view.php?id=1 - она выводится?

   
 
 автор: sunela   (24.02.2006 в 16:13)   письмо автору
 
   для: cheops   (02.12.2005 в 13:34)
 

Выводится крестик на странице. Извините, что сно к этой теме взвращаюсь но столько времени прошло, а я так и немогу доделать сайт.

   
 
 автор: elenaki   (24.02.2006 в 16:54)   письмо автору
 
   для: sunela   (24.02.2006 в 16:13)
 

так, а что все-таки в HTML-коде? или в свойствах этого крестика? какой там путь?

   
 
 автор: sunela   (26.02.2006 в 14:09)   письмо автору
 
   для: elenaki   (24.02.2006 в 16:54)
 

Вот теперь я уже просто пишу вывод из базы
пишу простейший запрос - вообще без всего типа
<?php
include '1.php' ;
$res=mysql_query(" SELECT * FROM pix");
if(!$res) exit(mysql_error());
while($row=mysql_fetch_assoc($res)){
echo $row['id'];
header ('Content-type: image/gif');
echo $row['pix'];
};
?>

Сложного вообще ничего нет-
Выдается информация
Warning: Cannot modify header information - headers already sent by
Это что функция header не подключена?
Текст, цифры все выдается, все, кроме картинок.

   
 
 автор: Полный Чайник   (26.02.2006 в 14:51)   письмо автору
 
   для: sunela   (26.02.2006 в 14:09)
 

в файле 1.php у вас что?

   
 
 автор: elenaki   (26.02.2006 в 14:58)   письмо автору
 
   для: sunela   (26.02.2006 в 14:09)
 

ненавижу заголовки. не используйте их, если не умеете с ними обращаться. я обхожусь банальным Java-script'ом. по крайней мере уверена, что подобных (Warning: Cannot modify header information - headers already sent by) ошибок никогда не вылезет.


без header'a что-нибудь выводит?

вы делаете следущее после запроса:
1. выводите $row['id']; (номер картинки?)
2. вызываете заголовок (header), который обычно вызывают для переадресации, к тому же заголовок не будет работать, если перед ним есть какой-то вывод в бразуер. а у вас - echo! к к тому же какйо-то инклуд, в котором тоже, возможно, есть вывод в браузер.
3. опять выводите (теперь уже саму картинку?)

просто echo $row['pix']; что выдает?

   
 
 автор: sunela   (26.02.2006 в 22:02)   письмо автору
 
   для: elenaki   (26.02.2006 в 14:58)
 

Выводит бинарное содержимое файла в виде текста.

   
 
 автор: sunela   (26.02.2006 в 23:01)   письмо автору
 
   для: sunela   (26.02.2006 в 22:02)
 

Файл 1.php- коннект с базой- он работает нормально
на вывод echo $row['id'] - выводятся номера картинок
Без header выводится текст вместо картинки
GIF89add„^.‰)­&oslash;°“&iuml;&#732;&ugrave;&yuml;&ugrave;m&Otilde;pP&Agrave;R&Oslash;&uuml;&Ucirc;.J&acute;I&Eacute;&yacute;&Euml;&aelig;&thorn;&egrave; и так далее
Мне очень кажется, что не работает функция header
Админ хоста написал мне, что я должна чего- то там добавить в файл php.ini
Где его искать ?
И самое главное- чего дописать?
Код исправила на такой:

<?php
include '1.php' ;
$res=mysql_query(" SELECT  *   FROM  pix ");
while(
$row=mysql_fetch_array($res)){
echo 
$row['pix']; 
};
?>


И еще не работает такой код -
$im = imagecreatefromstring($row['pix']);
- проверяла.

   
 
 автор: Trianon   (01.03.2006 в 11:12)   письмо автору
 
   для: sunela   (26.02.2006 в 23:01)
 

По-моему, Вам нужно для начала заставить работать вот такой код (вместо 9999 должен быть реальный номер картинки.
<?php 
  header 
("Content-type: image/gif"); 
  include 
'1.php' 
 
 
$res=mysql_query(" SELECT  *   FROM  pix WHERE id = 9999 "); 
  while(
$row=mysql_fetch_array($res)){ 
 echo 
$row['pix']; 
}; 
?> 

WHERE я добавил для того, чтоб исключить появление в выходном потоке тел сразу нескольких картинок.
Чтобы отлавливать ошибки, нужно не смотреть отклик в браузере, а записать его в файл.
Т.е. написать ссылку на тестируемый код, но не переходить по этой ссылке, а (в терминах IE)клик правой кнопкой, "сохранить объект как..." и записать в файл.

Файл этот затем нужно сравнивать с оригиналом, который Вы заносили в базу через phpMyAdmin.

   
 
 автор: cheops   (26.02.2006 в 23:10)   письмо автору
 
   для: sunela   (26.02.2006 в 14:09)
 

1) Посмотрите нет ли пробелов, переводов строк до тэга <?php - если есть, то удалите...
2) На какую строку ссылается предупреждение?

   
 
 автор: sunela   (26.02.2006 в 23:13)   письмо автору
 
   для: cheops   (26.02.2006 в 23:10)
 

пробелов нет- проверено
Если нет header, то нет никаких строк ошибок вообще- просто
выводится кусок текстовых символов.

   
 
 автор: cheops   (26.02.2006 в 23:19)   письмо автору
 
   для: sunela   (26.02.2006 в 23:13)
 

1) Без header ("Content-type: image/gif"); будут выводится бинарные данные - его добавьте обязательно.
2) А в 1.php до и после тэгов <?php ?> нет пробелов или переводов строк?

   
 
 автор: sunela   (26.02.2006 в 23:28)   письмо автору
 
   для: cheops   (26.02.2006 в 23:19)
 

Вот только добавляю header и так далее, - сразу ошибка в этой строке.
типа:Cannot modify header information - headers already sent by и путь и номер строки соответственно.
Пробелов нет и в файле 1.php тоже.
Это, что , не хватает чего- то на хосте?

   
 
 автор: elenaki   (27.02.2006 в 11:31)   письмо автору
 
   для: sunela   (26.02.2006 в 23:28)
 

так у вас КАРТИНКИ в базе??? не пути к ним?
вот в чем ошибка! у хостера, наверняка, русский Apache!
проблема в кодировках. какие-то символы или цепочки
символов русский Apache воспринимает как специальные.
надо поискать, где-то была тема про вывод из BLOB...

=========================================
http://linuxportal.ru/forums/index.php/t/12511/
=========================================

цитата:

Вобщем, проблема в перекодировке файлов. В конфиге апача надо прописать
CharsetDisable On. Тогда картинки показываются как надо, но не происходит автоматического определения кодировки браузера у юзера, поэтому с большой вероятностью кодировка сервера и юзера не совпадут...Хотя зубры говорят, что перекодирование замедляет работу скриптов.А вообще по=хорошему, надо перенсти скрипт, который возвращает дату картинки и скрипт, который пользуется этим скриптом, перенести куда-нить в отдельный каталог и там в файле access.conf написать про CharsetDisabled On. Тогда перкодирование отключится только в этом каталоге.

   
 
 автор: sunela   (27.02.2006 в 12:46)   письмо автору
 
   для: elenaki   (27.02.2006 в 11:31)
 

Вот еще админ мне ответил:
типа , что надо использовать не header
а output_handler
Что это и с чем его надо есть?
Про апач я ему напишу. Спасибо.

   
 
 автор: sunela   (28.02.2006 в 00:33)   письмо автору
 
   для: sunela   (27.02.2006 в 12:46)
 

Про апач мне аджмин написал, что он не русский.
Так же сказал, чтобы я необольщалась, и конечное ничего для меня лично он переделывать не собирается.
Ту функцию, которую он мне сказал, что люди мол, с неее выводят это output_hendler
-вообще оказалось, что она до версии 4.3 - работала, а теперь работает header как у меня и есть. Кстати, на сервере у него версия 4.4.2 PHP
Его php.ini я со своим сравнила весь, оказалось только что у него не прописан путь к динамически подгружаемой библиотеке расширений, файл вроде называетс я extension
Это имеет критическое значение?

   
 
 автор: Loki   (28.02.2006 в 10:21)   письмо автору
 
   для: sunela   (28.02.2006 в 00:33)
 

а при внесении в базу в файле не могут экранироваться спецсимволы или еще что-нибудь?

   
 
 автор: sunela   (28.02.2006 в 12:31)   письмо автору
 
   для: Loki   (28.02.2006 в 10:21)
 

В базу я вношу картинку непосредственно с помощью My Admin- просто закачиваю ее
с ж.д моего компьютера нажимаю обзор и указываю путь с диска- она вроде как закачивается,
т.к появляется ее размер, хотя визуально я ее не вижу.

   
 
 автор: Loki   (28.02.2006 в 13:34)   письмо автору
 
   для: sunela   (28.02.2006 в 12:31)
 

а размер полностью совпадает с размером файла на диске?
если взять картинку из базы и сохранить в файл - он идентичен исходному?

   
 
 автор: Trianon   (01.03.2006 в 15:28)   письмо автору
 
   для: sunela   (26.02.2006 в 23:13)
 

Кстати, очень может быть, что пробелы у Вас лезут не из основного скрипта, а из файла, включаемого командой include '1.php' . В 1.php (если он подключается ранее вызова header("Content-type:...")) тоже не должно быть пробелов, пустых строк и прочих пустых символов вокруг скобок тегов <?php ?>. У Вас на денвере и у хостера один и тот же 1.php? Врядли...

   
 
 автор: sunela   (01.03.2006 в 22:15)   письмо автору
 
   для: Trianon   (01.03.2006 в 15:28)
 

все наконец- то получилось!
Всем громадное спасибо!
Особенно elenaki, не дали пасть духом в трудную минуту.
Все пришлось переделать- в базу написала просто пути к картинке, а не саму картинку.
Видимо, чего- то у них там на хосте неконтачит с графикой.
Еще по поводу пробелов и переводов строк- все чисто.
Просто есть такие хосты, где не все полный connect.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования