Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

generisanje kalendara i info za svaki dan

[es] :: PHP :: generisanje kalendara i info za svaki dan

[ Pregleda: 1356 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

peca89bg
Beograd

Član broj: 202034
Poruke: 354
95.180.55.*



+6 Profil

icon generisanje kalendara i info za svaki dan08.09.2012. u 02:35 - pre 92 meseci
Pozdrav svima,

Trebam da napravim kalendar, trenutni mesec i jos dva posle.
Grubo generisanje kalenadara mi nije problem.
Medjutim, imam podatke o clanovima koji imaju neke unapred defisane aktivnosti i oni se ispisiju u kalendaru.
Npr. 14 oktobra u 14:00h idi na to i to mesto.
E sada u tabeli imam polje id, id_user i vreme.
Vreme mi je unixtimestamp.
Kako se generise kalendar ja moram da ispisem aktivnosti korisnika za taj dan.
Generisem kalendar i ako se dan i mesec poklapaju sa userovom aktivnoscu ispisi podatke vezane za tu aktivnost i za taj dan.
Mene brine execution time za ovo.
Dakle ja mogu linearnom pretragom da za svaki dan proverim iz baze da li postoji user koji ima aktivnost za taj dan.
Ali to mi daje 90 upita. Mislim da je mnogo a plus ide join na tu tabelu odakle vucem podake on korisnik tabela.

Moja ideja je da jednim upitom pohvatam sve aktivnosti za usera i tokom while da napravim niz koji bi izgledao ovako:



Niz = [godina][mesec][dan][data] => array - data mora da bude array jer je moguce da u jednom danu user ima vise aktivnosti.
Pa onda kad se generise dan da pitam ako je setovan $nizp[$y][$m][$d] da mi vrati $nizp[$y][$m][$d]["data"];
Sa ovim dobijam jedan if i for za data koji ne verujem da ce biti imati vise iteracija od 2 - 3.

Moram da ispisem odmah sva tri meseca nazalost, ne mogu jedan pa ajax call pa drugi i ako bi mi ovo puno pomoglo a uopste i nema ajaxa.

Svaki komentar je dobrodosao :)
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 5844

Sajt: pedja.supurovic.net


+1385 Profil

icon Re: generisanje kalendara i info za svaki dan08.09.2012. u 08:05 - pre 92 meseci
Valjalo bi da daše nki primer koda.

Ne razumem što ti treba 90 upita. Podatke možeš da povučeš jednim upitom za dati datumski period.
 
Odgovor na temu

peca89bg
Beograd

Član broj: 202034
Poruke: 354
95.180.55.*



+6 Profil

icon Re: generisanje kalendara i info za svaki dan08.09.2012. u 09:39 - pre 92 meseci
Nema primera koda jer sam pitao za ideju.
Nije mi problem da otkucam samo mi ideja treba.

Pa dobro, izvucem sve podatke za 3 meseca i sta posle?
Za svaki dan da mi juri kroz ceo taj niz?

Podataka za 3 meseca moze da bude za svaki dan sto daje niz od 90 elemenata.
Dakle, linearna pretraga ne dolazi u obzir jer ima 90*90 ifova.
Imam resenje koje sam dao u prethodnom postu ali me tu brine fragmentacija memorije.
Svaka ideja dobrodosla.
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1791
*.80-202-123.nextgentel.com.

Sajt: norway.dakipro.com


+190 Profil

icon Re: generisanje kalendara i info za svaki dan08.09.2012. u 10:16 - pre 92 meseci
nisam bas skontao problem sa predlozenom strukturom niza, ali mozda da probas da koristis timestamp za svaki dan ( recimo dan u ponoc 08.09.2012 00:00:00) i onda imas mnogo plici niz, recimo za jedan dan izgleda ovako
Code:
$niz['1347055200'][] = array('data'=>'josjedannizverovatno')

Posle kad gradis kalendar (ili kad kliknes na jedan dan) mnogo je lakse da samo pogledas da li je taj datetimestamp key prazan ili ima necega, ako ima prikazes ako nema puj pike ne vazi.
Ja sam pravio jedno 5-6 kalendara uvek iz pocetka i ovaj princip mi je bio najlaksi. Mozes recimo ceo kalendar da koncipiras ooko dana, pa bi ti niz bio

Code:

//prvo sagradis dane kalendara petljom
$dayTimestamp = 1347055200;//koristis mkdate
$niz[$dayTimestamp]['day_number'] = 8;
$niz[$dayTimestamp]['is_weekend'] = 1;
$niz[$dayTimestamp]['is_today'] = 1;
...//flagujes sta god ti bude zatrebalo za taj dan, jal praznik ili je ovakav ili mu je boja onakva ili ...
$niz[$dayTimestamp]['is_bussy'] = 0;
$niz[$dayTimestamp]['events'] = array();

//i posle kad dodajes elemente, koji god pristup da koristis samo svaki event ubacis u odgovarajuci dan
$eventDatetimeStamp = $stamp;//
$niz[$eventDatetimeStamp]['is_bussy'] = 1;// ovo je samo flag da lakse identifikujes zauzete dane kad crtas kalendar
$niz[$eventDatetimeStamp]['events'][] = array() // ili objekat, ili kako se vec odlucis da prenosis evente, samo bi bilo lakse da budu jedinstveni



 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 5844

Sajt: pedja.supurovic.net


+1385 Profil

icon Re: generisanje kalendara i info za svaki dan08.09.2012. u 19:12 - pre 92 meseci
Citat:
peca89bg:
Pa dobro, izvucem sve podatke za 3 meseca i sta posle?
Za svaki dan da mi juri kroz ceo taj niz?


Ako podatke složiš u asocijativni niz onda ne moraš da trkeljišeš svaki put ceo niz već na osnovu podatka o danu i osobi možeš da izvučeš iz niza direktno samo podatke koji ti trebaju.

U svakom slučaju, brže će ti raditi i trkeljisanje velikog niza, nego izvršavanje 90 upita nad bazom.


 
Odgovor na temu

PyroPHP
Junior PHP Developer
Beograd

Član broj: 306299
Poruke: 6
95.180.15.*



+1 Profil

icon Re: generisanje kalendara i info za svaki dan08.09.2012. u 20:46 - pre 92 meseci
Uvek postoji opcija crone jobe-a. Recimo da kazes da u odredjenom trenutku okines skriptu koja ce uzeti trenutni dan tj. UNIX timestamp, proci kroz kolonu i ukoliko naidje makar na jednu planiranu aktivnost za korisnika, okini skript koji ce pokupiti podatke za sve korisnike, ili odmah mozes okinuti tu skriptu pri pokretanju Crone joba.
Druga opcija je da imas posebnu tabelu koja ce se puniti zakazanim terminima za korisnika sa odredjenim ID-om, i koja ce se isto pomocu crona npr updateovati u 00:01 i popunjavati kalendar, ne znam zasto se pominju silni IF ovi kada nisu neophodni, jer jedan query resava problem.
 
Odgovor na temu

peca89bg
Beograd

Član broj: 202034
Poruke: 354
95.180.55.*



+6 Profil

icon Re: generisanje kalendara i info za svaki dan10.09.2012. u 18:38 - pre 92 meseci
Sorry sto sad odgovaram ali bio sam na svadbi pa sad dosao sebi :)

@dakipro
to je to, slicna nam je strukuktura niza, uradio sam ipak kao sto sam dao example u mom prvom postu.

@PyroPHP
hvala na komentaru!
 
Odgovor na temu

[es] :: PHP :: generisanje kalendara i info za svaki dan

[ Pregleda: 1356 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.