Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [tutorial] Kartka z kalendarza PHP+Smarty
Forum PHP.pl > Inne > Oceny
JoShiMa
Robiłam ostatnio w jednym z moich skryptów robiłam kalendarium w postaci kartki z kalendarza z zaznaczonymi wydarzeniami. Postanowiłam zrobić z tego tutorial. Chciałabym, żebyście napisali co myślicie na jego temat i czy coś należałoby poprawić (zagmatwane, niejasne sformułowania, skróty myślowe, mało maślane itp).
nospor
Tresci oceniac nie będę - brak czasu, ale wytkne ci pare bledow winksmiley.jpg

- _GET['miesiac'] - hmmm, kod nie ma prawa dzialac
- pozatym skoro bierzesz cos z url i to cos ma byc liczba, to rob jeszcze rzutowanie (int), szczegolnie gdy to idzie do bazy
- "tekst" - uczmy ludzi pisac dobrze 'tekst' - jak nie ma zmiennych to nie uzywajmy ""
- "SELECT ID,data
FROM tabela_wydarzenia
WHERE data BETWEEN '".$od."' ...
skoro juz uzywam "" to korzystajmy z jego dobrodziejstw:
"SELECT ID,data
FROM tabela_wydarzenia
WHERE data BETWEEN '$od'....

- $szablon->assign('kalendarz', $dane); - $dane to dosc spora tablica. warto wiec przekazac ją przez referencje: $szablon->assign_by_ref('kalendarz', $dane);

- aplikacja na stronie co dalas nie dziala. Gdy klikam na kolejny miesiac/rok to dostaje 404
JoShiMa
Cytat(nospor @ 2.07.2008, 11:34:06 ) *
- _GET['miesiac'] - hmmm, kod nie ma prawa dzialac

Upssss. Masz rację smile.gif

Cytat(nospor @ 2.07.2008, 11:34:06 ) *
- pozatym skoro bierzesz cos z url i to cos ma byc liczba, to rob jeszcze rzutowanie (int), szczegolnie gdy to idzie do bazy

Poza elegancją jakie to ma znaczenie?

Cytat(nospor @ 2.07.2008, 11:34:06 ) *
- "tekst" - uczmy ludzi pisac dobrze 'tekst' - jak nie ma zmiennych to nie uzywajmy ""

Rozumiem, że to tez elegancja?

Cytat(nospor @ 2.07.2008, 11:34:06 ) *
- "SELECT ID,data
FROM tabela_wydarzenia
WHERE data BETWEEN '".$od."' ...
skoro juz uzywam "" to korzystajmy z jego dobrodziejstw:
"SELECT ID,data
FROM tabela_wydarzenia
WHERE data BETWEEN '$od'....

Słusznie. Przerabiałam ten kod z bardziej skomplikowanego, gdzie tak się nie dało.

Cytat(nospor @ 2.07.2008, 11:34:06 ) *
- $szablon->assign('kalendarz', $dane); - $dane to dosc spora tablica. warto wiec przekazac ją przez referencje: $szablon->assign_by_ref('kalendarz', $dane);

Zainteresuję sie tym

Cytat(nospor @ 2.07.2008, 11:34:06 ) *
- aplikacja na stronie co dalas nie dziala. Gdy klikam na kolejny miesiac/rok to dostaje 404

Dziwne, bo mi działa sad.gif Napiszesz mi jaki link dostajesz?
nospor
Cytat
Cytat(nospor @ 2.07.2008, 11:34:06 )
- pozatym skoro bierzesz cos z url i to cos ma byc liczba, to rob jeszcze rzutowanie (int), szczegolnie gdy to idzie do bazy

Poza elegancją jakie to ma znaczenie?
No raczej kwestie bezpieczenstwa. Danych wogole nie filtrujesz.

Cytat
Cytat(nospor @ 2.07.2008, 11:34:06 )
- "tekst" - uczmy ludzi pisac dobrze 'tekst' - jak nie ma zmiennych to nie uzywajmy ""

Rozumiem, że to tez elegancja?
Nie. "" wykonuje sie dluzej, gdyz php szuka w nim zmiennych. W ' ' php nie szuka zmiennych i nie stara sie ich parsowac

Cytat
- aplikacja na stronie co dalas nie dziala. Gdy klikam na kolejny miesiac/rok to dostaje 404

Dziwne, bo mi działa Napiszesz mi jaki link dostajesz?
Mow szybko co zmienilas winksmiley.jpg Teraz juz dziala smile.gif
JoShiMa
Cytat(nospor @ 2.07.2008, 11:51:41 ) *
No raczej kwestie bezpieczenstwa. Danych wogole nie filtrujesz.

