Kalendarz potrafię zrobić sam, problem powstaje, gdy chce rozszerzyć jego możliwości o eventy - dokładniej rzecz biorąc o samo wyświetlenie go. Sciągnąłem pare darmowych kalendarzy, żeby zobaczyć o co tam biega, ale sa one jakoś dziwnie rozbudowane. Myślę, że problem jest prosty.
Chodzi o to, że przed generowaniem komorek tabeli z dniami miesiąca sprawdzam bazę danych (mysql) w poszukiwaniu eventów z tego miesiąca tego roku. Pobieram je i teraz zaczynam generować komórki. Jeśli pole 'day' z mysql jest równe aktualnie generowanej komórce z dniem miesiąca to w komórce tej będzie link do tego dnia, gdzie będzie więcej szczegółów na temat wydarzenia.
<?php for ($i=0; $i<$theday; $i++){ } $sql = "SELECT `id`, `year`, `month`, `day`, `time`, `title` FROM `calendar` WHERE
`year for ($list_day=1; $list_day <= $daysinmonth; $list_day++){ if ( $list_day == $event['day'] ){ echo '<td class="today"><a href="?x=calendar&m=item&year='.$event['year'].'&month='.$event['month'].'&day='.$event['day'].'" title="'.$event['time'].' - '.$event['title'].'">'. $today .'</a></td>'; } else { } } elseif ($theday == 0){ if ( $list_day == $event['day'] ){ echo '<td class="sunday"><a href="?x=calendar&m=item&year='.$event['year'].'&month='.$event['month'].'&day='.$event['day'].'" title="'.$event['time'].' - '.$event['title'].'">'. $list_day .'</a></td>'; } else { } } else { if ( $list_day == $event['day'] ){ echo '<td><a href="?x=calendar&m=item&year='.$event['year'].'&month='.$event['month'].'&day='.$event['day'].'" title="'.$event['time'].' - '.$event['title'].'">'. $list_day .'</a></td>'; } else { } } if ($theday == 6){ $theday = -1; }//end of if $theday == 6 $theday++; }//end of for $last = 7 - $theday; for ($i=0; $i<$last; $i++){ if ($last == 6){ } else { } }//end of for ?>
I to działa, ale tylko dla pierwszego rekordu. Kolejne sa ignorowane. Pokazany jest event tylko z ID 1, czyli ten który jest pierwszy.
Jak całą część z komórkami wsadziłem z while dla rekordów z bazy to dostałem 3 razy kalendarz (3 rekordy w bazie, wiec 3 petle) =)
Nie bardzo mam pomysł jak to zrobić.
Mam nadzieję, że jasno się wysłowiłem.
Pozdrawiam
PS. Wiem, że mogę sprawdzać bazę danych w poszukiwaniu odpowiedniego eventu przy generowaniu każdej komórki, ale to by dało 30/31 zapytań przy każdym odswieżaniu strony (kalendarz jest w panelu bocznym, więc jest zawsze widoczny). To troche dużo, więc sam uznałem, że to kiepskie rozwiązanie.