Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Terminarz PHP - problem z przewijaniem miesięcy
kozak1987
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 13.10.2011

Ostrzeżenie: (0%)
-----


Z pomocą forum oraz wujka google "napisałem" terminarz w PHP. Wszystko pięknie śmiga - miał zczytywać z bazy dni które mają się podświetlać innym kolorem. Podświetlać aktualny dzień itp.
Napotkałem jednak problem przy tworzeniu przycisków do przełączania miesięcy. Z pomocą znajomego coś tam napisałem, ale ni jak to sie ma do działania.

Tak oto wygląda kod, przyciski od 31 do 44 linijki:
  1. <?php
  2. require("kal/connection.php");
  3. connection();
  4. // Funkcja rysująca kalendarz
  5. function rysujKalendarz($miesiac, $rok)
  6. {
  7. global $link;
  8.  
  9. // skonstruowanie zapytania do bazy danych w celu wyciągnięcia dni które mają być zaznaczone i wpisanie tych dni do tablicy $dni_zaznaczone
  10. $sql = "SELECT dzien FROM formularz WHERE miesiac = ".(int)$miesiac." AND rok = $rok ORDER BY dzien ASC";
  11. $res = mysql_query($sql);
  12. $dni_zaznaczone = array();
  13.  
  14.  
  15. while($row = mysql_fetch_array($res))
  16. {
  17. $dni_zaznaczone[] = $row['dzien'];
  18. }
  19.  
  20. // Ustawienie głównych zmiennych
  21. $znacznik = mktime(0, 0, 0, $miesiac, 1, $rok);
  22. $iledni = date("t", $znacznik);
  23. $start = date("w", $znacznik);
  24. $miesiace = array(
  25. "Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec",
  26. "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"
  27. );
  28.  
  29. // Rysowanie tabeli
  30.  
  31. $poprzedni = $miesiac - 1;
  32. $nastepny = $miesiac + 1;
  33.  
  34. if($poprzedni < 1)
  35. {$poprzedni = 12 ; $rok-- ;}
  36.  
  37. if($nastepny > 12)
  38. {$nastepny = 1; $rok++ ;}
  39.  
  40.  
  41. echo '<table width="400px" border="1" bordercolor="#ffb4ee" cellspacing="0" cellpadding="6"><tr>';
  42. echo '<td colspan="20" style="text-align:center; background:#252525;">';
  43. echo '<a href="terminarz.php?rok='.$poprzedni_rok.'&amp;miesiac='.$poprzedni_miesiac.'">poprzedni </a>' ;
  44. echo '<a href="terminarz.php?rok='.$nastepny_rok.'&amp;miesiac='.$nastepny_miesiac.'"> następny</a>';
  45. echo $miesiace[$miesiac-1].' '.$rok.'</td></tr>';
  46. echo '<tr style="background:#252525;"><td>Nd</td><td>Pn</td>
  47. <td>Wt</td><td>Śr</td><td>Cz</td><td>Pt</td><td>So</td></tr>';
  48. echo '<tr align="right">';
  49. if ($start>0)
  50. echo '<td colspan="'.$start.'" style="background:#252525;"> </td>';
  51. else $pierwszy=true;
  52.  
  53. // Wypisanie wszystkich dni
  54. for ($i=1;$i<=$iledni;$i++)
  55. {
  56. $dzien = date("w", mktime(0, 0, 0, $miesiac, $i, $rok));
  57. if ($dzien==0 and !$pierwszy) echo '</tr><tr align="right">';
  58.  
  59. // Jeśli jest to dzień zaznaczony, to ustawienie koloru tła na podany kolor
  60. if (in_array($i, $dni_zaznaczone)) $bg = "background:#de00ac;";
  61. // W przeciwnym razie, gdy dzień jest niedzielą, ustawienie specjalnego koloru
  62. else if ($dzien==0) $bg = "background:#1d1d1d;";
  63. // W przeciwnym razie, wiemy że to zwykły dzień i ustawiamy inne tło
  64. else $bg = "background:#252525;";
  65.  
  66.  
  67. $pierwszy = false;
  68. if (mktime(0, 0, 0, date("m"), date("d"), date("Y"))==
  69. mktime(0, 0, 0, $miesiac, $i, $rok)) $bg .= " font-weight:bold;";
  70. echo '<td style="'.$bg.'">'.$i.'</td>';
  71. }
  72. $koniec=7-($start+$iledni)%7;
  73. if ($koniec<>7) echo '<td colspan="'.$koniec.'"
  74. style="background:#252525;"> </td>';
  75. echo '</tr></table>';
  76.  
  77. }
  78.  
  79. // Wywołanie funkcji z aktualną datą
  80. rysujKalendarz(date("m"),date("Y"));
  81.  
  82. ?>


Tak więc jak już wcześniej wspominałem jestem zielony w tym temacie i robię to raz bo muszę dwa, że już zostało tak mało do skończenia że nie chcę komuś tego zlecać. Domyślam się, że brakuje jakiejś zmiennej?
Ze strony estetycznej natomiast chciałbym, żeby linki "poprzedni miesiąc" i "następny miesiąc" były po bokach tej komórki w której się znajdują natomiast nazwa aktualnego miesiąca i rok żeby były pomiędzy linkami.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 02:34