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

Форум PHP

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

 

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

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

тема: Изображение по умолчанию
 
 автор: Денис2009   (10.09.2011 в 10:18)   письмо автору
 
 

Приветствую ! У меня проблема. Сделал сайт объявлений, там есть фото, текст объявлений, дата, телефон, юзер. Проблема в том, что если пользователь не добавляет фото, нужно сделать так, чтобы выводилась картинка по умолчанию. Картинки у меня хранятся в базе, поле image mediumblob. почему именно в базе, потому что объявления обновляются каждый день, и те объявления которые старше 7 дней они удаляются. Вот PHP код для вывода картинки из базы:
<?php
include("db.php");
if ( isset( $_GET['id'] ) ) {
$id = (int)$_GET['id'];
if ( $id > 0 ) {
$query = "SELECT `image` FROM `nkjsg` WHERE `id`=".$id;
$res = mysql_query($query);
if ( mysql_num_rows( $res ) == 1 ) {
$image = mysql_fetch_array($res);
header("Content-type: image/*");
echo $image['image'];
}
}
}
?>
пробовал сделать условие что если $query пуста то выводится картинка из другой таблицы, но что то не получается, по всякому пробовал, и ни как чё то не хочет. Может кто то и подскажет как решить эту проблему. Заранее спасибо

  Ответить  
 
 автор: Киналь   (10.09.2011 в 10:44)   письмо автору
 
   для: Денис2009   (10.09.2011 в 10:18)
 

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

Так это и делается. Что именно не получается? Как именно делали?

  Ответить  
 
 автор: Денис2009   (10.09.2011 в 10:52)   письмо автору
 
   для: Киналь   (10.09.2011 в 10:44)
 

<?php
include("db.php");
if ( isset( $_GET['id'] ) ) {
$id = (int)$_GET['id'];
if ( $id > 0 ) {
$query = "SELECT `image` FROM `OB` WHERE `id`=".$id;
if ( isset( $_GET['image'] ) ) {
$query = (int)$_GET['image'];
if ( $query > 0 ) {
$query = "SELECT `image` FROM `rps` WHERE `id`=1";
$res = mysql_query($query);
if ( mysql_num_rows( $res ) == 1 ) {
$image = mysql_fetch_array($res);
header("Content-type: image/*");
echo $image['image'];
}
}
}
$res = mysql_query($query);
if ( mysql_num_rows( $res ) == 1 ) {
$image = mysql_fetch_array($res);
header("Content-type: image/*");
echo $image['image'];
}
}
}
?>
вот так.

  Ответить  
 
 автор: Киналь   (10.09.2011 в 11:18)   письмо автору
 
   для: Денис2009   (10.09.2011 в 10:52)
 

Как вы экономите имена переменных) Сплошные $query. Лучше, всё-таки, давать разные имена.

Только я логику не понял. Сначала вы формируете запрос на картинку из таблицы "OB" с выборкой по id. Потом, если есть GET-параметр image, то запрос уже к "rps" для записи с id=1. После этого выполняете получившийся запрос. А потом почему-то ещё раз выполняете, уже безо всяких проверок. Вы именно такой алгоритм имели в виду?

И да, оформляйте, пожалуйста, код в тегах [ code ].

  Ответить  
 
 автор: Денис2009   (10.09.2011 в 11:22)   письмо автору
 
   для: Киналь   (10.09.2011 в 11:18)
 

