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

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


Сообщения - DamonLSD

Страницы: [1] 2 3 4
1
Perl / Увеличение даты
« : 08 Февраля 2009, 20:58:36 »
Цитировать
Yaroslav:
еще такой вопрос. если есть дата к примеру 20-05-2004
можно ли сравнить ее с localtime(time) что б разница выводилась в количистве дней?

ВСЕМ привет! :)
на днях тоже столкнулся с вычислением разницы двух дат и конечно же хотелось обойтись стандартными модулями. Вот, что у меня получилось ... может кому-то пригодицца
#!D:/www/Perl/bin/perl.exe

print "Content-type: text/html; charset=windows-1251\\n\\n";

use 
strict;
use 
Time::Local;

# Текущая дата
my ($sec,$min,$hrn,$day,$mon,$yrn,$wkn,$ydn,$dst) = localtime(time);
  
$mon $mon+1;
  if (
$mon 10) {$mon "0$mon";}
  if (
$day 10) {$day "0$day";}
  if (
$hrn 10) {$hrn "0$hrn";}
  if (
$min 10) {$min "0$min";}
  if (
$sec 10) {$sec "0$sec";}
  
$yrn 1900 $yrn;
  
my $date"$day\\-$mon\\-$yrn";
  
my $time"$hrn\\:$min\\:$sec";

# Начальная дата
my $begDate "01-01-2009";
# Конечная дата
my $endDate "01-01-2010";

# Парсим начальную дату на день месяц и год, разделитель "-"
my ($beg1$beg2$beg3) = split (/-/,$begDate);
# Парсим конечную дату на день месяц и год, разделитель "-"
my ($end1$end2$end3) = split (/-/,$endDate);

# Вычисляем сколько прошло секунд до начальной даты
my $begDateSec timelocal(000$beg1$beg2-1$beg3);
# Вычисляем сколько прошло секунд до конечной даты
my $endDateSec timelocal(000$end1$end2-1$end3);

# Вычисляем разницу в секундах от начальной даты до конечной
my $difDateSec $endDateSec $begDateSec;
# Вычисляем разницу в сутках от начальной даты до конечной
my $difDateSut $difDateSec 86400;

# Вывод результатов
print "Текущая дата: $date $time (" time " сек)";
print 
"

"
;
print 
"Начальная дата: $begDate ($begDateSec сек)";
print 
"
"
;
print 
"Конечная дата:  $endDate ($endDateSec сек)";
print 
"

"
;
print 
"Разница: $difDateSut сут ($difDateSec сек)";

Результат
Текущая дата08-02-2009 20:56:52 (1234115812 сек)

Начальная дата01-01-2009 (1230757200 сек)
Конечная дата01-01-2010 (1262293200 сек)

Разница365 сут (31536000 сек)

2
Perl / вопросик про while
« : 03 Июля 2007, 17:26:47 »
Phoinix
спасибо

3
Perl / вопросик про while
« : 02 Июля 2007, 18:24:39 »
Здравствуй всезнающий, All ! Море пива тебе :)
Ламерский вопрос, сильно не пинайте.
Есть строка (это для выборки из бд)
while (($field1, $field2, $field3, $field4, $field5) = $sth2 -> fetchrow_array()) {bla bla bla}
Эта строка будет использована несколько раз и кол-во $field-ов тоже может измениться. Как сделать так, чтобы изменить $field в одном месте, а в while ничего не трогать?

Спасибо.

4
Perl / Параметры методом POST
« : 04 Октября 2006, 16:05:57 »
Green Kakadu, спасибо!

