Небольшой вопрос по Cgi

Статус
Закрыто для дальнейших ответов.

Zostr

Member
Регистрация
27.04.2006
Сообщения
10
Ситуация - база кадров на сайте, при запросе какогонибуть кадра берет инфу из майскюль базы по определенным полям и берет картинку из папки где лежит сайт по следущему типу

Код:
<p> <img src="/kadriFOTO/$ID.jpg" ******** ></p>
Тоесть берется картинка с именем который соответствует ID запрашиваемого кадра.
ну допустим ID = 223334 то картинку будет брать 223334.JPG + выводит в таблице всю инфу по кадру 223334

Итак вопрос.
Как сделать чтоб при отсутствии запрашивоемой картинки выводилась картинка 0.jpg
 

Creator

Administrator
Команда форума
Регистрация
03.03.2005
Сообщения
1 745
Просто делаем проверку на существование картинки 223334.JPG, если она есть, то выводим её, если нет, то 0.jpg
Пример на PHP:

Код:
if(file_exists($ID.'.JPG')) $fname=$ID.'.JPG';
else $fname='0.JPG';
 

Zostr

Member
Регистрация
27.04.2006
Сообщения
10
Просто делаем проверку на существование картинки 223334.JPG, если она есть, то выводим её, если нет, то 0.jpg
Пример на PHP:

Код:
if(file_exists($ID.'.JPG')) $fname=$ID.'.JPG';
else $fname='0.JPG';
да впринцепе на ПХП и надо просто голове нето крутилось.
сейчас попробую
З.ы. спасиб
 

Zostr

Member
Регистрация
27.04.2006
Сообщения
10
Извиняюсь что выкладываю тут большой кусок кода но просто возникает вопрос где вставить выше описанный кусок.

Код:
#!/usr/bin/perl

use DBI;
use CGI;

$query = new CGI;

print $query->header();

$id = $query->param('id');
$error = $query->param('error');

if (!$error)
{

$dbh = DBI->connect("dbi:mysql:kadrss", "", "");

$sql = "select * from kadr where id=$id";

$sth = $dbh->prepare($sql);
$rows = $sth->execute();

if($rows)
{
	($id,$t_nom,$fam,$im,$ot,$d_r,$podr,$dolj,$categ)  = $sth->fetchrow_array();
}

$dbh->disconnect();

print << "EOD";

<html>
<head>
<title></title>
<meta http-equiv="Content-Type"
 content="text/html; charset=koi8-r">
</head>
<body bgcolor="#ffffff" link="#006699" vlink="#006699">

<p><img src="/kadry_gif/$t_nom.jpg" align="left" hspace=0"></p>

<left>
<table border=1 cellpadding=0 cellspacing=0>

<tr>
<td align=left valign=top>
ТАБ. НОМЕР:
</td>
<td valign=top>
$t_nom
</td>
</tr>

</table>
</left>
</body>
</html>

EOD
}

else
{
print << "EOD";

<html>
<head>
<title> пЫЙВЛБ </title>
<meta http-equiv="Content-Type"
 content="text/html; charset=koi8-r">
</head>
<body bgcolor="#ffffff" link="#006699" vlink="#006699">


<font face="Verdana,Arial,Helvetica" >
<b>
$error
</b>
</font>
</body>
</html>
EOD
}
тут проблема в том что открытие картинки происходит ао средствам ХТМЛ а надо походу реализовать через FOpen
 

DnAp

self::setDebugMode(true);
Регистрация
30.04.2005
Сообщения
490
Помоему это перл, ну не видел я чтоб DBI к php прикручивали!..
Как я понял можно заменить:
Код:
if($rows)
{
($id,$t_nom,$fam,$im,$ot,$d_r,$podr,$dolj,$categ) = $sth->fetchrow_array();
}
на
Код:
if($rows)
{
($id,$t_nom,$fam,$im,$ot,$d_r,$podr,$dolj,$categ) = $sth->fetchrow_array();
}else{
$id='0';
$t_nom='0';
}
Тоесть если нету записи в бд то показываем нулевую картинку...

Если надо все-же проверить существует она или нет то пишем после того кода:
Код:
if( open(FILE, "/kadry_gif/".$t_nom.".jpg") )# если удалось открыть файл
{
	close(FILE); # закрываем его
}else{
	$t_nom='0'; # в противном случае берем 0
}
ЗЫ
Модеры, перенесите тему в соответствующий раздел..
 

Zostr

Member
Регистрация
27.04.2006
Сообщения
10
DnAp
Спосиб огромное все работает.
Прозьба неудаляйте тему еще день два.
З.ы. Всем еще раз спасибо.
 

Zostr

Member
Регистрация
27.04.2006
Сообщения
10
только вот


Код:
if( open(FILE, "/kadry_gif/".$t_nom.".jpg") )# если удалось открыть файл
{
	close(FILE); # закрываем его
}else{
	$t_nom='0'; # в противном случае берем 0
}