если честно я уже запутался голова не соображает, поэтому и написал в форум
[ code ]<?php [ code ]
[ code ]include("db.php"); [ code ]
[ code ]if ( isset( $_GET['id'] ) ) { [ code ]
[ code ] $id = (int)$_GET['id']; [ code ]
[ code ] if ( $id > 0 ) { [ code ]
[ code ] $query = "SELECT `image` FROM `OB` WHERE `id`=".$id; [ code ]
[ code ]else {$query=""; $q = "SELECT `image` FROM `rps` WHERE `id`=1"; [ code ]
[ code ] $r = mysql_query($q); [ code ]
[ code ] if ( mysql_num_rows( $r ) > 0) { [ code ]
[ code ] $i = mysql_fetch_array($r); [ code ]
[ code ] header("Content-type: image/*"); [ code ]
[ code ] echo $i['image']; [ code ]
[ code ] } [ code ]
[ code ] } [ code ]
[ code ] $res = mysql_query($query); [ code ]
[ code ] if ( mysql_num_rows( $res ) > 0) { [ code ]
[ code ] $image = mysql_fetch_array($res); [ code ]
[ code ] header("Content-type: image/*"); [ code ]
[ code ] echo $image['image']; [ code ]
[ code ] } [ code ]
[ code ] } [ code ]
[ code ]} [ code ]
[ code ]?> [ code ]
так тоже не работает

  Ответить  
 
 автор: Киналь   (10.09.2011 в 11:36)   письмо автору
 
   для: Денис2009   (10.09.2011 в 11:22)
 

Как говорили в старые добрые времена, в этом случае нужно сходить попить чаю=)

Начинать всегда надо со словесного описания алгоритма. Можно его даже записать или нарисовать. Итак, что вам нужно? Смею предположить, что примерно следующее:
- если есть id, то запросить картинку, соответствующую id;
- если нет id, то выдать дефолтную картинку.

Верно?

Формализуем.

<?php
$id 
= (int)$_GET['id'];
if (
$id 0// если указан id
{
 
$q "SELECT `image FROM `users` WHERE id=`$id`";  // запрос картинки из базы по id
 
$res mysql_query($q) or die(mysql_error()); // если что-то не так, то стоп
 
if (mysql_num_rows($res) == 0) die('Нет такой буквы в этом слове!'); // если такого id нет, то стоп
 
$image $mysql_result($res0); // получили кратинку по id
}
else 
// id не указан
{
 
$image = <здесь что-то типа base64encode('default_filename.jpg'), не помню синтаксисизвините>
}

// теперь отдаём картинку пользователю
header("Content-type: image/*"); 
 echo 
$image['image'];
?>

  Ответить  
 
 автор: Денис2009   (10.09.2011 в 11:41)   письмо автору
 
   для: Киналь   (10.09.2011 в 11:36)
 

не много не так, id то есть в любом случае потому что в баезе есть id telefon text user data но нет image. поле есть но оно пустое blob 0 байт

  Ответить  
 
 автор: Денис2009   (10.09.2011 в 11:45)   письмо автору
 
   для: Денис2009   (10.09.2011 в 11:41)
 

если id вообще в данной таблице не существует, то выводится страница с сообщением "В этом разделе пока ещё нет объявлений, Вы можете добавить объявления в этот раздел." и ссылка к форме

  Ответить  
 
 автор: Киналь   (10.09.2011 в 12:14)   письмо автору
 
   для: Денис2009   (10.09.2011 в 11:41)
 

Так подправьте немного скрипт) Это же только пример. Сделайте проверку не на существование id, а на непустоту image.

  Ответить  
 
 автор: Денис2009   (10.09.2011 в 12:17)   письмо автору
 
   для: Киналь   (10.09.2011 в 12:14)
 

хорошо спасибо, попробую. : )

  Ответить  
 
 автор: Денис2009   (10.09.2011 в 15:23)   письмо автору
 
   для: Денис2009   (10.09.2011 в 12:17)
 

Ура ! ! ! ! ! ! ! ! З А Р А Б О Т А Л А ! ! ! ! вот код
code
<?php
include("db.php");
$id = (int)$_GET['id'];
$query = "SELECT `image` FROM `OB` WHERE `id`=".$id;
$res = mysql_query($query);
if ( mysql_num_rows( $res ) == 1 ) {
$image = mysql_fetch_array($res);
header("Content-type: image/*");
echo $image['image'];
}
if ($res <= "0"); header("Location: http://site.ru/00000.jpg");
?>
/code

  Ответить  
 
 автор: Киналь   (10.09.2011 в 15:52)   письмо автору
 
   для: Денис2009   (10.09.2011 в 15:23)
 

Работает и хорошо) Хотя, конечно, не совсем всё корректно и грамотно, но это уж потом освоите)

  Ответить  
Rambler's Top100
вверх

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