Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Machr na PHP - Kalendář

Aktivity
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:12.11.2013 11:02

Zdravím vývojáře v PHP, v minisoutěži na tento týden o placku "Machr na PHP" a samolepky budeme programovat jednoduchý měsíční kalendář. Navrhněte komponentu, které zadáte datum a ona vykreslí měsíční kalendář (to samé, jako když kliknete ve Windows myší na hodiny :) ). Kalendář stačí opravdu jen vykreslit (vypsat HTML tabulku), nemusí být nijak aktivní. Komponenta by měla být objektová a jednoduchá k použití. Zadání není složité a dá se to napsat v podstatě za chvíli, určitě si procvičíte práci s datem a časem a objektový návrh. Pokud budete rychle hotoví, můžete se zamyslet i nad tím, jak v kalendáři zobrazovat nějaké události. Váš projekt se jistě bude hodit i ostatním, mohu poté přispět i se svým řešením.

Deadline jako obvykle v neděli 17.11. v 18:00.
Podrobnější pravidla soutěží: http://www.itnetwork.cz/…outezi-machr

Editováno 12.11.2013 11:19
Odpovědět
12.11.2013 11:02
You are the greatest project you will ever work on.
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:12.11.2013 11:32

Ještě ilustrační obrázek, jak může výsledek vypadat.

Nahoru Odpovědět
12.11.2013 11:32
You are the greatest project you will ever work on.
Avatar
Filip Pýrek
Tvůrce
Avatar
Odpovídá na David Hartinger
Filip Pýrek:12.11.2013 19:44

:D Říkal jsem si "Jó, to bude v klidu". Sotva jsem na tom začal dělat: :o .
:D :D ;)

Nahoru Odpovědět
12.11.2013 19:44
„The best way to predict the future is to invent it.“ — Alan Kay
Avatar
Odpovídá na Filip Pýrek
Neaktivní uživatel:12.11.2013 19:49

Já už stihl na chlup okopírovat ten sdracův vzhled :D :D

Nahoru Odpovědět
12.11.2013 19:49
Neaktivní uživatelský účet
Avatar
Milan Gallas
Tvůrce
Avatar
Odpovídá na David Hartinger
Milan Gallas:12.11.2013 21:02

a když bude komponenta aktivní a bude pracovat s databází, přidá mi to body?
Nebo je naprosto zbytečné se tímto zabývat a nijak mi to nepřidá?

 
Nahoru Odpovědět
12.11.2013 21:02
Avatar
Filip Pýrek
Tvůrce
Avatar
Filip Pýrek:12.11.2013 21:09

Zatím to vypadá takto: http://kalendar.filippyrek.cz/?… :D

Nahoru Odpovědět
12.11.2013 21:09
„The best way to predict the future is to invent it.“ — Alan Kay
Avatar
Ondřej Štorc
Tvůrce
Avatar
Odpovídá na Filip Pýrek
Ondřej Štorc:12.11.2013 21:13

Nevím jak tobě ale mně u tebe funguje jenom přepnutí měsíců

Nahoru Odpovědět
12.11.2013 21:13
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Odpovídá na Filip Pýrek
Zdeněk Pavlátka:12.11.2013 21:16

Nemáš ošetřené chybné zadání datumu.

Nahoru Odpovědět
12.11.2013 21:16
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Filip Pýrek
Tvůrce
Avatar
Nahoru Odpovědět
12.11.2013 21:17
„The best way to predict the future is to invent it.“ — Alan Kay
Avatar
Filip Pýrek
Tvůrce
Avatar
Odpovídá na Ondřej Štorc
Filip Pýrek:12.11.2013 21:22

Vlastně ten den je úplně nepodstatný , takže jsem ho odstranil :D

Nahoru Odpovědět
12.11.2013 21:22
„The best way to predict the future is to invent it.“ — Alan Kay
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Milan Gallas
David Hartinger:13.11.2013 11:12

Hlavní je jak to navrhneš a jak to bude fungovat. Když se třída kalendáře bude jmenovat Zobrazit, tak ti ani databáze nepomůže. Vždy je lepší vzít si menší sousto a to dobře zpracovat. Dobrým kompromisem je neřešit databázi, ale vyřešit zobrazování dat třeba jen z pole.

Nahoru Odpovědět
13.11.2013 11:12
You are the greatest project you will ever work on.
Avatar
Jan Poláček
Tvůrce
Avatar
Jan Poláček:14.11.2013 2:12

Přidávám zatím svou ukázku http://os-cedr.cz/kalendar/
Přemýšlím ještě nad nějakými vychytávkami, uvidím, co se z toho vyklube

Nahoru Odpovědět
14.11.2013 2:12
Instrukce na adrese 0x77104f29 odkazovala na adresu paměti 0x00000014. S pamětí nelze provést operaci: written.
Avatar
Odpovídá na Jan Poláček
Zdeněk Pavlátka:14.11.2013 6:36

