Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kalendarz w php
Forum PHP.pl > Forum > PHP
kapitan kloss
wacko.gif
Wielka prośba o pomoc. Potrzebuje zrobić kalendarz na stronie, który uruchamiamy poprzez kliknięcie na ikonkę kalendarza. Jeśli wybiorę jakąś datę w kalendarzu (np. wyświetlany jako pop-up) wybrana data wpisze mi się w pole obok którego kalendarz został wywołany.

Przepraszam za ilość linii, ale chciałem aby sytuacja była jasna i łatwo można byłoby go ściągnąc.
Plik _kalendarz.php:
  1. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  2. <title>Kalendarz</title>
  3. <style type="text/css">
  4. <!--
  5. .dzien {
  6.      font-family: "Trebuchet MS", Arial, Helvetica, Verdana;
  7.      font-size: 11px;
  8.      font-style: normal;
  9.      line-height: normal;
  10.      font-weight: normal;
  11.      font-variant: normal;
  12.      text-transform: none;
  13.      color: #333333;
  14.      text-decoration: none;
  15.      text-align: center;
  16. }
  17. .nazwyDni {
  18.      font-family: "Trebuchet MS", Arial, Helvetica, Verdana;
  19.      font-size: 11px;
  20.      font-style: normal;
  21.      line-height: normal;
  22.      font-weight: bold;
  23.      font-variant: normal;
  24.      text-transform: none;
  25.      color: #FFFFFF;
  26.      text-decoration: none;
  27.      text-align: center;
  28. }
  29. .dzisiaj {
  30.      font-family: "Trebuchet MS", Arial, Helvetica, Verdana;
  31.      font-size: 11px;
  32.      font-style: normal;
  33.      line-height: normal;
  34.      font-weight: bold;
  35.      font-variant: normal;
  36.      text-transform: none;
  37.      color: #990000;
  38.      text-decoration: none;
  39.      text-align: center;
  40. }
  41. body {
  42.      margin-left: 0px;
  43.      margin-top: 0px;
  44.      margin-right: 0px;
  45.      margin-bottom: 0px;
  46. }
  47. .dzien:hover {
  48.      font-family: "Trebuchet MS", Arial, Helvetica, Verdana;
  49.      font-size: 11px;
  50.      font-style: normal;
  51.      line-height: normal;
  52.      font-weight: bold;
  53.      font-variant: normal;
  54.      text-transform: none;
  55.      color: #333333;
  56.      text-decoration: none;
  57.      text-align: center;
  58. }
  59. -->
  60.  
  61. </head>
  62.  
  63. <table width="220" border="0" cellspacing="0" cellpadding="0">
  64.  <tr>
  65.    <td><div align="center"><img src="../elementy/pixel.gif" width="11" height="11"></div></td>
  66.  </tr>
  67.  <tr>
  68.    <td><div align="center">
  69.      <?php
  70.  
  71. // ustawienia kolorow i wygladu kolumn
  72. $szerokosc = '25';
  73. $wysokosc = '20';
  74. $kolor_dni_tygodnia = '#666666';
  75. $kolor_niedzieli = '#990000';
  76. $background = '#eeeeee';
  77.  
  78. // url po kliknieciu na date
  79. $url = '_kalendarz.php';
  80.  
  81. // weryfikacja czy podano date czy ma wyswietlic dzisiejsza
  82. if (!isset($_GET['m'])) { $month = date("n"); } else { $month = $_GET['m'];}
  83. if (!isset($_GET['y'])) { $year = date("Y"); } else { $year = $_GET['y'];}
  84. if (!isset($_GET['d'])) { $day = date("d"); } else { $day = $_GET['d'];}
  85.  
  86.  
  87. $data_aktualna = date(mktime(0, 0, 0, $month, $day, $year));
  88. $pierwszy_dzien_miesiaca = date ("w", mktime(0, 0, 0, $month, 1, $year));
  89. $poprzedni_miesiac = $month-1;
  90. $month_txt = array('styczeń','luty','marzec','kwiecień','maj','czerwiec','lipiec','sierpień','wrzesień','październik','listopad','grudzien');
  91. $wyswietl_miesiac = $month_txt[$month-1];
  92.  
  93. if (@$_GET['m'] == 12){ //mamy grudzien
  94.       $kolejny_rok = $year+1;
  95.       $kolejny_miesiac = 1;
  96.       $poprzedni_rok = $year;
  97.       $poprzedni_miesiac = $month-1;
  98. } else if (@$_GET['m'] == 1){ //mamy grudzien
  99.       $kolejny_rok = $year;
  100.       $kolejny_miesiac = $month+1;
  101.       $poprzedni_rok = $year-1;
  102.       $poprzedni_miesiac = 12;
  103. } else {
  104.       $kolejny_rok = $year;
  105.       $kolejny_miesiac = $month+1;
  106.       $poprzedni_rok = $year;
  107.       $poprzedni_miesiac = $month-1;
  108. }
  109.  
  110. echo "<table width=207 border=0 cellspacing=0 cellpadding=0>
  111.        <tr><td width=20 class=dzien><a href=$url?d=1&m=$poprzedni_miesiac&y=$poprzedni_rok class=dzien>&lt;&lt;</a></td>
  112.    <td width=180 class=dzien>$wyswietl_miesiac $year</td>
  113.    <td width=20 class=dzien><a href=$url?d=1&m=$kolejny_miesiac&y=$kolejny_rok class=dzien>&gt;&gt;</a></td>
  114.  </tr>
  115. </table>";
  116.  
  117.  
  118. if($month == 2) {
  119.    if(($year%4) == 0) {
  120.        $no_days = 29;
  121.    }
  122.    else {
  123.        $no_days = 28;
  124.    }
  125. }
  126. elseif(($month == 1) || ($month == 3) || ($month == 5) ||  
  127. ($month == 7) ||  ($month == 8) ||  ($month == 10) ||  ($month == 12)) {
  128.    $no_days = 31;
  129. }
  130. else {
  131.    $no_days = 30;
  132. }
  133.  
  134. echo"<table border=0 bgcolor=$background><tr bgcolor=$kolor_dni_tygodnia>";
  135. echo"<td class=nazwyDni width=$szerokosc bgcolor=$kolor_dni_tygodnia>P</td>
  136. <td class=nazwyDni width=$szerokosc bgcolor=$kolor_dni_tygodnia>W</td>
  137. <td class=nazwyDni width=$szerokosc bgcolor=$kolor_dni_tygodnia>Ś</td>
  138. <td class=nazwyDni width=$szerokosc bgcolor=$kolor_dni_tygodnia>C</td>
  139. <td class=nazwyDni width=$szerokosc bgcolor=$kolor_dni_tygodnia>P</td>
  140. <td class=nazwyDni width=$szerokosc bgcolor=$kolor_dni_tygodnia>S</td>
  141. <td class=nazwyDni width=$szerokosc bgcolor=$kolor_niedzieli>N</td>";
  142. echo"</tr><tr>";
  143.  
  144. $index=$pierwszy_dzien_miesiaca;
  145.  
  146. $index--;
  147. if ($index<=0) $index+=7;
  148. $count = 0;
  149.  
  150. for($a = 1; $a <= $index; $a++) {
  151.    echo"<td></td>";
  152. }
  153. for($i = 1; $i <= (7 - $index) ; $i++) {
  154.      if (($i==date("d")) AND ($month==date("m"))) {
  155.            echo"<td align=center class=dzisiaj width=$szerokosc height=$wysokosc>
  156.            <a href=$url?d=$i&m=$month&y=$year class=dzisiaj>$i</a></td>";
  157.      } else {
  158.            echo"<td align=center class=dzien width=$szerokosc height=$wysokosc>
  159.            <a href=$url?d=$i&m=$month&y=$year class=dzien>$i</a></td>";
  160.      }
  161.      $count++;
  162. }
  163. echo"</tr>";
  164. echo"<tr>";
  165.  
  166. for($j = $i; $j <= ($i + 6); $j++) {
  167.      if (($j==date("d")) AND ($month==date("m"))) {
  168.            echo"<td align=center class=dzisiaj width=$szerokosc height=$wysokosc>
  169.            <a href=$url?d=$j&m=$month&y=$year class=dzisiaj>$j</a></td>";
  170.      } else {
  171.            echo"<td align=center class=dzien width=$szerokosc height=$wysokosc>
  172.            <a href=$url?d=$j&m=$month&y=$year class=dzien>$j</a></td>";
  173.      }
  174. }
  175. echo"</tr>";
  176. echo"<tr>";
  177.  
  178. for($k = $j; $k <= ($j + 6); $k++) {
  179.      if (($k==date("d")) AND ($month==date("m"))) {
  180.            echo"<td align=center class=dzisiaj width=$szerokosc height=$wysokosc>
  181.            <a href=$url?d=$k&m=$month&y=$year class=dzisiaj>$k</a></td>";
  182.      } else {
  183.            echo"<td align=center class=dzien width=$szerokosc height=$wysokosc>
  184.            <a href=$url?d=$k&m=$month&y=$year class=dzien>$k</a></td>";
  185.      }
  186. }
  187. echo"</tr>";
  188. echo"<tr>";
  189.  
  190. for($l = $k; $l <= ($k + 6); $l++) {
  191.      if (($l==date("d")) AND ($month==date("m"))) {
  192.            echo"<td align=center class=dzisiaj width=$szerokosc height=$wysokosc>
  193.            <a href=$url?d=$l&m=$month&y=$year class=dzisiaj>$l</a></td>";
  194.      } else {
  195.            echo"<td align=center class=dzien width=$szerokosc height=$wysokosc>
  196.            <a href=$url?d=$l&m=$month&y=$year class=dzien>$l</a></td>";
  197.      }
  198. }
  199. echo"</tr>";
  200. echo"<tr>";
  201.  
  202. if(($no_days - $l) >= 7) {
  203.      $roll_over = $l + 6;
  204. } else {
  205.      $roll_over = 7;
  206. }
  207.  
  208. for($m = $l; $m <= $roll_over; $m++) {
  209.      if (($m==date("d")) AND ($month==date("m"))) {
  210.            echo"<td align=center class=dzisiaj width=$szerokosc height=$wysokosc>
  211.            <a href=$url?d=$m&m=$month&y=$year class=dzisiaj>$m</a></td>";
  212.      } else {
  213.            echo"<td align=center class=dzien width=$szerokosc height=$wysokosc>
  214.            <a href=$url?d=$m&m=$month&y=$year class=dzien>$m</a></td>";
  215.      }
  216. }
  217. echo"</tr>";
  218. echo"<tr>";
  219.  
  220. for($n = $m; $n <= $no_days; $n++) {
  221.      if (($n==date("d")) AND ($month==date("m"))) {
  222.            echo"<td align=center class=dzisiaj width=$szerokosc height=$wysokosc>
  223.            <a href=$url?d=$n&m=$month&y=$year class=dzisiaj>$n</a></td>";
  224.      } else {
  225.            echo"<td align=center class=dzien width=$szerokosc height=$wysokosc>
  226.            <a href=$url?d=$n&m=$month&y=$year class=dzien>$n</a></td>";
  227.      }
  228. }
  229.  
  230. echo"</tr>";
  231. echo"</table>";
  232.  
  233. ?>
  234.    </div></td>
  235.  </tr>
  236.  <tr>
  237.    <td><img src="../elementy/pixel.gif" width="11" height="11"></td>
  238.  </tr>
  239. </body>
  240. </html>


