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

Selektovanje sa ogromne liste

[es] :: PHP :: Selektovanje sa ogromne liste

[ Pregleda: 1890 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

doktor83
Subotica

Član broj: 293583
Poruke: 50

Sajt: www.oxo.rs


+1 Profil

icon Selektovanje sa ogromne liste03.07.2012. u 10:44 - pre 142 meseci
Situacija je sledeca:
Imam bazu sa klijentima. Moze ih biti 10 a moze i 10.000. Zelim da na neki nacin grupisem klijente i zato kreiram grupe.
Kako bi vi resili selektovanje klijenata u grupu ?
Znaci od kreiranja liste klijenata gde pored svakog imena postoji checkbox , do samog procesa zapisivanja u bazu.
Naravno najjednostavnije bi bilo da se odradi ispis SVIH klijenata na jednoj stranici i da se posle selekcije samo pritisne dugme koje ce da pokupi niz
selektovanih klijenata i da snimi u bazu. Ali tu je problem broj klijenata. Sta ako stvarno imam 10.000 ? Rezultat je ogromna stranica sa ogromnim brojem podataka.

Opet dalje,ako odradim listing klijenata pomocu paginacije,da ogranicim prikaz po stranici na recimo 50, kako da sacuvam sta je selektovano kada korisnik predje
na sledecu stranicu ?

Ocekujem samo ideje,ne kod :)
----------------------------------------------------------
www.oxo.rs
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
*.85-200-249.bkkb.no.

Sajt: norway.dakipro.com


+190 Profil

icon Re: Selektovanje sa ogromne liste03.07.2012. u 12:07 - pre 142 meseci
na click ili na promenu strane, snimi prethodno selektovane opcije u sesiji.
Mozes i da prikazujes uvek sve do sada selektovane u nekom bloku sa strane, ili na kraju samo izlistas da korisnik potvrdi
 
Odgovor na temu

doktor83
Subotica

Član broj: 293583
Poruke: 50

Sajt: www.oxo.rs


+1 Profil

icon Re: Selektovanje sa ogromne liste03.07.2012. u 12:18 - pre 142 meseci
Toga sam se i ja setio , al evo razmisljam i o drugim resenjima.
Sta mislis koliko bi bilo dobro/pametno resenje da pri svakom cekiranju pomocu ajax-a odradim zapis u tabelu momentalno, a pri odcekiranju da ga uklonim iz tabele ?
Ovako me ne interesuje koliko imam zapisa po stranici,ili kako stoji paginacija, niti da li je potvrdio korisnik na kraju nesto..itd

----------------------------------------------------------
www.oxo.rs
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
*.85-200-249.bkkb.no.

Sajt: norway.dakipro.com


+190 Profil

icon Re: Selektovanje sa ogromne liste03.07.2012. u 12:27 - pre 142 meseci
Mislim da je to dobra ideja, ja bi ga tako i uradio. Cim se selektuje posaljes serveru da setuje u nizu taj ID za nekom vrednost (recimo $niz[$id] = 1;), a kad se deselektuje posaljes da unsetuje taj id tog niza i tolko, deluje prilicno prosto i efikasno
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Selektovanje sa ogromne liste03.07.2012. u 14:05 - pre 142 meseci
Ja ne mogu da verujem da se uopšte diskutuje na ovu temu. Mislim da je potrebno malo PROMIŠLJANJE pre nego što se uopšte počne diskusija.

Uzmimo najgori slučaj, 10000 klijenata. Ako je nekoj osobi potrebno 3 sekunde po klijentu da odluči u koju grupu da ga stavi, za listu od 10000 klijenata, naravno treba 30000 sekundi što je 8 sati i 20 minuta efektivnog rada.

Da li zaista misliš da neko može da sedi ispred ekrana 9 sati i da čvrka checkboxove?!

Ajde da napravimo malo optimističniju prognozu: staviš 65 klijenata po stranici, pa brzim čvrkanjem jednu stranicu središ za minut (nešto više od sekunde po čvrku). Za celu listu treba više od 2 i po sata!

Sledeće, ideja da se stavi checkbox. To znači da (pretpostavljam) jedan klijent može da bude u više grupa, pa bi ta stranica imala u zaglavlju za svaku grupu kolonu u kojoj je odgovorajući checkbox. Da li to znači da ćeš morati da menjaš dizajn stranice svaki put kada se doda nova grupa? Ili ćeš, možda, napraviti dinamički stranicu, pa će u nekom momentu da se pojavi horizontalni scrollbar koji će još više da uspori proces grupisanja?
I poslednje, takav dizajn (u slučaju promenljivog broja kategorija ili grupa) zahteva pivot upite koji su katastrofa u većini baza podataka.

Dakle, prvo razmisli koje klijente uopšte treba staviti na stranicu, a tek posle kako to napraviti. Krenimo od standardnog pristupa po Marfijevom zakonu da 10% populacije ima 90% uticaja na krajnji rezultat.

Primer iz bankarstva: Potrebno je klasifikovati klijente u 5 grupa, A,B,V,G,D po kreditnom riziku. Kriterijum za svrstavanje u pojedine grupe je broj dana kašnjenja otplate. Softver prođe kroz podatke o kreditima klijenata i uradi inicijalnu klasifikaciju. E sada, na osnovu klasifikacije banka mora da odvoji rezervu i to 100% iznosa neplaćenih i nedospelih obaveza za one u kategoriji D, pa sve do 2% za one u kategoriji A. Naravno, banka želi da odvoji što manje sredstava u rezervu, pa onda želi da proveri kako su klasifikovani klijenti koji su dobili klasifikaciju D. Međutim, u kategoriji D se nalaze i oni koji duguju milion evra i oni koji duguju 5 evra. Zato banka traži: izlistaj mi samo one klijente u kategoriji D koji nose sumarno 90% izdvajanja za rezervu. Ili izdvoj samo 10% najvećih dužnika u kategoriji D. Na kraju ispadne, da od 10000 klijenata koji imaju kredit, bude 1000 koji su u kategoriji D, a 10% (ili 90%) čini 20-50 klijenata, što je već broj koji se može obraditi.
Neki drugi kriterijumi mogu biti: izlistaj klijente kojima je pao rejting, iz G u D, izlistaj klijente kojima je povećan rejting za više od dve kategorije, izlistaj klijente čija je softverski određena kategorija različita od ručno zadate kategorije itd.

