Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Kalendarz
Forum PHP.pl > Forum > Przedszkole
Librai7
Witam wszystkich, mój pierwszy post. Na innym forum nie uzyskałem odpowiedzi więc może tu mi się uda worriedsmiley.gif Jak w temacie robię kalendarz na stronę www. i już kod html zrobiłem, a wygląda tak:

Kod
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

</div></div></div></div></div></div></div></div><div id="calendar-3" class="sb-bot"><div class="sb-top"><div class="sb-right"><div class="sb-left"><div class="sb-rb"><div class="sb-lb"><div class="sb-rt"><div class="sb-lt"><h2>Kalendarium wydarzeń</h2><div id="calendar_wrap"><table id="wp-calendar">
    <caption>Kwiecień 2012</caption>
    <thead>
    <tr>
        <th scope="col" title="poniedziałek">P</th>
        <th scope="col" title="wtorek">W</th>
        <th scope="col" title="środa">Ś</th>
        <th scope="col" title="czwartek">C</th>
        <th scope="col" title="piątek">P</th>
        <th scope="col" title="sobota">S</th>
        <th scope="col" title="niedziela">N</th>
    </tr>
    </thead>

    

    <tbody>
    <tr>
        <td colspan="6" class="pad"> </td><td id="today">1</td>
    </tr>
    <tr>
        <td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td>
    </tr>
    <tr>
        <td>9</td><td>10</td><td>11</td><td>12</td><td>13</td><td>14</td><td>15</td>
    </tr>
    <tr>
        <td>16</td><td>17</td><td>18</td><td>19</td><td>20</td><td>21</td><td>22</td>
    </tr>
    <tr>
        <td>23</td><td>24</td><td>25</td><td>26</td><td>27</td><td>28</td><td>29</td>
    </tr>
    <tr>
        <td>30</td>
        <td class="pad" colspan="6"> </td>
    </tr>
    </tbody>
    </table>




Prosiłbym was o pomoc w dokończeniu go. Chciałbym żeby co miesiąc sam się zmieniał (miesiąc) i podświetlał obecny dzień. Jak na razie sam zmieniam co miesiąc ręcznie wszystko sad.gif, a nie mam pojęcia jak to zrobić, wiem że potrzebna jest tu wiedza PHP której niestety na razie nie posiadam. Z góry dziękuje za pomoc.

A wygląda tak:
http://img826.imageshack.us/img826/9436/25534893.png
lobopol
Najprościej użyj funkcji date aby uzyskać liczbę dni w tym miesiącu, aktualny dzień, aktualny miesiąc, aktualny dzień tygodnia. Kiedy masz już te dane wystarczy pojedyncza pętla for aby utworzyć ci aktualny kalendarz

Przy date popatrz sobie na parametry interesują ciebie konkretnie: j, N bądź w, n, t.

Librai7
Tyle że jak już wcześniej napisałem że nie mam pojęcia o PHP, właśnie się zastanawiam nad kupnem książki. PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty. Wydanie czwarte
lobopol
No to polecam przeczytać jakiś kurs php(na forum znajdziesz ich sporo) , tutaj gotowca nie dostaniesz. Jeżeli chcesz aby ktoś ci to wykonał musisz pisać w dziale giełda, ale za darmo to nikt ci tego raczej nie zrobi.

W gruncie rzeczy aby to zrobić wystarczy:
1 x date z wymienionymi wcześniej parametrami
1 x explode
1 x pętla for/while
i kilka prostych ifów
prowseed
http://davidwalsh.name/php-calendar
http://davidwalsh.name/php-calendar-controls
http://davidwalsh.name/php-event-calendar