Zawartość pliku xx.php, który wywołuje plik z kalendarzem:
  1. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  2. <title>Untitled Document</title>
  3. <script type="text/JavaScript">
  4. <!--
  5. function otworz_okno(theURL,winName,features) {
  6.  window.open(theURL,winName,features);
  7. }
  8. //-->
  9. </head>
  10.  
  11. <form name="kalendarz" method="post" action="</span>">
  12.  <<span style='color:blue'>table width="186" border="0" cellspacing="0" cellpadding="0">
  13.    <tr>
  14.      <td width="86"><label>
  15.        <input name="data" type="text" id="data" size="10">
  16.      </label></td>
  17.      <td width="100"><img src="../elementy/kalendarz_pict.gif" width="26" height="23" border="0" onClick="otworz_okno('_kalendarz.php','Kalendarz','width=220,height=190')"></td>
  18.    </tr>
  19.  </table>
  20. </form>
  21. </body>
  22. </html>


PS. Dobrze byłoby gdyby okno z kalendarzem zamykało się po wybraniu odpowiedniej daty ale nie po zmianie miesiąca - a tego również nie udało mi się zrobić.
Będę bardzo wdzięczny za pomoc.
siemakuba
Ale po co z motyką na słońce? Fajno, że próbujesz, ale to troche bez sensu IMHO.
Zacząć trzeba by było od tego, że tak jak piszesz, że chcesz aby to działało, to nie php a JS. No a jak już wiemy że JS i że kalendarz?

Google - JS calendar
wiele do wyboru, konfigurowalne, większość na licencji LGPL bodajże.

pozdr.
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.