Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Prosty kalendarz w PHP
Forum PHP.pl > Forum > Przedszkole
Gabrielx
Chciałbym napisać prosty kalendarz w PHP. Chciałbym aby można było do niego dodawać informacje na temat każdego dnia. Proszę o poradę.
SzamanGN
Napisz:
- jak chcesz, aby użytkownik wprowadzał/wybierał datę?
- jak ma wyglądać podgląd kalendarza?
- gdzie chcesz przechowywać dane (informacje) - baza danych, czy plik tekstowy?
- jaki masz projekt wyglądu tej strony (elementy na stronie)?
Gabrielx
Cytat(SzamanGN @ 22.05.2009, 13:44:08 ) *
Napisz:
- jak chcesz, aby użytkownik wprowadzał/wybierał datę?
- jak ma wyglądać podgląd kalendarza?
- gdzie chcesz przechowywać dane (informacje) - baza danych, czy plik tekstowy?
- jaki masz projekt wyglądu tej strony (elementy na stronie)?


1. Ręcznie - poprzez kliknięcie
2. np. po najechaniu wyświetla się wydarzenie lub po kliknięciu przechodzenie na nową stronę
3. Baza danych - MySQL
4. Kalendarz będzie umieszczony po prawej stronie.

Ps: Dobrze by było żeby był umieszczony w jakiejś ramce(ozdobiony graficznie)
in5ane
Hola hola... możemy Ci pomóc, no ale to Ty napiszesz, a nie My.

Zacznij od utworzenia sobie bazy. Nie chce mi się dokładnie myśleć, gdyż jestem na zajęciach i w między czasie Ci odpisuje. No ale powiedzmy, że kalendarz będzie generowany całkowicie w PHP, a dane przechowywane w bazie to tylko jakieś eventy czy cuś innego. A więc tak, sugeruje utworzenie tabelki w taki sposób:
id || title || content || date

Następnie musisz sobie napisać kalendarzyk, a więc tworzysz sobie tabelkę, w której generujesz cyferki w komórkach.

Następnię napisz i powiedz nam co udało Ci się uzyskać, a pomożemy Ci złączyć baze z kalendarzem.

P.S.: Uprzedam, że może to nie być optymalne rozwiązanie. Pisałem na szybko.
Gabrielx
Cytat(in5ane @ 22.05.2009, 13:52:49 ) *
Hola hola... możemy Ci pomóc, no ale to Ty napiszesz, a nie My.

Zacznij od utworzenia sobie bazy. Nie chce mi się dokładnie myśleć, gdyż jestem na zajęciach i w między czasie Ci odpisuje. No ale powiedzmy, że kalendarz będzie generowany całkowicie w PHP, a dane przechowywane w bazie to tylko jakieś eventy czy cuś innego. A więc tak, sugeruje utworzenie tabelki w taki sposób:
id || title || content || date

Następnie musisz sobie napisać kalendarzyk, a więc tworzysz sobie tabelkę, w której generujesz cyferki w komórkach.

Następnię napisz i powiedz nam co udało Ci się uzyskać, a pomożemy Ci złączyć baze z kalendarzem.

P.S.: Uprzedam, że może to nie być optymalne rozwiązanie. Pisałem na szybko.


Czy ja napisałem że nie chce tego sam napisać? tongue.gif Sam to postaram się napisać. Tylko nie wiem kiedy będę miał czas. Ale w każdy bądź razie napisze tutaj kiedy to napisze. Macie jeszcze jakieś inne pomysły?
in5ane
Nie chce mi się dalej myśleć. Pomyśl co należy zrobić. Musisz ziintegrować swoją bazę ze swoim kalendarzem. Do tego przyda Ci się jakieś jQuery czy mintAjax (nie wiem za bardzo które), co będzie odpowiedzialne za fajne wyświetlenie po najechaniu (ale na upartego da rade zrobić to w CSS).
krzysiekk
prosze tu masz kalendarz
  1. <?
  2. require_once 'Calendar/Month/Weekdays.php';
  3.  
  4. $Month = new Calendar_Month_Weekdays(date('Y'), date('n'));
  5.  
  6. $Month->build();
  7.  
  8. echo "<table border=1>\n";
  9.  
  10. while ($Day = $Month->fetch()) {
  11.    if ($Day->isFirst()) {
  12.        echo "<tr>\n";
  13.    }
  14.  
  15.    if ($Day->isEmpty()) {
  16.        echo "<td>&nbsp;</td>\n";
  17.    } else {
  18.        echo '<td><a href="?action=dodaj_info&dzien='.$Day->thisDay().'">'.$Day->thisDay() ."</a></td>\n";
  19.    }
  20.  
  21.    if ($Day->isLast()) {
  22.        echo "</tr>\n";
  23.    }
  24. }
  25.  
  26. echo "</table>\n";
  27.    ?>