dokładnie to, czego szukasz, tylko w trochę większej wersji : )
Librai7
Odgrzewam temat. Zrobiłem taki skrypt:

  1. </div></div></div></div></div></div></div></div><div id="calendar-3" class="sb-bot"><div class="sb-top"><div class="sb-right"><div class="sb-left"><div class="sb-rb"><div class="sb-lb"><div class="sb-rt"><div class="sb-lt"><h2>Kalendarium wydarzeń</h2>
  2.  
  3. <?php
  4.  
  5. function dni_mies($mies,$rok) {
  6.  
  7. $dni = 31;
  8. while (!checkdate($mies, $dni, $rok)) $dni--;
  9.  
  10.  
  11. return $dni;
  12. }
  13.  
  14.  
  15. function dzien_tyg_nr($mies,$rok) {
  16.  
  17. $dzien = date("w", mktime(0,0,0,$mies,1,$rok));
  18.  
  19.  
  20. return $dzien;
  21. }
  22.  
  23. function dzien_tyg($nr) {
  24.  
  25. $dzien = array(0 => "Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota");
  26.  
  27. return $dzien[$nr];
  28. }
  29.  
  30.  
  31. function miesiac_pl($mies) {
  32.  
  33. $mies_pl = array(1=>"Stycznia", "Lutego", "Marca", "Kwietnia", "Maja", "Czerwieca", "Lipieca", "Sierpnia", "Września", "Października", "Listopada", "Grudnia");
  34.  
  35. return $mies_pl[$mies];
  36. }
  37.  
  38. ?>
  39.  
  40. <html>
  41. <head>
  42. <title>Kalendarz</title>
  43.  
  44. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  45. <meta http-equiv="content-language" content="pl" />
  46.  
  47. <style type="text/css">
  48. #kalendarz {width: 150px;}
  49. #kalendarz p {text-align: center;}
  50. #kalendarz li {display: inline; padding:1px 2px; }
  51. #kalendarz .akt {color: #990000; font-weight: bold;}
  52. #kalendarz .hidden {visibility: hidden;}
  53. </style>
  54. </head>
  55. <body>
  56.  
  57. <div id="kalendarz">
  58. <?php
  59. echo '<p>'.dzien_tyg(date("w")).',
  60. <br>
  61. '.date("d").' '.miesiac_pl(date("n")).' '.date("Y").'</p>';
  62. ?>
  63. <ul>
  64.  
  65. <th scope="col" title="niedziela"><font size="2"><b>N</b></font></th>
  66. <th scope="col" title="poniedzialek"><font size="2"><b>Pn</b></font></th>
  67. <th scope="col" title="wtorek"><font size="2"><b>Wt</b></font></th>
  68. <th scope="col" title="środa"><font size="2"><b>Śr</b></font></th>
  69. <th scope="col" title="czwartek"><font size="2"><b>Cz</b></font></th>
  70. <th scope="col" title="piatek"><font size="2"><b>Pt</b></font></th>
  71. <th scope="col" title="sobota"><font size="2"><b>So</b></font></th>
  72.  
  73. </ul>
  74.  
  75. <ul>
  76. <?php
  77. for($i=0;$i<dzien_tyg_nr(date("n"),date("Y"));$i++)
  78. echo '<li class="hidden">00</li> ';
  79.  
  80. for($i=1;$i<dni_mies(date("n"),date("Y")) +1;$i++) {
  81. if ($i<10) $i = '0'.$i;
  82. if ($i == date("d")) echo '<li class="akt">'.$i.'</li> ';
  83. else echo '<li>'.$i.'</li> ';
  84. }
  85. ?>
  86. </ul>
  87.  
  88. </div>
  89. </div>
  90.  
  91. </body>
  92. </html>


i wygląda tak:

http://img585.imageshack.us/img585/6228/kale.png

i jak widzicie mamy dziś piątek 20.04.2012 a na tablicy kalendarza podświetla się dzień 20 w poniedziałku zamiast na Pt... co zrobić żeby pobierało prawidłowo tablice miesiąca?questionmark.gif

Po drugie, nie mam pojęcia jakiego kodu użyć żeby można zaznaczyć dany event w danym dniu.
prowseed
Bo wyswietlasz pierwszy dzien na pierwszej pozycji tygodnia, podczas gdy nie zawsze tak jest.
Cytat
if ($i<10) $i = '0'.$i;
To troche na okolo, ale ostatecznie dziala, natomiast madrzej by bylo uzyc po prostu sprintf.
Wejdz w linki, ktore Ci podalem wyzej. Przeanalizuj sobie to wszystko, nawet przepisz i pozniej buduj na tym swoj kalendarz.
Tam wszystko jest, najprostsza funkcjonalnosc jakiej potrzebujesz. Jest rowniez lopatologicznie opisane jak pobrac zdarzenia do tablicy i je pozniej w tym kalendarzu wyswietlac.
Librai7
Dobra trochę sie pobawiłem i wyszedł mi kalendarz tak:

http://img857.imageshack.us/img857/7615/kalem.png


