[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: проблема: вывод изображения
lastalert
В БД есть поле, которое содержит названия изображений (напр. image_1.jpeg). Так же есть папка с картинками.
Проблема в том, что не получается вывести картинку на экран. В браузере только пустой квадрат с текстом "изображение" blink.gif


<?php

include 'settings.php';

$res = mysql_query("SELECT `img` FROM `table` WHERE cat_id='$cat_id' AND pid='$pid'", $db);
$row = mysql_fetch_assoc($res);

if (!res) echo "Ошибка подключения к базе данных";

$filename = "./files/".$row['img'];
if (file_exists($filename)) {
header("Content-type: image/jpeg");
echo "<img src=\"./files/".$row['img']\">";
}
else {
echo "Файл ".$filename." не существует";
}

?>


P/S/ не в ту категорию отпостил. извините за невнимательность...



Спустя 5 минут, 14 секунд (11.06.2010 - 20:22) Unlikely написал(а):
Значит путь не правильный. Разберись с строкой "./files/" попробуй точку убрать.

echo "<img src=\"./files/".$row['img']\">"; тут ошибка.

Спустя 3 минуты, 41 секунда (11.06.2010 - 20:26) Unlikely написал(а):
echo "<img src=\"./files/".$row['img']."\">";

Спустя 2 минуты, 48 секунд (11.06.2010 - 20:29) lastalert написал(а):
Unlikely, заменил строку, но ничего не изменилось. Сообщений об ошибках тоже нет.
не могу понять в чем дело

Спустя 4 минуты, 40 секунд (11.06.2010 - 20:34) Unlikely написал(а):
Значит действительно путь неверный.

Где расположены картинки? http://site/files/ ?
Где расположен скрипт? поподробней.

Спустя 1 минута, 22 секунды (11.06.2010 - 20:35) Unlikely написал(а):
if (!res) echo "Ошибка подключения к базе данных"; тоже ошибка, переменная неправильно прописана.

Спустя 2 минуты, 2 секунды (11.06.2010 - 20:37) Unlikely написал(а):
header("Content-type: image/jpeg"); думаю не нужен. Кстати может быть что в нём проблема.

Спустя 3 минуты, 22 секунды (11.06.2010 - 20:40) lastalert написал(а):
site/files - здесь картинки
site/demo.php - это скрипт

закомментил хедер, исправил if... ситуация та же

Спустя 2 минуты, 58 секунд (11.06.2010 - 20:43) Rand написал(а):
<?php

include 'settings.php';

$res = mysql_query("SELECT `img` FROM `table` WHERE cat_id='$cat_id' AND pid='$pid'", $db);
$row = mysql_fetch_assoc($res);

if (!$res) echo "Ошибка подключения к базе данных";

$filename = "./files/".$row['img'];
if (file_exists($filename)) {
header("Content-type: image/jpeg");
readfile($filename);
}
else {
echo "Файл ".$filename." не существует";
}

?>

Спустя 3 минуты, 47 секунд (11.06.2010 - 20:47) lastalert написал(а):
Rand, спасибо. Теперь работает =)

Спустя 1 минута, 49 секунд (11.06.2010 - 20:49) Unlikely написал(а):
Rand
Эээ.. А как ты догадался что именно так надо вывести картинку? А не через img?)

Спустя 6 минут, 24 секунды (11.06.2010 - 20:55) lastalert написал(а):
работало только в том случае, если прописать полный путь к картинке:
$filename = "./files/image_1.jpeg";

когда пишу
$filename = "./files/".$row['img'];

то та же фигня...
мб оно расширение файла не понимает.

в ПМА расширения файлов не записалось, есть только названия картинок.

Спустя 14 минут, 24 секунды (11.06.2010 - 21:10) Rand написал(а):
Unlikely
Потому как header("Content-type: image/jpeg") означает, что в теле HTTP запроса должно быть только содержимое файла изображения и ничего более (никаких левых строк и HTML!) Если нужна именно картинка в теге img, то тогда без всяких заголовков:
if (file_exists($filename)) {
echo "<img src=\"".$filename."\">";
}

lastalert
ПМА - всмысле phpMyAmin? Ну смотри, значит, код добавления. Этот код работоспособный.

Спустя 25 минут, 27 секунд (11.06.2010 - 21:35) lastalert написал(а):
Rand, вот код:

/****************/
$filename = "./files/".$row['img'];
if (file_exists($filename)) {
header("Content-type: image/jpeg");
readfile($filename);
}
/*******************/

в phpMyAmin для картинок VARCHAR(50) и в значение пишу с указанием расширения название.jpeg.
Выводит пустой квадрат. имхо, скрипт не может подставить расширение изображения.

Спустя 12 минут, 33 секунды (11.06.2010 - 21:48) Rand написал(а):
Код, который ты приводишь, рабочий.
Закомментируй его и напиши
echo $row['img'];
Посмотри, есть ли там расширение - если нет, то имя файла выбирается из базы без расширения. В таком случае удостоверься, что в записи которую ты выбираешь - действительно есть расширение. Для этого выведи на экран переменную $pid и посмотри строчку с этим значением в phpmyadmin, может быть ты дописал расширение совсем для другой записи?

Спустя 55 минут, 31 секунда (11.06.2010 - 22:43) lastalert написал(а):
демоскрипт рабочий, а вот когда пытаюсь прикрутить его к сайту, то не работает.
там что-то не так с $_GET запросом.
Не работает:
$res = mysql_query("SELECT `img` FROM `table` WHERE cat_id='$cat_id' AND pid='$pid'", $db);


Так работает:
$res = mysql_query("SELECT `img` FROM `table` WHERE cat_id='1' AND pid='1'", $db);



$cat_id = (int)$_GET['cat_id'];
$pid = (int)$_GET['pid'];

if (isset($_GET['cat_id'], $GET['pid'])) {

include 'demo.php'; // скрипт вывода картинок и прочей инфы

} else {

//

}


Спустя 10 часов, 6 минут, 11 секунд (12.06.2010 - 08:49) Rand написал(а):
Этот кусок тоже вполне работоспособен - кроме
if (isset($_GET['cat_id'], $GET['pid']))
Пропустил "_" в $_GET['pid']. И isset я бы здесь не использовал, т.к. если значение переменных не число, они приравниваются к нулю и demo.php всё равно будет загружен. Лучше сделать
if(!empty($_GET['cat_id'])&&!empty($_GET['pid']))
Остальное всё нормально, что-то большие можно будет сказать, если покажешь кусок html, где у тебя формируются гет-переменные (форма или ссылки)


_____________
...think about your actions.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.