меняет поле т_ном на 0 в выведеной таблицы из БД
но неменяет открывающиюся картинку.

//Тоесть если нету записи в бд то показываем нулевую картинку...
там дело вот в чем, в БД запись есть всегда 8) а вот картинки к этому человеку может и небыть, поэтому если нет кортинки надо чтоб ваводилась картинка 00.jpg (накоторой изображена обезьяна и дан совет обратится в отдел кадров и сделать фото 8)
 

Creator

Administrator
Команда форума
Регистрация
03.03.2005
Сообщения
1 745
Если честно, я не совсем понял:

меняет поле т_ном на 0 в выведеной таблицы из БД
но неменяет открывающиюся картинку.
По идее все верно делаете:)
 

Zostr

Member
Регистрация
27.04.2006
Сообщения
10
что собственно происходит при выполнении этого сценария
1. идет запрос в БД за полями $id,$t_nom,$fam,$im,$ot,$d_r,$podr,$dolj,$categ)
2. берется поле $t_nom и ищится картинка с именем $t_nom.jpg в определеннной папке.


таблица
__________
| | 1. $t_nom
|картинка | 2.$fam
| | 3. $im
| | 4 ......
| |
|_________|

что происходит после


Код:
скачать скрипт if( open(FILE, "/kadry_gif/".$t_nom.".jpg") )# если удалось открыть файл
{
	close(FILE); # закрываем его
}else{
	$t_nom='0'; # в противном случае берем 0
}
он дествительно проверяет наличие "/kadry_gif/".$t_nom.".jpg
но }else{
$t_nom='0'; #
меняет поле в таблице на 0,все остальные поля неменяются тоесть ф.и.о. выводится того человека которого и хотелось, и картинка 0 тоже неоткрывается.

А что собственно хочется.
Чтоб при отсутствии картинки($t_nom.".jpg) в папке открывалась картинка 0.jpg, но информация запрашиваемая из БД выводилась та что и запрашивали.
 

Creator

Administrator
Команда форума
Регистрация
03.03.2005
Сообщения
1 745
Теперь картина прояснилась:)
Надо создать еще 1 переменную, которая бы отвечала только за номер картинки, а не переназначать главную с ID.
Т.е. t_nom не трогать, а создать - img_nom, которая либо равна t_nom либо 0.
 

Zostr

Member
Регистрация
27.04.2006
Сообщения
10
Ну по моим ответам и вопросам я думаю видно что у меня сложно с програмированием (я энергетик по оброзованию), но просто обстоятельства диктуют обязанности 8)
вот теперь приходится сходу учится программировать.
получается с трудом.
Если несложно, уже дописать обьявление переменной, напишите пожалуста в этой теме эти заветные для меня строки.
я просто пробовал сам но сразу крит ошибка 8(
мобыть не в том месте прописывал или еще чтонибудь подобное...

С уважением!
Santiago.
 

DnAp

self::setDebugMode(true);
Регистрация
30.04.2005
Сообщения
490
Мой код:
Код:
if( open(FILE, "/kadry_gif/".$t_nom.".jpg") )# если удалось открыть файл
{
	close(FILE); # закрываем его
}else{
	$t_nom='0'; # в противном случае берем 0
}
заменяем
Код:
if( open(FILE, "/kadry_gif/".$t_nom.".jpg") )# если удалось открыть файл
{
	my $img_nom=$t_nom; #Обявляем переменную и присваиваем значение
	close(FILE); # закрываем его
}else{
	my $img_nom='0'; # в противном случае обявляем переменную и берем 0
}
И строку:
Код:
<p><img src="/kadry_gif/$t_nom.jpg" align="left" hspace=0"></p>
правим так:
Код:
<p><img src="/kadry_gif/$img_nom.jpg" align="left" hspace=0"></p>
Если честно мои познания противоречат логике... Если не будт работать то убери my... У меня переменные без my не обявляються, а у тебя похоже работает..
 

Zostr

Member
Регистрация
27.04.2006
Сообщения
10
Ну почти 8)))
теперь неотображаются картинки вообще, даже если они есть.

Тоесть нажимаю правой кнопочкой на огрызок картинке что на сайте там путь к картинке следующий
http://gabl/kadry_gif/.jpg
тоесть $img_nom равняется пустому месту.
 

Zostr

Member
Регистрация
27.04.2006
Сообщения
10
о попробовал без МУ теперь в любом случае открывается картинка 0.jpg даже если картинка есть
 

Zostr

Member
Регистрация
27.04.2006
Сообщения
10
Так всеже что нужно сделать?
 

DnAp

self::setDebugMode(true);
Регистрация
30.04.2005
Сообщения
490
"Даже военные програмисты на 100 строк кода делают 1 ошибку" (С)
Где-то ошибку сделал:))
Народ посмотрите, я не вижу где и что:(...

ЗЫ
Перл не кусаеться
 
Статус
Закрыто для дальнейших ответов.
Верх Низ