Nezobrazuje se šipka zpět. Když na její místo kliknu, funguje to, jako by tam byla.

Nahoru Odpovědět
14.11.2013 6:36
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Jan Poláček
Tvůrce
Avatar
Odpovídá na Zdeněk Pavlátka
Jan Poláček:14.11.2013 6:40

Tak to je zajímavé, zkoušel jsem to v Chrome, FF i IE a všude mi to zobrazuje správně ◄ i ►, schválně jsem použil jen ASCII znaky, abych nemusel používat obrázky

Nahoru Odpovědět
14.11.2013 6:40
Instrukce na adrese 0x77104f29 odkazovala na adresu paměti 0x00000014. S pamětí nelze provést operaci: written.
Avatar
Ori I
Člen
Avatar
Ori I:14.11.2013 13:26

http://devbook.sixfeetunder.cz/calendar/

prikladám môj výtvor, zdrojové kódy sem zverejním až v nedeľu

 
Nahoru Odpovědět
14.11.2013 13:26
Avatar
Odpovídá na Jan Poláček
Zdeněk Pavlátka:14.11.2013 16:01

Já to zkoušel na androidech, na počítači se ukazuje.

Nahoru Odpovědět
14.11.2013 16:01
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Filip Pýrek
Tvůrce
Avatar
Filip Pýrek:16.11.2013 11:06

Takže hotovo - http://kalendar.filippyrek.cz/?…

Nahoru Odpovědět
16.11.2013 11:06
„The best way to predict the future is to invent it.“ — Alan Kay
Avatar
Odpovídá na Filip Pýrek
Josef Kuchař - Pepa489:16.11.2013 11:44

Máš tam Lisopat :D

Nahoru Odpovědět
16.11.2013 11:44
2x piš, jednou debuguj
Avatar
Filip Pýrek
Tvůrce
Avatar
Odpovídá na Josef Kuchař - Pepa489
Filip Pýrek:16.11.2013 12:23

Cože? mě se tam zobrazuje listopad

Editováno 16.11.2013 12:25
Nahoru Odpovědět
16.11.2013 12:23
„The best way to predict the future is to invent it.“ — Alan Kay
Avatar
Filip Pýrek
Tvůrce
Avatar
Nahoru Odpovědět
16.11.2013 12:27
„The best way to predict the future is to invent it.“ — Alan Kay
Avatar
David Hynek
Tvůrce
Avatar
Odpovídá na Filip Pýrek
David Hynek:16.11.2013 12:42

fakt je tam lisopad :)

Nahoru Odpovědět
16.11.2013 12:42
Čím víc vím, tím víc věcí nevím.
Avatar
Jan Poláček
Tvůrce
Avatar
Jan Poláček:16.11.2013 13:30

Takže dnes verze 0.52.3 beta -> http://os-cedr.cz/kalendar/

Nahoru Odpovědět
16.11.2013 13:30
Instrukce na adrese 0x77104f29 odkazovala na adresu paměti 0x00000014. S pamětí nelze provést operaci: written.
Avatar

Člen
Avatar
:17.11.2013 16:00

Konečně hotovo :)
http://leteckaposta.cz/978369984

 
Nahoru Odpovědět
17.11.2013 16:00
Avatar
Ori I
Člen
Avatar
Ori I:17.11.2013 17:13

tak trieda je nahrana tu: http://leteckaposta.cz/717925331

pouzitie: (samozrejme nic z nastaveni nieje povinne a maju defaultnu hodnotu)

require_once './calendar.class.php';

$config = array(
    'base_url'              => '',
    'show_navigation_links' => TRUE,
    'start_day'             => 'monday',
    'month_tag'             => 'month',
    'year_tag'              => 'year',
    'prev_link'             => '««',
    'next_link'             => '»»',
    'calendar_class'        => 'calendar',
    'event_class'           => 'event',
    'cur_day_class'         => 'current_day',
    'day_text'              => array('Ne','Po','Ut','St','Št','Pi','So'),
    'month_text'            => array(
                                '01' => 'Január',
                                '02' => 'Február',
                                '03' => 'Marec',
                                '04' => 'Apríl',
                                '05' => 'Máj',
                                '06' => 'Jún',
                                '07' => 'Júl',
                                '08' => 'August',
                                '09' => 'September',
                                '10' => 'Október',
                                '11' => 'November',
                                '12' => 'December'
                               )

);


$calendar = new Calendar($config);

$data = array(
    7 => array(
        'title' => 'Zubar',
        'url'   => $calendar->base_url()
    ),
    13 => array(
        'title' => 'Zapocet z matiky',
        'url'   => $calendar->base_url()
    ),
);
$month = (isset($_GET['month'])) ? $_GET['month'] : date("m", time()) ;
$year  = (isset($_GET['year'])) ? $_GET['year'] : date("Y", time()) ;

