Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Kalendarz
Forum PHP.pl > Forum > Przedszkole
marian84
Wiem, że temat kalendarza drążony był już wiele razy lecz ciągle nie mogę sobie z tym poradzić. Chcę zrobić kalendarz -klasyk- obecny miesiac z podziałem na poszczegolne dni. Po kliknięciu na dzień powinny pojawić się wydarzenia z danego dnia... Ma ktoś jakiś pomysł jak to zrobić??
Pilsener
Ja niedawno robiłem taki serwis. Zaczynasz od tabelki - wewnątrz <td></td> dajesz linki <a>, dajesz im display:block - wtedy każda komórka jest linkiem. Parametry takie jak rok, miesiąc i dzień przekazujesz w adresie. Obok dnia tygodnia można też wstawić np. liczbę wydarzeń. Co do generowania samego kalendarza, to zrób dwie pętle:
1. Jedna generuje tygodnie
2. Wewnątrz niej druga generuje dni

Ile jest tygodni w miesiącu potrafisz policzyć? Podpowiem: masz funkcję:
http://pl2.php.net/manual/pl/function.date.php
która potrafi zwrócić liczbę dni w danym miesiącu.
Wyświetlanie dni należy tak zmodyfikować, aby np. zaczynały się od 4-tej komórki, jeśli pierwszy dzień miesiąca to czwartek - ta funkcja potrafi też i to - wystarczy użyć.
Spyder
  1. <?php
  2. $ilosc_dni_w_miesiacu= date ("t",mktime (0,0,0,date("m"),date("d"),date("Y")));
  3. echo "<br/>".date('F');
  4.  
  5. // drowing callendar
  6. $tr = 0;
  7. echo '<table cellspacing="5" style="margin-to:5px;" width="100"><tr>';
  8.  
  9. for($i=1; $i <= $ilosc_dni_w_miesiacu;$i++ ){
  10. if ($tr == 7){
  11.    echo '</tr>';
  12.    $tr = 0;
  13. }
  14. if ($tr == 0) echo '<tr>';
  15. $tr++;
  16.  
  17. if ($i == $current_day ) { $border ="style='border: 2px solid #004080; paddi:10px'";}
  18. if ($i != $current_day ) { $border ="style='border: 1px solid #cccccc; paddi:10px'";}
  19. if ($i > $current_day ) { $border ="style='border: 1px solid #000; paddi:10px'";}
  20.  
  21. if (in_array($i,$dates)) {
  22.  
  23. if ($i > $current_day ) { echo "<td bgcolor='#ff8080'  ".$border." >".$i."</td>";}
  24. if ($i <= $current_day ) { echo "<td bgcolor='#ffffff'  ".$border." >".$i."</td>";}
  25.  
  26. }
  27. else echo "<td bgcolor='#ffffff' ".$border."  >".$i."</td>";
  28.  
  29. }
  30.  
  31. if ($tr != 0)
  32.  echo '</tr>';
  33.  echo '</table>';
  34. ?>


Dodaj sobie rozpoznawanie dnia uzyj do tego znowu date("D", mktime(0, 0, 0, 7, 1, 2000)); ale date wpisz ze zmiennej i bedzie dzialalo winksmiley.jpg Oczywiscie calego ci nie bede pisal musisz dorobic sobie pod swoje potrzeby ale to dobre na poczatek.
JoShiMa
Tutorial: Jak zrobić kartkę z kalendarza
roobik
Jedno z najlepszych rozwiązań jakie widziałem. Przejrzałem różnego rodzaju simple kalendarze, event kalendarze itp... .ale ten (jak dla mnie) jest extra!!!! smile.gif
Jedno pytanie:
W jaki sposób zrobić, by po wybraniu danej daty pokazywały się "eventy" z wybranego dnia?
czyli załóżmy, ze wybrałem 13.09.2008 pokazuje mi wszystkie wydarzenia z tego dnia

Czy coś takiego da się zrobić ?
JoShiMa
Cytat(roobik @ 13.09.2008, 16:20:36 ) *
Jedno pytanie:
W jaki sposób zrobić, by po wybraniu danej daty pokazywały się "eventy" z wybranego dnia?
czyli załóżmy, ze wybrałem 13.09.2008 pokazuje mi wszystkie wydarzenia z tego dnia


Hi hi hi. Zakładam, że to było pytanie do mnie. Dzień w którym jest wydarzenie jest opatrzony odpowiednio skonstruowanym linkiem. Jeśli zakładasz, ze w dzniu może być tylko jedno wydarzenie to link może wyglądać tak:
  1. <a href="index.php?wydarzenie=5" >


Jeśli nie chcesz przxyjmować takiego założenia to może być tak:
  1. <a href="index.php?rok=2007&amp;miesiac=9&amp;dzien=13" >


Potem w skrypcie index.php robię odpowiednią obsługę zmiennych przekazanych przez link, czyli znajdujących się w superglobalnej tablicy $_GET.

Oczywiście można jeszcze inaczej skonstruować link i wysyłać dane nie do skryptu index.php tylko do innego, ale ja tak nie lubię.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.