Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP] Prosty kalendarz w PHP
Gabrielx
post 22.05.2009, 12:38:50
Post #1





Grupa: Zarejestrowani
Postów: 157
Pomógł: 2
Dołączył: 24.03.2009

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


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ę.
Go to the top of the page
+Quote Post
SzamanGN
post 22.05.2009, 12:44:08
Post #2





Grupa: Zarejestrowani
Postów: 94
Pomógł: 14
Dołączył: 11.10.2007

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


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)?


--------------------
SzamanGN
Go to the top of the page
+Quote Post
Gabrielx
post 22.05.2009, 12:47:57
Post #3





Grupa: Zarejestrowani
Postów: 157
Pomógł: 2
Dołączył: 24.03.2009

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


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)
Go to the top of the page
+Quote Post
in5ane
post 22.05.2009, 12:52:49
Post #4





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


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.


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
Gabrielx
post 22.05.2009, 12:57:21
Post #5





Grupa: Zarejestrowani
Postów: 157
Pomógł: 2
Dołączył: 24.03.2009

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


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?
Go to the top of the page
+Quote Post
in5ane
post 22.05.2009, 12:59:20
Post #6





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


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


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
krzysiekk
post 22.05.2009, 13:16:23
Post #7





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 13.03.2006
Skąd: Jaworze

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


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.    ?>
Go to the top of the page
+Quote Post
ikssde
post 22.05.2009, 13:19:31
Post #8





Grupa: Zarejestrowani
Postów: 217
Pomógł: 40
Dołączył: 20.08.2008

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


Może napisz z jakiej biblioteki korzystasz? snitch.gif
Go to the top of the page
+Quote Post
SzamanGN
post 22.05.2009, 13:20:56
Post #9





Grupa: Zarejestrowani
Postów: 94
Pomógł: 14
Dołączył: 11.10.2007

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


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.


--------------------
SzamanGN
Go to the top of the page
+Quote Post
krzysiekk
post 22.05.2009, 19:49:54
Post #10





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 13.03.2006
Skąd: Jaworze

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


wykozystalem przyklad z manuala PEAR

klasa potrzebna jest do pobrania tu:
http://pear.php.net/package/Calendar/download
Go to the top of the page
+Quote Post
Gabrielx
post 15.06.2009, 16:50:46
Post #11





Grupa: Zarejestrowani
Postów: 157
Pomógł: 2
Dołączył: 24.03.2009

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


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?

Ten post edytował Gabrielx 15.06.2009, 16:57:21
Go to the top of the page
+Quote Post
erix
post 15.06.2009, 16:53:56
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  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


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Gabrielx
post 15.06.2009, 16:56:45
Post #13





Grupa: Zarejestrowani
Postów: 157
Pomógł: 2
Dołączył: 24.03.2009

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


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?
Go to the top of the page
+Quote Post
erix
post 15.06.2009, 16:58:34
Post #14





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




przekopiowany skrypt nie działa?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Gabrielx
post 15.06.2009, 17:04:46
Post #15





Grupa: Zarejestrowani
Postów: 157
Pomógł: 2
Dołączył: 24.03.2009

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


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>';


Ten post edytował Gabrielx 15.06.2009, 17:17:08
Go to the top of the page
+Quote Post
Wicepsik
post 15.06.2009, 17:12:48
Post #16





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


Tak

empty" title="Zobacz w manualu PHP" target="_manual , GET" title="Zobacz w manualu PHP" target="_manual , if" title="Zobacz w manualu PHP" target="_manual

Ten post edytował Wicepsik 15.06.2009, 17:13:16


--------------------
Go to the top of the page
+Quote Post
Quider
post 15.06.2009, 17:42:39
Post #17





Grupa: Zarejestrowani
Postów: 91
Pomógł: 9
Dołączył: 6.03.2009
Skąd: Katowice

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


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


--------------------
www.quider.pl <- moja prywatna strona

Pomogłem? Kliknij Pomógł
Go to the top of the page
+Quote Post
Gabrielx
post 16.06.2009, 10:44:19
Post #18





Grupa: Zarejestrowani
Postów: 157
Pomógł: 2
Dołączył: 24.03.2009

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


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?
Go to the top of the page
+Quote Post
Wicepsik
post 16.06.2009, 10:50:20
Post #19





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


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


--------------------
Go to the top of the page
+Quote Post
Gabrielx
post 16.06.2009, 10:56:43
Post #20





Grupa: Zarejestrowani
Postów: 157
Pomógł: 2
Dołączył: 24.03.2009

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


O to Ci chodzi? Nie działa.
Nazwa pliku kalendarz2.php
http://wklej.org/id/107005/
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 Wersja Lo-Fi Aktualny czas: 24.04.2024 - 21:49