Forum Webscript.Ru
Программирование => Perl => Тема начата: 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%\'");
-
Yaroslav
Дату LIKE фильтровать?
SELECT data FROM baza WHERE data BETWEEN \'2007\' AND \'2008\' GROUP BY data
А вопрос то в чем?
-
пока сделал такое решение, работает.
$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"; }
}
}