Forum Webscript.Ru

Программирование => Perl => Тема начата: Yaroslav от 07 Июня 2007, 13:46:52

Название: вывод ссылок заполненых дат sql
Отправлено: Yaroslav от 07 Июня 2007, 13:46:52
здравствуйте. вот такой вопросец, есть база с полем data 0000-00-00
нужно показать все даты в виде календаря и что б заполненные даты подсвечивались
с базы я могу их вытащить таким способом:
SELECT data FROM baza WHERE data LIKE \'$2007%\' GROUP BY DATA
печать календаря идет так:
@mdays = qw(31 28 31 30 31 30 31 31 30 31 30 31);
for $newmon (1..12) { print "$newmon ";
  for $newday (1..$mdays[$newmon]) { print "$newday "; }
  print "\\n";
}


можно конечно сделать на каждый день проверку, но думаю это не совсем оптимально
$count = $dbh->selectrow_array("SELECT COUNT(*) FROM baza WHERE data LIKE \'2007-$mm-$dd%\'");
Название: вывод ссылок заполненых дат sql
Отправлено: Phoinix от 09 Июня 2007, 13:49:46
Yaroslav

Дату LIKE фильтровать?

SELECT data FROM baza WHERE data BETWEEN \'2007\' AND \'2008\' GROUP BY data

А вопрос то в чем?
Название: вывод ссылок заполненых дат sql
Отправлено: Yaroslav от 10 Июня 2007, 20:29:43
пока сделал такое решение, работает.

$ref=$dbh->selectcol_arrayref("SELECT data FROM baza WHERE data LIKE \'2007%\' GROUP BY DATA");
for $newmon (1..12) {
    if ($newmon<10) { $newmon="0$newmon"; }
    print "$newmon месяц ";
    for $newday (1..31) {
        $check=0;
        if ($newday<10) { $newday="0$newday"; }
        foreach (@{$ref}) {
            if ($_ eq "2007-$newmon-$newday") { $check=1; }
        }
        if ($check == 1) { print "$newday"; }
        else { print "$newday"; }
    }
}