Pokazałam schemat skryptu, gdybym chciała rozwodzić sie nad wszystkimi aspektami wyszłaby mi książka smile.gif Może kiedyś napisze i o kwestiach bezpieczeństwa smile.gif

Cytat(nospor @ 2.07.2008, 11:51:41 ) *
Mow szybko co zmienilas winksmiley.jpg Teraz juz dziala smile.gif

Nic, widocznie natrafiłeś na czkawkę serwera tongue.gif Ale hosting tego serwisu to już nie mój ból smile.gif
Shili
Cytat
Pokazałam schemat skryptu
Ale musisz brać pod uwagę, że skorzystają z tego tutoriala i najwięksi laicy. Wzmianka o podstawowych metodach zabezpieczania powinna się znaleźć winksmiley.jpg

Sam opis wszystkiego jest moim zdaniem jasny i przejrzysty.
nospor
Cytat
Pokazałam schemat skryptu, gdybym chciała rozwodzić sie nad wszystkimi aspektami wyszłaby mi książka Może kiedyś napisze i o kwestiach bezpieczeństwa
Ale tu chodzilo o glupie (int) nic wiecej winksmiley.jpg
bim2
Nospor miałeś rację, jest 404. Później odświeżyłem i PHPSESSID się nie wkradł no i zadziałało. :]

Cytat
[404] File Not Found : Plik nie istnieje
Podany w zapytaniu URL /index09.php&?PHPSESSID=06da2126fc889494ae7a3ba6325d7e8d nie został odnaleziony na tym serwerze.
JoShiMa
Cytat(nospor @ 2.07.2008, 12:23:08 ) *
Ale tu chodzilo o glupie (int) nic wiecej winksmiley.jpg

No masz rację. Kwestią bezpieczeństwa też się zajmę smile.gif

Cytat(bim2 @ 2.07.2008, 12:57:13 ) *
Nospor miałeś rację, jest 404. Później odświeżyłem i PHPSESSID się nie wkradł no i zadziałało. :]

Dzięki za info. Nigdy mi się to nie przytrafiło, będę musiała przyjrzeć się co nie tak jeszcze jest w tym skrypcie (jak widać jest jeszcze w budowie sad.gif ). Na przyszłość przykład z tutoriala dam do niezależnego skryptu.
nospor
ojojoj, znalazlem jeszcze jednego bobola. Dziewczyna z takim doswiadczeniem na forum a takie bledy... wstyd, poprostu wstyd...
Cytat
obsłużć

winksmiley.jpg

ps: szukaj w ostatnim zdaniu artykułu
JoShiMa
wstydnis.gif


A tak sprawdzałam. Dziwne, że moduł do sprawdzania pisowni mi tego nie pokazał.
.radex
Ja bym od razu uczył (nie dosłownie, tylko z przykładowych kodów) przejrzystego pisania kodu.

W tej chwili jest:

  1. <?php
  2. if(isset($_GET['miesiac']) and isset($_GET['rok'])){
  3. $dane['miesiac'] = (int)$_GET['miesiac'];
  4.  $dane['rok'] = (int)$_GET['rok'];
  5. }else{
  6.  $dane['rok'] = date('Y');
  7.  $dane['miesiac'] = date('n');
  8. }
  9.  
  10. $znacznik = mktime(1,1,1,$dane['miesiac'],1,$dane['rok']);
  11. $l_dni_w_miesiacu = date('t',$znacznik);
  12. $od = $dane['rok'].'-'.$dane['miesiac'].'-1';
  13. $do = $dane['rok'].'-'.$dane['miesiac'].'-'.$l_dni_w_miesiacu;
  14. ?>


nie lepiej:

  1. <?php
  2. if(isset($_GET['miesiac']) && isset($_GET['rok']))
  3. {
  4.  $dane['miesiac'] = (int) $_GET['miesiac'];
  5.  $dane['rok'] = (int) $_GET['rok'];
  6. }
  7. else
  8. {
  9.  $dane['rok'] = date('Y');
  10.  $dane['miesiac'] = date('n');
  11. }
  12.  
  13. $znacznik = mktime(1, 1, 1, $dane['miesiac'], 1, $dane['rok']);
  14. $l_dni_w_miesiacu = date('t', $znacznik);
  15. $od = $dane['rok'] . '-' . $dane['miesiac'] . '-1';
  16. $do = $dane['rok'] . '-' . $dane['miesiac'] . '-' . $l_dni_w_miesiacu;
  17. ?>


