Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Dorobienie nawigacji do kalendarza
Olsz4k
post
Post #1





Grupa: Zarejestrowani
Postów: 95
Pomógł: 0
Dołączył: 26.07.2013
Skąd: Kraków

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


Witam, jestem początkujący w php i codziennie staram się coś skrobać w kodzie.
Dzisiaj napisałem własny kalendarz z możliwością rezerwacji danego terminu. Tutaj nie ma z tym większych problemów. Problem wystąpił teraz, gdyż wyświetla mi tylko aktualny miesiąc i nie ma możliwości przewijania do przodu/wstecz.

Moje pytanie brzmi następująco: jak można dorobić takie strzałki? Nie chcę póki co umieszczać tutaj kodu, bo sprawa jest dosyć prosta, tylko ja nie wiem jak to technicznie rozwiązać. Mam zmienną $miesiąc, więc naturalnym jest, że po kliknięciu w "następny" powinno nastąpić $miesiąc+1, a w "poprzedni" $miesiąc-1, niestety nie wiem jak to rozwiązać, albo mam chwilowe zaćmienie. Za wszelkie wskazówki dziękuję.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Olsz4k
post
Post #2





Grupa: Zarejestrowani
Postów: 95
Pomógł: 0
Dołączył: 26.07.2013
Skąd: Kraków

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


Ok, jak zrobić to przez link już mniej więcej wiem. Jednak wszystko mam w funkcji, a zmienna $miesiac poza funkcja nie istnieje, dobrze rozumiem?

Wrzucam kod i proszę o małą pomoc jak go orientacyjnie zmodyfikować. Wiem, że funkcję mogę wyrzucić, jednak wtedy występuje mały problem z "kolorowaniem" dni zajętych, które się znajdują w bazie.

  1. <?php
  2.  
  3. $login = 'root';
  4. $pass = '';
  5. mysql_connect('localhost', $login, $pass);
  6. mysql_select_db('kalendarz') or die ("Błąd połączenia z bazą danych");
  7. mysql_query("SET NAMES utf8");
  8.  
  9.  
  10. function rysujKalendarz($miesiac, $rok)
  11. {
  12.  
  13. $sql = "SELECT dzien FROM kalendarz WHERE miesiac = ".(int)$miesiac." AND rok = $rok ORDER BY dzien ASC";
  14. $res = mysql_query($sql);
  15. $dni_zaznaczone = array();
  16.  
  17. while($row = mysql_fetch_array($res))
  18. {
  19. $dni_zaznaczone[] = $row['dzien'];
  20. }
  21.  
  22.  
  23. $znacznik = mktime(0, 0, 0, $miesiac, 1, $rok);
  24. $iledni = date("t", $znacznik);
  25. $start = date("w", $znacznik);
  26. $miesiace = array(
  27. "Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec",
  28. "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"
  29. );
  30.  
  31. // Rysowanie kalendarza
  32. echo '<table class="cal-table" cellspacing="0" cellpadding="2">';
  33. echo '<caption class="cal-caption">';
  34. echo '<p>'.$miesiace[$miesiac-1].' '.$rok;
  35. echo '<a href="index.html" class="prev">&laquo;</a>';
  36. echo '<a href="index.html" class="next">&raquo;</a> <tbody class="cal-body">';
  37. echo '</p></caption><tr>';
  38. echo '<tr><td>Nd</td><td>Pn</td>
  39. <td>Wt</td><td>Śr</td><td>Cz</td><td>Pt</td><td>So</td></tr>';
  40. echo '<tr>';
  41. if ($start>0)
  42. echo '<td colspan="'.$start.'" style="background: #ffffff;">&nbsp;</td>';
  43. else $pierwszy=true;
  44.  
  45.  
  46. for ($i=1;$i<=$iledni;$i++)
  47. {
  48. $dzien = date("w", mktime(0, 0, 0, $miesiac, $i, $rok));
  49. if ($dzien==0 and !$pierwszy) echo '</tr><tr>';
  50.  
  51. // Zajęty dzień - bg
  52. if (in_array($i, $dni_zaznaczone)) $bg = "background: red;";
  53. // Zwykły dzień - bg
  54. else $bg = "background: #fff;";
  55.  
  56.  
  57. $pierwszy = false;
  58. if (mktime(0, 0, 0, date("m"), date("d"), date("Y"))==
  59. mktime(0, 0, 0, $miesiac, $i, $rok)) $bg .= " font-weight:bold;";
  60. echo '<td style="'.$bg.'">'.$i.'</td>';
  61. }
  62. $koniec=7-($start+$iledni)%7;
  63. if ($koniec<>7) echo '<td colspan="'.$koniec.'"
  64. style="background:#ffffff;">&nbsp;</td>';
  65. echo '</tr></tbody></table>';
  66.  
  67. }
  68.  
  69.  
  70. rysujKalendarz(date("m"),date("Y"));
  71.  
  72. ?>
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 24.12.2025 - 06:16