kod:

  1. </div></div></div></div></div></div></div></div><div id="calendar-3" class="sb-bot"><div class="sb-top"><div class="sb-right"><div class="sb-left"><div class="sb-rb"><div class="sb-lb"><div class="sb-rt"><div class="sb-lt"><h2>Kalendarium wydarzeń</h2>
  2. <center><?php
  3. echo '<p>'.dzien_tyg(date("w")).',
  4. <br>
  5. '.date("d").' '.miesiac_pl(date("n")).' '.date("Y").'</p>';
  6. ?>
  7.  
  8. <?PHP
  9. function dzien_tyg($nr) {
  10.  
  11. $dzien = array(0 => "Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota");
  12.  
  13. return $dzien[$nr];
  14. }
  15.  
  16.  
  17. function miesiac_pl($mies) {
  18.  
  19. $mies_pl = array(1=>"Stycznia", "Lutego", "Marca", "Kwietnia", "Maja", "Czerwieca", "Lipieca", "Sierpnia", "Września", "Października", "Listopada", "Grudnia");
  20.  
  21. return $mies_pl[$mies];
  22. }
  23.  
  24. function printCalendar()
  25. {
  26. $year = date("Y");
  27. $monthNum = date("n");
  28. $daysofmonth = date("t");
  29. $dayofweek = date("w");
  30. $dayofmonth = date("j");
  31. $firstdayofmonth = date("w", mktime(0,0,0,$monthNum, 1, $year));
  32.  
  33. if($dayofweek == 0) $dayofweek = 7;
  34. if($firstdayofmonth == 0) $firstdayofmonth = 7;
  35.  
  36. switch($monthNum){
  37. case 1 : $monthName = "Styczeń";break;
  38. case 2 : $monthName = "Luty";break;
  39. case 3 : $monthName = "Marzec";break;
  40. case 4 : $monthName = "Kwiecień";break;
  41. case 5 : $monthName = "Maj";break;
  42. case 6 : $monthName = "Czerwiec";break;
  43. case 7 : $monthName = "Lipiec";break;
  44. case 8 : $monthName = "Sierpień";break;
  45. case 9 : $monthName = "Wrzesień";break;
  46. case 10 : $monthName = "Październik";break;
  47. case 11 : $monthName = "Listopad";break;
  48. case 12 : $monthName = "Grudzień";break;
  49. }
  50.  
  51. echo("<TABLE border = 1><TR>");
  52. echo("<TD bgcolor=\"\" align=\"center\" colspan=\"7\">");
  53. echo($monthName." ".$year);
  54. echo("</TD></TR><TR>");
  55.  
  56. ?>
  57. <TR>
  58. <TD align="center" bgcolor="">Pn</TD>
  59. <TD align="center" bgcolor="">Wt</TD>
  60. <TD align="center" bgcolor="">Sr</TD>
  61. <TD align="center" bgcolor="">Cz</TD>
  62. <TD align="center" bgcolor="">Pi</TD>
  63. <TD align="center" bgcolor="">So</TD>
  64. <TD align="center" bgcolor="">Nd</TD>
  65. </TR>
  66. <?
  67. $j = $daysofmonth + $firstdayofmonth - 1;
  68.  
  69. for($i = 0; $i < $j; $i++){
  70. if($i < $firstdayofmonth - 1){
  71. echo("<TD bgcolor=\"\"></TD>");
  72. continue;
  73. }
  74. if(($i % 7) == 0){
  75. echo("</TR><TR>");
  76. }
  77. if(($i - $firstdayofmonth + 2) == $dayofmonth){
  78. $color = "silver";
  79. }
  80. else{
  81. $color = "";
  82. }
  83. echo("<TD bgcolor=\"$color\" align=\"center\">");
  84. echo($i - $firstdayofmonth + 2);
  85. echo("</TD>");
  86. }
  87. echo("</TR></TABLE>");
  88. }
  89. printCalendar();
  90. ?>
  91.  
  92.  


Chce wprowadzić jeszcze eventy, podałeś ten link http://davidwalsh.name/php-event-calendar ale nie mam pojęcia o co w nim chodzi. Coś ze SQL, czy muszę nową baze danych utworzyć?
Szymciosek
Tak, eventy będą trzymane w bazie danych.
Librai7
Oki ale jak to zrobić?
prowseed
Jak zrobić co, tabelę w bazie danych?

Jeżeli tego nie rozumiesz, to radzę Ci poczytać jakieś publikacje na temat podstaw współpracy php z mysql. Ponieważ masz tam zapytanie i na jego podstawie powinieneś się domyśleć jak ma wyglądać tabela. Jeżeli tego nie widzisz, to zwyczajnie brak Ci podstaw i nikt tego za Ciebie tu nie zrobi. Zatem google i do boju.
Librai7
Acha raczej to drugie: czyli żeby te eventy dodać do kodu który pokazałem muszę coś w nim jeszcze zamieścić, zrobić baze mysql i stworzyć tabele w niej?questionmark.gif
prowseed
tak.

Musisz połączyć się z bazą z poziomu php, pobrać eventy do tablicy, gdzie kluczem jest data i przekazać całą tablicę jako parametr funkcji.
Czyli dokładnie tak, jak to jest opisane w powyższym artykule.
Twoje frazy google na dziś: phpmyadmin create tables, phpmyadmin insert data, connect to database mysql+php, php mysql select, retrieve data in php from mysql
Tam znajdziesz wszystko, co jest Ci do szczęścia potrzebne.
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.