Znači, pravilo je podeli da bi ovladao (izvedeno od onoga: zavadi pa vladaj). Prvo što treba da razmisliš je kako da ne prikažeš 10000 klijenata a ne kako da ih prikažeš. Ukoliko smisliš način da prikažeš samo deo informacija, biće bolji rezultati.
Zato je potrebno osmisliti mehanizam koji će na automatski način grupisati klijente, a za ljudsku intervenciju ostaviti one granične slučajeve.
Drugi princip, na stranici za klijenta dati mogućnost grupisanja.

Zaključak: automatsko masovno grupisanje, ručno polumasovno grupisanje na pažljivoj selekciji, ručno grupisanje pojedinačnog klijenta.



 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
*.85-200-249.bkkb.no.

Sajt: norway.dakipro.com


+190 Profil

icon Re: Selektovanje sa ogromne liste03.07.2012. u 14:19 - pre 142 meseci
Ja zaista cenim sto si se potrudio da napises toliki post, i samo zato necu da ga obrisem ali inace si skroz omasio temu.

Covek je hipoteticki postavio pitanje rekavsi "Moze ih biti 10 a moze i 10.000" kao i "Sta ako stvarno imam 10.000?", sto znaci da je poenta pitanja (kao sto i naslov to kaze) kako raditi selektovanje dugacke liste podataka a ne da li to uopste raditi i kako to spreciti vestackom inteligencijom.

Da je rekao da vec ima 10000 rekorda koje ne zna kako da raspodeli po grupama, e onda je ok da kazes da treba "osmisliti mehanizam koji će na automatski način grupisati klijente", jer niko normalan ne bi to radio rucno

Molim da se nadalje drzimo naslova teme i programiranja
 
Odgovor na temu

doktor83
Subotica

Član broj: 293583
Poruke: 50

Sajt: www.oxo.rs


+1 Profil

icon Re: Selektovanje sa ogromne liste04.07.2012. u 07:46 - pre 142 meseci
Bas tako. Ovde ce morati da se rucno ubacuju-selektuju (bar za sada) klijenti posto ne postoje nikakvi kriterijumi po kojima treba raditi odabir.
Djoko u pravu si sto se tice cvrkanja od par sati,ali to se jednom mora odraditi i to je to.

----------------------------------------------------------
www.oxo.rs
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6275

Sajt: pedja.supurovic.net


+1570 Profil

icon Re: Selektovanje sa ogromne liste04.07.2012. u 08:13 - pre 142 meseci
Ako je to jednokratno, ja bih pre uradio jednostavnu dekstop apliakciju koja ce to da omoguci.

No, ovaj problem je generalniji i ne mora biti jednokratan. Nisu uop[te retke situacije da korsinik treba negde da izabere jedan ili vi[e lsogova iy tabele koja mo\e sadržati ogroman broj slogova.

Ja bih to svakako radio kao univerzalan mehanizam i ne bih mnog komplikovao. Pozoves mehanizam, das mu koju tabelu treba da prikaze, koji j ekljuc tabele a)ako ne moze sam da ga sazna, jos par parametara koji bi omogucili neku kastomizaciju rada mehanizma i to ej to. Sam mehanizam je jednostavan, prikazuje ostraniceno podatke, omogucava cekbox ili sta vec treba, a izabrane slogove (kljuceve) cuvas u nekoj privremenoj tabeli ili u samoj sesiji. Na kraju imas listu izabranih kljuceva koju mozes daprimenis ak okorinik potvrdi ili da odbaciš ako otkaže celu akciju. I to je to.



 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-5.sezampro.rs.



+33 Profil

icon Re: Selektovanje sa ogromne liste04.07.2012. u 17:29 - pre 142 meseci
A da li u obzir dolazi varijanta, gde bi na toj stranici za izbor klijenata najpre imao neku padajuću listu, kojojm bi se vršio izbor liste klijenata na osnovu početnih slova njihovih imena. Znači taj select box bi imao opcije npr. A-D, E-H, I-L, itd. Kad korisnik izabere neku opciju, otvara mu se lista klijenata čija imena potpadaju pod taj izbor, zajedno sa checkbox-ovima za selekciju.

I ti onda tu perzistenciju selektovanih klijenata možeš da radiš i u JS-u, u nekom nizu, kojeg bi onda slao na server-side submit-ovanjem (možda i AJAX-oidnim) cele te forme. Znači korisnik čekira/dečekira nekog klijenta, ti taj neki id ubacuješ/izbacuješ iz niza, korisnik bira neki novi opseg klijenata, AJAX-om dovlačiš tu novu listu, itd.
 
Odgovor na temu

doktor83
Subotica

Član broj: 293583
Poruke: 50

Sajt: www.oxo.rs


+1 Profil

icon Re: Selektovanje sa ogromne liste06.07.2012. u 08:28 - pre 142 meseci
Dobar predlog,hvala Nikola :)
----------------------------------------------------------
www.oxo.rs
 
Odgovor na temu

[es] :: PHP :: Selektovanje sa ogromne liste

[ Pregleda: 1890 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

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