echo $calendar->generate($month, $year, $data);
Editováno 17.11.2013 17:17
 
Nahoru Odpovědět
17.11.2013 17:13
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:17.11.2013 20:17
  1. Milan Gallas (90 bodů) - Chválím pokus o MVC architekturu. Ověřování GETu, které máš v index.php, by měly správně dělat kontrolery, právě ty mají na starost zpracování parametrů od uživatele. Návrh má nějaké mouchy v pojmenování, např. metoda vypisUdalosti události nevypisuje, ale vrací, mělo by to tedy být vratUdalosti. Při výpisu kalendáře se dny s událostmi nezobrazují jinou barvou, takže není vidět kde nějaké jsou. Vzal sis docela velké sousto, k ukládání dat používáš databázi, ale popral jsi se s tím, placka je tvoje :)
  2. Michal Martinek (90 bodů) - Po spuštění se vyrojí Notice: Undefined index: mesic in Kalendar\MM8\Ka­lendar.php on line 12, platí to samé jako pro johny881. Jsi první, koho napadlo použít select na měsíc a také zobrazit dny z minulého a nadcházejícího měsíce! :) Z kódu poznávám své tutoriály, jsem rád, že jsou užitečné. Jinak to funguje docela hezky, kód generování je přehledný, škoda, že jsi nezkusil události. Na placku to stejně je, gratuluji :)
  3. Ori (80 bodů) - Chválím širokou nastavitelnost a události. Nikdy ale neprogramuj vlastní funkce na triviální věci, které jsou součástí jazyka. Mám na mysli hlavně get_days, kterou můžeš nahradit php funkcí cal_days_in_month.
  4. FilipPyrek (80 bodů) - Ten index jsi tedy dost nakombil, ale OK, je to machr na PHP :) Chválím nastavitelnost celé komponenty. Metoda vykresli je dost hustá s těmi cykly, myslím, že kdybys v tom měl za pár měsíců něco opravit, už by se ti to asi nepodařilo. Koukal jsem na svou implementaci a mám tam 4 cykly (umí to i eventy), ty jich máš 8.
  5. mayo505 (80 bodů) - Soubor s měsíce by se určitě neměl jmenovat trida :) Řešení je minimalistické a docela se mi líbí, škoda, že jsi nezkusil implementovat události.
  6. deiv19 (70 bodů) - Funkčně to není špatné, ale návrh je dost divný. Místo v těch globálních funkcích bys měl mít validaci dat ve třídě Calendar, místo die() by to mělo vyhodit výjimku :) Místo setVars by měl být konstruktor, právě ten je zodpovědný za nastavení proměnných. Create by se měla jemnovat render(), protože vypisuje. Programovat umíš, ale ta úprava a návrh by chtěly zlepšit, koukni na zdejší objektový seriál v PHP.
  7. johny881 (70 bodů) - Řešní mi hned po spuštění vypsalo: "Notice: Undefined variable: je in Kalendar\johny881\ka­lendar.php on line 60". Zřejmě jsi aplikaci ladil někde na freehostingu, kde jsou vypnuté chyby, což je samozřejmě špatně, ladit se má na localu. Soubory určitě nejsou dobrou volbou pro ukládání událostí, protože musíš např. řešit souběžný zápis, využij databázi. Pokud je někde v kódu blok:
return TRUE;
else
return FALSE;

je zbytečný. Můžeš vrátit přímo logickou hodnotu výrazu, který je v podmínce. Stejně je v podmínkách zbytečné ==TRUE. Chválím nápad se svátky. Metody vratMinuly a vratPristi jsou IMHO zbytečné, kdybys používal třídu DateTime, tak ta se dá jednoduše posouvat a datum formátovat. Metoda pro výpis kalendáře je docela kompaktní, to je dobře.

Dnes jsem hodnotil asi historicky nejdéle, tak snad vám ty komentáře k něčemu budou. Vítěze prosím aby publikovali svá díla a poslali x adresu. Na ostatní se těším příští týden :)

Editováno 17.11.2013 20:21
Nahoru Odpovědět
17.11.2013 20:17
You are the greatest project you will ever work on.
Avatar
Ori I
Člen
Avatar
Ori I:18.11.2013 6:28

dík za info, v php robim dlho ale o tej funkcii som nevedel :D, asi zacnem googlit ci uz dana funkcia neexistuje predtym ako ju naprogramujem :D

 
Nahoru Odpovědět
18.11.2013 6:28
Avatar
Filip Pýrek
Tvůrce
Avatar
Filip Pýrek:18.11.2013 14:28

Kdyby se někdo chtěl mrknout - http://leteckaposta.cz/552470706 :)

Nahoru Odpovědět
18.11.2013 14:28
„The best way to predict the future is to invent it.“ — Alan Kay
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 27 zpráv z 27.