DevProTalk

Forumi IT profesionalaca
web development, web design, e-business, SEO


Idite nazad   DevProTalk > DevProTalk > Sva početnička pitanja
Beach Wedding Dresses - Looking for the Wedding Dress? Here, 1dress.co.uk stunning collection of beach wedding dresses is just what you are looking for.
charles wang

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.

Odgovori
 
Alati teme Način prikaza
Staro 01. 09. 2010.   #1
blackshtef
profesionalac
Qualified
 
Avatar blackshtef
 
Datum učlanjenja: 27.09.2007
Lokacija: Grubišno Polje - Varaždin
Poruke: 104
Hvala: 10
3 "Hvala" u 2 poruka
blackshtef is on a distinguished road
Pošaljite poruku preko MSN za blackshtef Pošaljite poruku preko Skype™ za blackshtef
Default 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.
blackshtef je offline   Odgovorite uz citat
Staro 01. 09. 2010.   #2
vidak
Banned
Expert
 
Datum učlanjenja: 29.09.2007
Poruke: 458
Hvala: 131
71 "Hvala" u 44 poruka
vidak is on a distinguished road
Default

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';
vidak je offline   Odgovorite uz citat
"Hvala" vidak za poruku:
Staro 01. 09. 2010.   #3
vidak
Banned
Expert
 
Datum učlanjenja: 29.09.2007
Poruke: 458
Hvala: 131
71 "Hvala" u 44 poruka
vidak is on a distinguished road
Default

... 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
vidak je offline   Odgovorite uz citat
Staro 01. 09. 2010.   #4
blackshtef
profesionalac
Qualified
 
Avatar blackshtef
 
Datum učlanjenja: 27.09.2007
Lokacija: Grubišno Polje - Varaždin
Poruke: 104
Hvala: 10
3 "Hvala" u 2 poruka
blackshtef is on a distinguished road
Pošaljite poruku preko MSN za blackshtef Pošaljite poruku preko Skype™ za blackshtef
Default

thx, probat ću tako
__________________
I, blackshtef
blackshtef je offline   Odgovorite uz citat
Staro 02. 09. 2010.   #5
vidak
Banned
Expert
 
Datum učlanjenja: 29.09.2007
Poruke: 458
Hvala: 131
71 "Hvala" u 44 poruka
vidak is on a distinguished road
Default

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
vidak je offline   Odgovorite uz citat
Staro 02. 09. 2010.   #6
vidak
Banned
Expert
 
Datum učlanjenja: 29.09.2007
Poruke: 458
Hvala: 131
71 "Hvala" u 44 poruka
vidak is on a distinguished road
Default

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.
vidak je offline   Odgovorite uz citat
Odgovori


Alati teme
Način prikaza

Pravila pisanja
Možete ne započinjati nove teme
Možete ne slati odgovore
Možete ne slati priloge
Možete ne izmeniti svoje poruke
vB kôd je Uključen
Smajliji su Uključen
[IMG] kod je Uključen
HTML kôd je Isključen
Pogledajte forum

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


Vreme je GMT +2. Trenutno vreme je 08:51.


Blogodak - Domaci blogovi na jednom mestu Caught in a web - web dev blog
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.
Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.