questionmark.gif
JoShiMa
[quote name='radex_p' date='2.07.2008, 21:08:30 ' post='488919']
Ja bym od razu uczył (nie dosłownie, tylko z przykładowych kodów) przejrzystego pisania kodu.
Jeśli chodzi Ci o rozstrzelenie tekstu to wcale nie uważam, że to jest bardziej przejrzyste. Programuję w kilku językach (nie tylko "sieciowych") i dla mnie zawsze czytelniejszy był kod zwarty z małą ilością odstępów, pustych wierszy i wierszy zawierających wyłącznie klamry. Cenię sobie przy tym edytory prawidłowo i w sposób konfigurowalny kolorujący składnię. Dlatego nie uważam, by był sens uczenia takiego czy innego sposobu zapisu. To jest sprawa indywidualna i każdy wie lepiej jaki kod mu się lepiej czyta i pisze. biggrin.gif
strife
Witam, smile.gif

Cytat
Dlatego nie uważam, by był sens uczenia takiego czy innego sposobu zapisu. To jest sprawa indywidualna i każdy wie lepiej jaki kod mu się lepiej czyta i pisze. biggrin.gif

Problem wtedy, gdy pracuje się zespołowo, nie każdemu w zespole może podobać się Twój sposób zapisu. Dlatego stosuje się odpowiednie notacje w programowaniu.

W sam tutorial nie wczytywałem się za bardzo, ale wygląda że jest dobrze napisany (pomijając błędy, które powytykał nospor tongue.gif). Nic tylko życzyć Ci powodzenia w pisaniu kolejnych smile.gif

PS. Przypadkiem w smartach nie ma konstrukcji, które umożliwiają wyświetlenie listy miesięcy/dni/lat w select'cie? : > może warto by było użyc tego winksmiley.jpg
JoShiMa
Cytat(strife @ 3.07.2008, 09:33:04 ) *
Przypadkiem w smartach nie ma konstrukcji, które umożliwiają wyświetlenie listy miesięcy/dni/lat w select'cie? : > może warto by było użyc tego winksmiley.jpg

Może są, ale nie bardzo widzę ich zastosowanie w tym skrypcie. Poza tym ja też się jeszcze uczę i jak napisałam w opisie bloga "Ten blog ma służyć mi, jako podręczny notatnik, ale w zamyśle ma być również narzędziem, które pozwoli mi dzielić się z innymi nabytą wiedzą." tongue.gif

Co do pracy zespołowej to trochę inna sprawa. Ja pracuję zespołowo ale już na takim etapie, że każdy w zespole robi własny niezależny pakiet i nikt nikomu w kodzie nie grzebie tongue.gif dlatego nikt się nie musi do nikogo naginać smile.gif Jedyne co musi rozumieć zespół to język UML ale tu standardy są jasne.
nospor
@JoShiMa nie zwracaj uwagi na tych "sztywniakow". Zazdrosni są ze ja wylapalem tyle "powaznych" bledow a oni nic nie znaleźli, to teraz czepiają sie jakis standardow pisania ot i wszystko winksmiley.jpg
Tak jak ty pisalas to tez jest standard, a ze oni go nie znają to ich niewiedza i tyle biggrin.gif

a juz tak calkiem poważnie:
W artykulach tego typu takie rzeczy jak nawias { w lini tej samej czy linie nizej to juz naprawde bez znaczenia. Standardy pisania też ważna rzecz, ale nie popadajmy w paranoje. Standardów jest kilka i to ze ktoś pisze w innym niż my to nie znaczy ze jest niedobry

edit down: oj, to był taki zart, specjalnie wziąłem w cudzyslowia tych "sztywniakow" i dalem na koncu przymruzenie oka winksmiley.jpg Czyżby jednak słowo "sztywniak" było prawdziwe? winksmiley.jpg
Tak czy siak nie mialem zamiaru nikogo obrazac a jesli ktos jednak sie poczuł urazony do najmocniej przepraszam
.radex
Cytat(nospor @ 3.07.2008, 09:40:04 ) *
@JoShiMa nie zwracaj uwagi na tych "sztywniakow". Zazdrosni są ze ja wylapalem tyle "powaznych" bledow a oni nic nie znaleźli, to teraz czepiają sie jakis standardow pisania ot i wszystko winksmiley.jpg


Yyyy.... Sztywniaków? blinksmiley.gif Ja tylko wyraziłem moją opinię, że ten kod jest mało czytelny i tyle winksmiley.jpg
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.