ikssde
Może napisz z jakiej biblioteki korzystasz? snitch.gif
SzamanGN
Gabrielx jak widzę sam sobie odpowiedziałeś jak zamierzasz zrobić skrypt.
Realizuj punkty według kolejności: 3, 4, 1 i 2, a osiągniesz sukces.
krzysiekk
wykozystalem przyklad z manuala PEAR

klasa potrzebna jest do pobrania tu:
http://pear.php.net/package/Calendar/download
Gabrielx
Znalazłem w internecie taki oto skrypt kalendarza:
Cytat
<?php
function dzien_tyg_nr($mies,$rok)
{
@$dzien = date("N", mktime(0,0,0,$mies,1,$rok));
return $dzien;
}

function dni_mies($mies,$rok)
{
$dni = 31;
while (!checkdate($mies, $dni, $rok))
$dni--;
return $dni;
}

//zmienne kalendarza
@$m=date("m"); @$y=date("y"); @$aktualna=date("d-m-Y"); if($_GET['m']=='') {$miesiac=$m;} else {$miesiac=$_GET['m'];} if($_GET['y']=='') {$rok=$y;} else {$rok=$_GET['y'];}

$nr_kratki=1;
echo '<table border="1"><tr><td><b>Pn</b></td><td><b>Wt</b></td><td><b>Sr</b></td><td><b>Czw</b></td><td><b>Pt </b></td><td><b>So </b></td><td><b>N</b></td></tr>';
echo '<tr>';
for($i=1;$i<dzien_tyg_nr($miesiac,$rok);$i++) //ile pustych pol
{echo '<td>&nbsp;</td>'; $nr_kratki++;}
for($i=1;$i<dni_mies($miesiac,$rok) +1;$i++) //ile pelnych pol
{echo '<td>'.$i.'</td>'; $nr_kratki++; if($nr_kratki%8=='0') {echo '</tr><tr>'; $nr_kratki='1';}}

for($i=$nr_kratki;$i<8;$i++) //ile pustych pol
{echo '<td>&nbsp;</td>';}

echo '</tr></table><br/>';
echo $aktualna;

?>

1. W tym skrypcie wyświetlają mi się błędy takie jak:
Cytat
Strict Standards: date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Paris' for '2.0/DST' instead in C:\serwer\www\kalendarz2.php on line 23

Strict Standards: date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Paris' for '2.0/DST' instead in C:\serwer\www\kalendarz2.php on line 23

Strict Standards: date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Paris' for '2.0/DST' instead in C:\serwer\www\kalendarz2.php on line 23

Notice: Undefined index: m in C:\serwer\www\kalendarz2.php on line 23

Notice: Undefined index: y in C:\serwer\www\kalendarz2.php on line 23

Po zastosowaniu znaku @ część z nich się nie wyświetla, a 2 ostatnie się wyświetlają.

