[ CallMeSaMaster @ 07.09.2006. 22:53 ] @
Kako mogu da uradim sledece:

Imam na sajtu recimo 5 checkboxova i korisnik moze da odabere odnosno da klikne ili checkira proizvoljan broj boxova.Svaki korisnik koji to radi ima svoj jedinstveni ID.Ja bih htio da uradim sledece:

Da u bazu upisem sve checkirane boxove za nekog korisnika.Npr ako je korisnik koji ima id 1 checkirao 3 checkboxa(recimo box1 ,box3,box4) a drugi korisnik sa id 5 checkira box1 i box 5. Ja treba u bazu da upisem za svakog korisnika ovo:

Id Box
----------
1 1
1 3
1 4
5 1
5 5 itd.

Problem je kao da provjerim koji je box checkiran i da uzmem tu vrijednost i upisem u bazu ali sve u jednom prolazu za jednog korisnika?

[ branimir.ts @ 18.09.2006. 12:49 ] @
Mislim da bi trebao malo blize opisati kakav je to "sajt" , odn. koju vrstu skripti koristis. U principu, ukoliko su checkbox-ovi chekirani i uradis POST (kako god) web serveru ce se proslediti Onn ili Off vrednosti a od same prirode sajta (.asp, php jsp sevrlet ili sta vec) zavisi na koji nacin ce skripte (ili moduli) handlovati POSTOM i na kraju upisivati u bazu odredjene vrednosti.

Pozdrav
[ Fedya @ 18.09.2006. 12:57 ] @
Moj predlog je da (ako je ikako moguce) promenis pristup problemu.
Bolje napravi tabelu
korisnik --- box1 --- box2 --- box3 itd
4 --- 0 --- 1 --- 1
2 --- 1 --- 0 --- 0


Ovako ce ti biti mnogo lakse i da upises u bazu i kasnije da izcitas (npr ako hoces ponovo da prikazes izabrane boxove za odredjenog korisnika)...
[ goranvuc @ 18.09.2006. 13:30 ] @
Za resavanje tvog i slicnih problema najbolje je koristiti binarnu komparaciju, ako je podrzava jezik gde se implementira.
Svaki box treba u slucaju da je ukljucen da uveca rezultat za odgovarajuci stepen od broja 2, a onda je lako naknadno izracunati koji su boxovi ukljuceni.
Npr. ako su uikljuceni 1, 4 i 5 box onda je rezultat 20 + 23 + 24 = 25 (ako sam dobro izracunao). Takav rezultat upises kao izbor korisnika.
Kada ucitavas obrazac, proveravas za svaki od box-ova da li je ukljucen (u VB se koristi operator AND):

IF (Rezultat AND 1) = 1 THEN Check_1.Value = ukljucen ELSE Check_1.Value = iskljucen
....
IF (Rezultat AND 2n) = 2n) THEN Check_n.Value = ukljucen ELSE Check_n.Value = iskljucen

Dao sam ti opsti kod, posto ne znam u kom jeziku radis, ali nadam se da si shvatio poentu.
[ CallMeSaMaster @ 18.09.2006. 15:52 ] @
@Goran

Da shvatio sam poentu ali mi se to cini jos kompleksnijim jer je vec dovoljno kompleksno.Ali hvala ti u svakom slucaju.

@Fedya

Naravno da bi to bilo rijesenje no rekli su mi da bi ovako trebalo da to uradim. No pogledat cu da li mogu promijeniti u ovaj tvoj metod.
[ logic_rabbit @ 19.09.2006. 07:53 ] @
Resenje je vrlo jednostavno,napravis stored proceduru koja ce insertovati u tu tvoju tabelu u bazi na osnovu prosledjenih parametara.Onda proletis kroz grid (sa foreach)i vidis sta je cekirano,ako je kolona box cekirana prosledis proceduri 2 parametra id i checkbox i izvrsis je,tako se posao odradi.

foreach(DataRow dr in ds.Tables["Table"].Rows)
{
if (dr[0].ToString() == "True")
{
ID = dr[1].ToString();
CHECK=dr[0].ToString();
//ovde izvrsis proceduru
}
}
[ Fedya @ 19.09.2006. 08:37 ] @
Super, jes' jednostavno!
Ajd sad daj kod koji ce cekirati izabrane check box-ove (koji su vec upisani u bazu) kada drugi put dodjes na stranu.
[ logic_rabbit @ 19.09.2006. 11:10 ] @
Citat:
Fedya: Super, jes' jednostavno!
Ajd sad daj kod koji ce cekirati izabrane check box-ove (koji su vec upisani u bazu) kada drugi put dodjes na stranu.


CREATE TABLE #TEMP
{
ID int,
box1 int,
box2 int,
...
}
-----------------
INSERT INTO #TEMP
SELECT ID,CASE BOX WHEN 1 THEN 1 ELSE 0 AS Box1,CASE BOX WHEN 2 THEN 1 ELSE 0 AS Box2...

---------------------
SELECT
ID,
SUM(Box1)AS Box1,
SUM(Box2) AS Box2,
...
FROM
#TEMP
GROUP BY
ID
----------------------------
DROP TABLE #TEMP



Rezultatom ovog querija napunimo datatable objekat i prikacimo na to grid.