Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отобразить картинку в браузере 
V
    Опции темы
WERITAS
Дата 24.5.2009, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

Репутация: нет
Всего: 5



Доброго времени суток. У меня в таблице БД (MySQL) есть поле blob для хранения картинки. Картинка (тип jpeg) добавляется без проблем, а вот отобразить результат никак не получается. У меня в браузерах (IE, Opera) вместо картинки квадратик с красным крестиком.
Для работы с БД используя фреймворк adodb.

Вот код:
insert.php
Код

<?php
function ShowRecord($pos_name, $dep_name) // извлечение данных из БД
    {
        include('myconfig.php'); // конфигурационный файл с настройками
        
        $db = ADONewConnection($__DRIVER__);
        $db->Connect($__SERVER__, $__USER__, $__PASSWORD__, $__DATABASE__);
    
        if(!$db) die("Connection error");
        
        $sql_query = "SELECT data 
                      FROM pos 
                      WHERE pos_name='$pos_name' AND dep_name='$dep_name'";
        
        $rs = $db->Execute($sql_query);
        
        echo $rs->fields[0]; // Что надо сделать с этими данными прежде, чем вывести их на экран??
        
    }
?>


Скрипт, при вызове которого должна отобразиться картинка в браузере
view.php
Код

<?php
        header("Content-Type: image/jpeg");
    
    include('insert.php');
    
    ShowRecord("Indesit123", "Бытовая техника");
?>




Это сообщение отредактировал(а) WERITAS - 24.5.2009, 19:19


--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
unicross
Дата 24.5.2009, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 422
Регистрация: 15.6.2008

Репутация: 5
Всего: 53



Цитата

есть поле blob для хранения картинки

Не маловато ли поле blob для картинки то?

Это сообщение отредактировал(а) unicross - 24.5.2009, 20:05
PM MAIL WWW   Вверх
WERITAS
Дата 24.5.2009, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

Репутация: нет
Всего: 5



Я в редакторе для БД проверил поле с картинкой - в окне редактора всё отображается нормально, то есть записалась она туда хорошо. А в браузере не хочет показываться ((( Посмотрел примеры в сети, везде просто читают из БД и отображают с помощью echo, а у меня так не получается (((((


--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
unicross
Дата 24.5.2009, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 422
Регистрация: 15.6.2008

Репутация: 5
Всего: 53



Значит у вас ошибка в скрипте
Код

        $sql_query = "SELECT `data` 
                      FROM `pos` 
                      WHERE `pos_name`='$pos_name' AND `dep_name`='$dep_name'";

А если так?
PM MAIL WWW   Вверх
WERITAS
Дата 24.5.2009, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

Репутация: нет
Всего: 5



Цитата(unicross @  24.5.2009,  20:29 Найти цитируемый пост)
А если так? 

Не помогло((((

Заметил странную вещь. Я изменил скрипт, где идет выборка данных следующим образом:
insert.php
Код

<?php
        include('myconfig.php'); // конфигурационный файл с настройками
        
        $db = ADONewConnection($__DRIVER__);
        $db->Connect($__SERVER__, $__USER__, $__PASSWORD__, $__DATABASE__);
    
        if(!$db) die("Connection error");
        
        $sql_query = "SELECT data 
                      FROM pos 
                      WHERE pos_name='$pos_name' AND dep_name='$dep_name'";
        
        $rs = $db->Execute($sql_query);
        
        $bfile = fopen("from_bd.dat", "w");
    fwrite($bfile, $rs->fields[0]);
    fclose($bfile);
    echo readfile("from_bd.dat");
?>


Если файл со скриптом, который я вызываю из браузера, оставить как есть, то есть
view.php
Код

<?php
    header("Content-Type: image/jpeg");
    include('insert.php');
    ShowRecord("Indesit123", "Бытовая техника");

В браузере по прежнему квадрат с красной меткой вместо рисунка, а если изменить вот так:
view.php
Код

<?php
    header("Content-Type: image/jpeg");
    include('insert.php');
    echo readfile("from_bd.dat");

то всё отображается. Значит всё-таки верные данные хранятся в базе, если они будучи записанными в файл, потом отображаются. Непонятно только почему сразу же не получается отобразить рисунок из файла ещё в insert.php





--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
WERITAS
Дата 24.5.2009, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

Репутация: нет
Всего: 5



Получается, что один и тот же файл в двух скриптах читается по-разному...  smile 


--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
bars80080
Дата 24.5.2009, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



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


а как выглядит код в который картинка вставляется?
PM MAIL WWW   Вверх
WERITAS
Дата 24.5.2009, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

Репутация: нет
Всего: 5



Ура! Я всё сделал!!! Надо было вызвать функцию очистки буффера  smile  smile 

Вот решение:
Код

    function ShowRecord($pos_name, $dep_name) // извлечение данных из БД
    {
        include('myconfig.php');
        
        $db = ADONewConnection($__DRIVER__);
        $db->Connect($__SERVER__, $__USER__, $__PASSWORD__, $__DATABASE__);
    
        if(!$db) die("Connection error");
        
        $sql_query = "SELECT data 
                      FROM pos 
                      WHERE pos_name='$pos_name' AND dep_name='$dep_name'";

        $rs = $db->Execute($sql_query);
        
        ob_clean(); // очистка буффера
        echo $rs->fields[0];
        
        
    }


А вот вызов функции:
Код

    header("Content-Type: image/jpeg");
    
    include('insert.php');
    
    ShowRecord("ASUS", "Ноутбук");



Цитата(bars80080 @  24.5.2009,  22:16 Найти цитируемый пост)
тихий ужас конечно. хранить в базе, записывать в файл, а затем прокачивать через скрипт. всё сделано для максимальной нагрузки на сервер

"Не-не-не, Дэвид Блейн" (с)
smile В файл просто так сохранял, чтобы проверить как работает и всё :- )))



--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0817 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.