2. Czy można ten kalendarz ubrać w tą oto grafikę?:
[img=http://img26.imageshack.us/img26/2825/kalendarzb.th.jpg]
3. Jak zrobić przegląd kalendarza na kolejne miesiące np. mamy maj a chce zobaczyć jakie ważne wydarzenie będzie w czerwcu lub w lipcu?
4. Jak zrobić wydarzenia na każdy dzień(na jeden dzień będzie przypadało jedno wydarzenie, nie więcej).
5. Pomożecie podłączyć jego do bazy MySQL?

Nie podajcie mi kodu - chce sam spróbować to zrobić. Dajcie mi jedynie tylko wskazówki.

Edit: To jak pomożecie?
erix
  1. a przeczytałeś chociaż treść błędu? Daj na początku date_default_timezone_set" title="Zobacz w manualu PHP" target="_manual z własną strefą czasową.
  2. strzelam, że register_globals
Gabrielx
Ok. Dzięki. A czy mógłbyś mi pomóc z tym oto skryptem?:
<a href="http://funkcje.net/view/2/2288/index.html" target="_blank">http://funkcje.net/view/2/2288/index.html</a>

Udało mi się podłączyć do MySQL ale kiedy kliknę na dzień, wyświetla mi się:"The requested URL /5_3.php was not found on this server.". Jakie macie pomysły na poradzenie sobie z tym problemem?
erix
przekopiowany skrypt nie działa?
Gabrielx
Działa ale... czy można aby event był wyświetlany za pomocą bazy danych(bez tworzenia podstron, nie tak jak poniżej)? Bez tworzenia oddzielnie bazy dancyh ani oddzielnie podstrony.
Kod
else if(in_array($aktual,$daty)) { //jesli data jest w tablicy kolorujemy i linkujemy dany dzien
                $totalHtml .= '<td class="a"><div class="komA"><a href="5_3.php?data='.$aktual.'">'.$i.'</a></div></td>';
Quider
kiedys dawno temu napisałem taki skrypcik ;p troche prostacki, ale moze ci sie przydać :

kalendarz.php:
  1. <?
  2. /**
  3.  *
  4.  * @author Adrian
  5.  */
  6.  
  7. class kalendarz {
  8.    public function  __construct($m,$y) {
  9.        
  10.        echo"<table border='2'>";
  11.        echo"<tr><td colspan='7'>".$this->Miesiac($m);
  12.        echo"<tr><td>Pn<td>Wt<td>Sr<td>Cw<td>Pt<td>Sb<td>Nd";
  13.            for($d=1;$d<32;$d++){
  14.                $i++;
  15.                if (checkdate($m, $d, $y)){
  16.                    if ($d==1){
  17.                        echo"<tr>";
  18.                    }
  19.                    $dzien = date("N",mktime(0, 0, 0, $m, $d, $y));
  20.  
  21.                    while($dzien!=$i){
  22.                        if($i==7){
  23.                            echo"<tr>";
  24.                            $i=0;
  25.                        }
  26.                        echo "<td> </td>";
  27.                        $i++;
  28.  
  29.                    }
  30.                    if($dzien==$i){
  31.                        echo "<td>$d</td>";
  32.                    }
  33.                    if($i==7){
  34.                        echo"<tr>";
  35.                        $i=0;
  36.                    }
  37.                }
  38.            }
  39.            $w++;
  40.            echo"</table>";            
  41.    }
  42.        
  43.    
  44.    public function Miesiac($key){
  45.        $miesiace = array("Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień");
  46.        return $miesiace[$key-1];
  47.    }
  48. }
  49. ?>

oraz wywołanie w index.php:
  1. <?php
  2. /*
  3.  * @ author Adrian
  4.  */
  5. if (!isset($_GET['y']))
  6.    $_GET[y] = 2009;
  7.    
  8. $_y = $_GET['y'] - 1;
  9. $y_ = $_GET['y'] + 1;
  10. echo "<a href='index.php?y=".$_y."'> <- <-</a> ".$_GET['y']." <a href='index.php?y=".$y_."'> -> -> </a>";
  11. require_once("kalendarz.php");
  12. echo "<table border='0' align='center'>";$e=0;
  13. for($m=1;$m<13;$m++){
  14.    if($e==3){
  15.        echo"<tr>";
  16.        $e=0;
  17.    }
  18.        echo "<td>";
  19.        $kalendarz = new kalendarz($m,$_GET['y']);
  20.        $e++;
  21. }
  22. echo"</table>";
  23. ?>
Gabrielx
Quider - dzięki tongue.gif. Wicepski, za bardzo nie wiem jak to zrobić.
Kod:
http://wklej.org/id/106996/

Może utworzyć plik(w tym przykładzie 5_3.php) a potem w tym pliku połączyć się z MySQL i wyświetlić rekord. Np. jeśli w kalendarzu kliknę na 13 czerwca który ma ID eventa 3 to wówczas kalendarz przekieruję mnie do pliku 5_3.php a ten wówczas połączy się z MySQL. Macie jakieś inne pomysły?
Wicepsik
Przeciez w tym pliku jest i wyświetlanie kalendarza i wyświetlanie poszczególnych dni.
Jak masz w tym pliku 5_3.php?data= to nazwij plik 5_3.php a jak masz np. nazwę kalendarz.php to zmien w kodzie wszystkie 5_3.php na kalendarz.php
Gabrielx
O to Ci chodzi? Nie działa.
Nazwa pliku kalendarz2.php
http://wklej.org/id/107005/
Wicepsik
http://twojastrona.pl/kalendarz2.php?data=16/06/2009

ps. daj link do strony na której to robisz
Gabrielx
Mam stronę wraz z MySQL na komputerze z którego właśnie piszę(localhost). Macie jakieś podejrzenia dlaczego nie działa?

Ok. Już działa biggrin.gif. gabrielx.cba.pl

Czy moglibyście pomóc dopasować ten kalendarz do tej grafiki?
http://img26.imageshack.us/i/kalendarzb.jpg/
erix
Ok, POMOŻEMY, a nie ZROBIMY.

To Ty masz wykonać. tongue.gif
Quider
ten kalendarz, który ci posłalem jest idealny do "wkomponowania" go w tę grafikę:P Zauważ, że każdy miesiąc jest osobnym obiektem klasy:P, całość jest oparta prostacko o tabelkę tongue.gif czysty html Ci został;P
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.