|
Sva početnička pitanja Sva početnička pitanja bi trebala da se postavljaju u ovom forumu, a ako se pretvori u kvalitetnu diskusiju interesantnu svima - prebacićemo je u odgovarajući forum. Molimo "znalce" da ne omalovažavaju početnike, ako žele da pomognu svi ćemo biti zahvalni, ako ne žele, neka preskoče ovaj forum. |
|
Alati teme | Način prikaza |
01. 09. 2010. | #1 |
profesionalac
Qualified
|
Logički problem - prikaz privatno/javno
Prilikom registracije korisnika na dating servis, kod svakog atributa o sebi postoji checkbox koji, ako je checkiran, znači da je taj podatak privatan i vidljiv je u rezultatima pretrage samo kada registrirani gost pretražuje.
Kada pretražuje neregistrirani, ti podaci se ne pokazuju u rezultatima. E sad, ja sam to riješio tako da fino pokupim te checkboxove u array i upišem u bazu. Sad dolazi problem - kad idem pretraživati, kako odrediti koji atribut prikazati, a koji ne? Imam i provjeru za tip korisnika (logiran, nelogiran, admin...) i to je ok, s tim problema nema. Problem mi je, nekako više logički, ne znam kako bih si ga u glavi zamislio - kako da ja sad od niza brojeva 2,5,7,13 (IDevi checkboxova koji su bili označeni) znam da gostu ne smijem prikazati te atribute, a adminu smijem? Odnosno - kako povezati te brojeve s onim što bi trebali predstavljati? Off Topic: ironično, ovo mi je 100. post na DPT i ispod imena mi stoji profesionalac, štoviše, qualified
__________________
I, blackshtef Poslednja izmena od blackshtef : 01. 09. 2010. u 01:11. |
01. 09. 2010. | #2 |
Banned
Expert
Datum učlanjenja: 29.09.2007
Poruke: 458
Hvala: 131
71 "Hvala" u 44 poruka
|
U tabelu user dodaš polja tipa checkbox1 enum('Y'), checkbox2 enum('Y') , checkbox3 enum('Y') ...
HTML checkbox-ove povežeš sa poljima i pri insert ili update pustiš ih sve u tabelu upiše. I to svaki put. To je najjednostavnije za upis a onda moraš da praviš u programu logiku prikaza. drugi, duži način je da napraviš tabele create table dozvola(dozvola_id tinyint(1) unsigned not null primary key auto_increment, dozvola varchar(255) unique); i create table user_dozvola (user_id int unsigned not null, dozvola_id tinyint(1) unsigned not null, dozvolio enum('Y', 'N')); Iz tabele dozvola: SELECT dozvola_id, dozvola FROM dozvola Svaka dozvola u <p>Dozvola</p> , svaki checkbox dobije ime dozvola_id Tabela user_dozvola je relacija više na više ali definišeš da je unique index nad poljima(user_id, dozvola_id) pa nije moguće da user ima više puta upisanu istu dozovolu; onda INSERT INTO user_dozvola VALUES (:user_id, :dozvola_id, :dozvolio) ON DUPLICATE KEY UPDATE user_id = :user_id, dozvola_id = :dozvola_id, dozvolio = :dozvolio; Onda je lako selektovati samo ono što je user dozvolio SELECT * FROM user_dozvola WHERE dozvolio = 'Y'; |
"Hvala" vidak za poruku: |
01. 09. 2010. | #3 |
Banned
Expert
Datum učlanjenja: 29.09.2007
Poruke: 458
Hvala: 131
71 "Hvala" u 44 poruka
|
... to jest SELECT user_id, dozvola FROM user
INNER JOIN user_dozvola USING(user_id) INNER JOIN dozvola USING (dozvola_id) WHERE user_id = :user_id AND dozvolio = 'Y' GROUP BY user_id ... tako nekako |
01. 09. 2010. | #4 |
profesionalac
Qualified
|
thx, probat ću tako
__________________
I, blackshtef |
02. 09. 2010. | #5 |
Banned
Expert
Datum učlanjenja: 29.09.2007
Poruke: 458
Hvala: 131
71 "Hvala" u 44 poruka
|
eeee
bilo mi interesantno pa sam sebi napravio na sajtu create table saglasnost(saglasnost_id tinyint(1) unsigned not null primary key auto_increment, saglasnost varchar(255) not null unique) engine = innodb; insert into saglasnost values (null, 'Sistemska obaveštenja'), (null, 'Novosti'), (null, 'Reklamna obaveštenja'); create table user_saglasnost(user_id int unsigned not null, saglasnost_id tinyint(1) unsigned not null, saglasan enum('on')) engine = innodb; alter table user_saglasnost add foreign key (user_id) references user(user_id) on delete cascade; alter table user_saglasnost add unique(user_id, saglasnost_id); Za unos saglasnosti za postojeće usere - 1,2,3 su saglasnost_id; insert into user_saglasnost(user_id, saglasnost_id, saglasan) select user_id, 1, 'on' from user; insert into user_saglasnost(user_id, saglasnost_id, saglasan) select user_id, 2, 'on from user; insert into user_saglasnost(user_id, saglasnost_id, saglasan) select user_id, 3, 'on' from user; Upiti nad saglasnoscu. SELECT saglasnost_id, saglasnost FROM saglasnost // dobiješ sve redove SELECT saglasnost_id, saglasan FROM user_saglasnost WHERE saglasnost_id = :saglasnost_id AND user_id = :user_id / povuces saglasnost user-a za svaku saglasnost u bazi. if($saglasan['saglasan']) return "checked"; else return null; // da vrati umesto on, checked da bi polje bilo ispisano primer checbox polja // uz template sistem <input type=checkbox name='Saglasnost_id{$SAGLASNOST_ID}' id='Saglasnost_id{$SAGLASNOST_ID}' {$SAGLASAN}> i to je to |
02. 09. 2010. | #6 |
Banned
Expert
Datum učlanjenja: 29.09.2007
Poruke: 458
Hvala: 131
71 "Hvala" u 44 poruka
|
za upis u bazu
$saglasnosti = $User->getSaglasnost(); // izvučeš is tabele saglasnost foreach($saglasnosti as $saglasnost) { $saglasan = $_POST["Saglasnost_id".$saglasnost['saglasnost_id']]; // ovim dobiješ vrednost polja koje odgovara saglasnost_id $sql = "UPDATE user_saglasnost SET saglasan = :saglasan WHERE saglasnost_id = :saglasnost_id AND user_id = :user_id"; $array = array(':saglasnost_id'=>$saglasnost['saglasnost_id'], ':user_id'=>$_SESSION['User_id'], ':saglasan'=>$saglasan); db::insert($sql, $array); // ovo je nešto moje za pristup bazu... bla.. bla... bla... } za par dana ću da postavim novu verziju gde to radi a ako je hića, javi na PP da ti pošaljem link ka test sajtu. Poslednja izmena od vidak : 02. 09. 2010. u 00:48. |
|
|
Slične teme | ||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
Privatno zdravstveno osiguranje - kako resavate | conica | Opušteno | 14 | 24. 08. 2008. 03:19 |
forma i prikaz testa | pcigre | Programiranje | 14 | 21. 06. 2008. 05:15 |
Prikaz slika na twitteru | Tamara Pajkić | Sva početnička pitanja | 26 | 15. 10. 2007. 09:33 |