5
Perl / Параметры методом POST
« : 03 Октября 2006, 11:12:42 »
Да, но все записи (параметр => значение) подходят для дальнейшей работы! Нужно сделать выборку из всех переданных параметров, например, выбрать только параметры id_хх, ocenka_хх и predmet ну и конечно все значения этих параметров, а потом уже приладить для вставки в БД
my $sql = qq{INSERT INTO table (id, predmet, ocenka)
VALUES ($id, \'$predmet\', $ocenka)
};

6
Perl / Параметры методом POST
« : 30 Сентября 2006, 15:16:47 »
ок. спасибо!
Теперь усложним задачку. В скрипт из формы передались следующие поля (print "$p => $params{$p}\\n"):
id_1 => 603
id_2 => 602
id_3 => 605
id_4 => 604
ocenka_1 => 5
ocenka_2 => 5
ocenka_3 => 5
ocenka_4 => 5
predmet => Автомобили

Каким образом все это дело разложить по полочкам и внести в БД, чтобы в ней получилось 4 записи - id, predmet, ocenka?
Цитировать

my $sql = qq{INSERT INTO table (id, predmet, ocenka)
                 VALUES (\'??\', \'??\', \'??\')
         };

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


Большое спасибо!

7
Perl / Параметры методом POST
« : 29 Сентября 2006, 16:50:46 »
вот так пойдет?

Цитировать

foreach $key ($query->param) {
print "$key ->";
@values = $query->param($key);
print join(", ",@values),"
";
}

8
Perl / Параметры методом POST
« : 29 Сентября 2006, 14:58:13 »
Цитировать
Error202:
Т.е., допустим, генерится 15 полей "ТЕКСТ" с именами t1, t2, t3.. t15... Может и больше или меньше полей... И нужно определить сколько всего таких полей было передано...


... и каким образом вывести значения этих сгенерированных полей? т.е.
t1 - текст из формы 1,
t2 - текст из формы 2,
t3 - текст из формы 3,
..
t15 - текст из формы 15,
...

Спасибо.

9
vladsu, спасибо

10
Цитировать
vladsu:
Вот что у меня получилось

ОФИГЕННО получилось!!! :)
Спасибо! То, что и просил... Биру-Бир!!! :)

З.Ы. Еще бы хотелось в предыдущем примере разобраться ;) ... я про вывод суммы.

11
Сорри! Скажите, а каким образом тогда вывести сумму по сгруппированным Фамилиям?


$sql = "
SELECT db.naim, Sum(db.itogo) AS [Sum-itogo]
FROM db
GROUP BY db.naim
ORDER BY db.naim;
";

$dbh->Sql($sql);

while ($dbh -> FetchRow()){
%h = $dbh -> DataHash();

$count++;

print "$count - $h{naim} - ????
";
}

$dbh->Close();

12
Цитировать
vladsu:
Вот что у меня получилось...
Если же понадобится в отсортированном виде, то добавьте \'sort\' перед \'keys\', и не используйте \'order by\' в запросе.

Спасибо! Обязательно попробую.
А почему \'order by\' не использовать в запросе? Занимает больше ресурсов чем \'keys\'? Просто я тоже думаю, что если можно использовать эту фишку в запросе, нечего ее перекладывать на Язык программирования.

Цитировать
KiLLjoY aka SerZH:
с помощью всего одного запроса, в котором нужны GROUP BY и SUM!

Ага! тоже думал об этом... спасибо.

13
Добрый день, Уважаемый All :)
Давненько я тут не был. У меня снова проблемка и заключается она в следующем:
- Имеется БД (Access - mdb), юзаю я ее через Win32::ODBC. В базе, скажем так (просто пример), две колонки: "ФИО" и "Кол-во".
- С помощью запроса $sql = "SELECT * FROM db ORDER BY fio" выводится результат, в котором отображаются все записи из этой БД, отсортированные по Фамилии, например:
Иванов - 3
Иванов - 9
Иванов - 2
Сидоров - 5
Сидоров - 7
Сидоров - 1
Петров - 4
Петров - 8
и т.д.

ВОПРОС: Скажите пожалуйста, каким образом подсчитать у каждого "кол-во" и вывести нечто подобное:

Иванов - 3
Иванов - 9
Иванов - 2
-----------
        14

Сидоров - 5
Сидоров - 7
Сидоров - 1
-----------
        13

Петров - 4
Петров - 8
-----------
        12


Спасибо.

14
AnnA, спасибо тебе за подсказку ;) ... у меня заклинило, что надо через цикл делать, вот и не получалось.
Изменил свой код, смотри что получилось:

$cnt = 0;

open(FILE,"$file") || print "Файл не найден!\\n";
@str=;
close FILE;
open(FILE,">$file");
for($i=0;$i<=$#{@str};$i++)
{
## если попадаются строки, содержащие " blabla XXX "
## то я их "вырезаю" из $file и сохраняю в файле tmp.txt
if($str[$i]=~ / blabla XXX /)  {

   if ($cnt<=5) {

open (F813, ">>tmp.txt") || die print "Cannot open file: $!";
print F813 "$str[$i]";
close (F813);
$str[$i]="";

   }
   $cnt++;

}
print FILE "$str[$i]";
}
close FILE;
close FILE;


... все работает!
спасибо :)

15
Спасибо! ... сейчас попробую

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