Перейти к содержимому

Фотография
- - - - -

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


  • Вы не можете создать новую тему
  • Закрытая тема Тема закрыта
Сообщений в теме: 15

#1 Santiago

Santiago

    Прохожий

    Топикстартер
  • Участник
  • 0
    10 сообщ.

Отправлено 27 Апрель 2006 в 14:03

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

<p> <img src="/kadriFOTO/$ID.jpg" ******** ></p>

Тоесть берется картинка с именем который соответствует ID запрашиваемого кадра.
ну допустим ID = 223334 то картинку будет брать 223334.JPG + выводит в таблице всю инфу по кадру 223334

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

Спонсор

#2 Creator

Creator

    Справедливый админ

  • Администратор
  • 248
    1 744 сообщ.

Отправлено 27 Апрель 2006 в 14:13

Просто делаем проверку на существование картинки 223334.JPG, если она есть, то выводим её, если нет, то 0.jpg
Пример на PHP:

if(file_exists($ID.'.JPG')) $fname=$ID.'.JPG';
else $fname='0.JPG';

  • 0

#3 Santiago

Santiago

    Прохожий

    Топикстартер
  • Участник
  • 0
    10 сообщ.

Отправлено 27 Апрель 2006 в 14:14

Просто делаем проверку на существование картинки 223334.JPG, если она есть, то выводим её, если нет, то 0.jpg
Пример на PHP:

if(file_exists($ID.'.JPG')) $fname=$ID.'.JPG';
else $fname='0.JPG';


да впринцепе на ПХП и надо просто голове нето крутилось.
сейчас попробую
З.ы. спасиб
  • 0

#4 Santiago

Santiago

    Прохожий

    Топикстартер
  • Участник
  • 0
    10 сообщ.

Отправлено 27 Апрель 2006 в 14:43

Извиняюсь что выкладываю тут большой кусок кода но просто возникает вопрос где вставить выше описанный кусок.

#!/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

Сообщение отредактировал Creator: 29 Апрель 2006 в 19:35

  • 0

#5 DnAp

DnAp

    self::setDebugMode(true);

  • Участник
  • 13
    490 сообщ.

Отправлено 28 Апрель 2006 в 09:44

Помоему это перл, ну не видел я чтоб 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
}

ЗЫ
Модеры, перенесите тему в соответствующий раздел..
  • 0

#6 Santiago

Santiago

    Прохожий

    Топикстартер
  • Участник
  • 0
    10 сообщ.

Отправлено 28 Апрель 2006 в 10:38

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

#7 Santiago

Santiago

    Прохожий

    Топикстартер
  • Участник
  • 0
    10 сообщ.

Отправлено 28 Апрель 2006 в 11:24

только вот


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


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

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

#8 Creator

Creator

    Справедливый админ

  • Администратор
  • 248
    1 744 сообщ.

Отправлено 29 Апрель 2006 в 19:33

Если честно, я не совсем понял:

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

По идее все верно делаете:)
  • 0

#9 Santiago

Santiago

    Прохожий

    Топикстартер
  • Участник
  • 0
    10 сообщ.

Отправлено 02 Май 2006 в 08:37

что собственно происходит при выполнении этого сценария
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, но информация запрашиваемая из БД выводилась та что и запрашивали.
  • 0

#10 Creator

Creator

    Справедливый админ

  • Администратор
  • 248
    1 744 сообщ.

Отправлено 02 Май 2006 в 10:50

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

#11 Santiago

Santiago

    Прохожий

    Топикстартер
  • Участник
  • 0
    10 сообщ.

Отправлено 02 Май 2006 в 16:46

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

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

#12 DnAp

DnAp

    self::setDebugMode(true);

  • Участник
  • 13
    490 сообщ.

Отправлено 02 Май 2006 в 19:42

Мой код:
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 не обявляються, а у тебя похоже работает..
  • 0

#13 Santiago

Santiago

    Прохожий

    Топикстартер
  • Участник
  • 0
    10 сообщ.

Отправлено 03 Май 2006 в 08:50

Ну почти 8)))
теперь неотображаются картинки вообще, даже если они есть.

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

#14 Santiago

Santiago

    Прохожий

    Топикстартер
  • Участник
  • 0
    10 сообщ.

Отправлено 03 Май 2006 в 09:02

о попробовал без МУ теперь в любом случае открывается картинка 0.jpg даже если картинка есть
  • 0

#15 Santiago

Santiago

    Прохожий

    Топикстартер
  • Участник
  • 0
    10 сообщ.

Отправлено 05 Май 2006 в 08:06

Так всеже что нужно сделать?
  • 0

#16 DnAp

DnAp

    self::setDebugMode(true);

  • Участник
  • 13
    490 сообщ.

Отправлено 05 Май 2006 в 11:54

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

ЗЫ
Перл не кусаеться
  • 0



Похожие темы Свернуть

  Название темы Форум Автор Статистика Последнее сообщение
Статистика

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых пользователей