Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Темы - DDHR

Страницы: [1]
1
Perl / Регулярные выражения
« : 06 Октября 2004, 15:49:54 »
Можно ли отследить в сообщении такую штуку:
у юзера в сообщении присутствуют такие теги: ... something [img="1"] [img="2"] [img="3"] some text [img="id"] ...

вот мне нужно чтобы регулярное выражение бы отследило зависимость, например, если встречаются два и более раз [img="...id..."] при этом их разделяют пробел(ы), то вся эта конструкция заменялась бы на такое:

<p><img src="1.jpg"><img src="2.jpg"><img src="3.jpg"></p>

(это как в моём примере, на самом деле цифры 1,2,3 - значения при img), если четыре таких тега соответствено на

<p><img src="1.jpg"><img src="2.jpg"><img src="3.jpg"><img src="4.jpg"></p>

Если такое возможно, то подскажите плз. как это сделать.
Спасибо.

2
Perl / Подпрограмма
« : 05 Мая 2004, 14:11:33 »
Мне нужно вот этот код:

          $categories = $dbh->prepare("SELECT * FROM  WHERE type=\'news\'")
|| die "Can\'t prepare statement: $DBI::errstr";
          $categories->execute;

$end=0;

while(@row = $categories->fetchrow_array)
{

if($row[3] == $cat)
{
$end=1;
}

}

           $categories->finish;

undef @row;

if($end != 1)
{

          $categories = $dbh->prepare("SELECT * FROM categories WHERE type=\'news\'")
|| die "Can\'t prepare statement: $DBI::errstr";
          $categories->execute;

while(@row = $categories->fetchrow_array)
{

if($row[2] == $cat)
{
$p=$row[1];
$l=$row[2];
}

}

           $categories->finish;
           @names=(@names,$p);
           @cats=(@cats,$l);

}
else
{

$l=$cat;

for ($i=0; $i<10; $i++)
{
$n=0;
          $categories = $dbh->prepare("SELECT * FROM categories WHERE type=\'news\'")
|| die "Can\'t prepare statement: $DBI::errstr";
          $categories->execute;
while(@row = $categories->fetchrow_array)
{

if($n==0)
{
$n=0;
}

if($row[3]==$l)
{
$p=$row[1];
$l=$row[2];
@cats=(@cats,$row[3]);
@names=(@names,$row[4]);
$n=1;
}

}
          $categories->finish;

}
@cats=(@cats,$l);
@names=(@names,$p);
}


запихнуть в отдельный pl файл и использовать как подпрограмму (потому как этот кусок кода будит часто использоваться в дальнейшем). При вызове необходимо передать подпрограмме параметр $cat, после её выполнения получить (вернуть основной программе) два массива: @cats и @names.

PS: документацию по созданию подпрограмм читал..., вроде всё сделал верно, но помоему там что-то не то проиходило во время выбора из таблицы categories  вобщем не работало, помогите пожалуйста!

А! и вот ещё, чтобы не вводить в заблуждение: тот кусок кода абсолютно рабочий, тоесть без использования подпрограммы - он исправно работает.

3
Perl / Проблема с циклами
« : 30 Апреля 2004, 12:20:20 »
$categories = $dbh->prepare("SELECT * FROM categories WHERE type=\'news\'")|| die "Can\'t prepare statement: $DBI::errstr";
          $categories->execute;


          $sth = $dbh->prepare("SELECT * FROM articles WHERE type=\'news\' ORDER BY id DESC LIMIT 6")|| die "Can\'t prepare statement: $DBI::errstr";
          $sth->execute;





          while(($id, $type, $cat, $title, $description, $details, $author, $date, $time) = $sth->fetchrow_array())
          {

while(@row = $categories->fetchrow_array)
{

if ($row[1] eq $cat)
{
print $row[1],\'
\';
}

}


print $title, $description, $author, $date, $time,\'
\';

          }

          $dbh->disconnect; # отключиться от сервера SQL

В результате получаем страничку с новостями:

1 новость 1
2
3
4
5
6

а рядом с каждой новосють должно в случае, если $cat = $row[1], напечатать $row[1], однако внутренний цикл while срабатывает лишь единожды, тоесть печатает $row[1] (в случае равенства $cat) к первой новости, а к остальным нет, что и как переделать, чтобы внутренний цикл работал ко всем новостям?

4
Базы данных / Сортировка
« : 26 Апреля 2004, 17:14:51 »
$sth = $dbh->prepare("SELECT * FROM articles ORDER BY id DESC LIMIT 6 ")|| die "Can\'t prepare statement: $DBI::errstr";
          $sth->execute;


- выведет 6 последних данных с таблички по полю id от большего к меньшему.

А как модернизировать запись, чтобы была проверка на поле type, тоесть нужно сделать так:

чтоб выводилось шесть последних записей у которых в поле type стоит значение news.

За ранее Спасибо.

5
я собираюсь для прочтения подробностей новости сделать скрипт, который бы выводил по id колонку details, НО если я буду писать ссылку на скрипт, который их будит выводить, например:

... news/details.pl?id=id_новости


то в скрипте я не могу ведь делать:

$id=param(\'id\');
$sth = $dbh->prepare("SELECT * FROM news where id = $id")|| die "$DBI::errstr";
$sth->execute;

а ведь могут написать в URL что-то вроде:
DROP TABLE ...

и скрипт, не расчитыая такого поворота событий  будет делать, то что ему будут говорить злоумышленники
ведь может такое быть, если ДА, то как в моём примере этого избежать?

6
Базы данных / Perl+MySQL
« : 16 Февраля 2004, 14:48:32 »
Меня интересуют документации по работе Перла с Майэскьюэль, а особенно примеры вроде создания простой записной телефонной книжки, чтобы понять, как там всё устроено? Если знаете где такие достать, наведите, пожалуйста. За ранее Спасибо.

Страницы: [1]