Autor | Zpráva | ||
---|---|---|---|
nightrider Profil |
#1 · Zasláno: 20. 7. 2009, 22:49:05 · Upravil/a: nightrider
Dobrý večer, chci se zeptat jak mám udělat zápis práva funkcí? Můžu na to dělat sloupce a rvát je do podmínek, ale je to prasárna.
Moje predstava je mit tabulku ve který bude bunka "práva" s typem text. Do "práva" by se to zapisovalo třeba: kontakt:ano; mapa:ano; Taky, ale ještě nevím, jak mám potom stoho brát výsledky? Stringem nebo se to dělá jinak? Děkuju všem za rady. |
||
Kajman_ Profil * |
#2 · Zasláno: 20. 7. 2009, 22:55:19
Co třeba takto nějak?
prava (id_prava,popis) uzivatel (id_uzivatele,loginatak,...) opravneni (id_prava,id_uzivatele,hodnota) |
||
nightrider Profil |
#3 · Zasláno: 20. 7. 2009, 23:01:17
Práva by se vstahovali k funkcím prezentace. To co popisujete je vážně dobrý, ale je to spíš k právum k administraci. To je moc dobrá věc, ale to budu možná řešit jindy a možná stim co se tady "naučím" si tu funkci udělám i sám :-)
|
||
stepanka Profil * |
#4 · Zasláno: 21. 7. 2009, 00:08:34
nightrider
Tvoje tabulka (resp. nejspíš její návrh) není ani v první normální formě. To, co napsal Kajman_ je správně, a pokud potřebuješ uchovávat více informací o právech, rozšiř tabulku opravneni (id_prava,id_uzivatele,hodnota) na tabulku opravneni (id_prava,id_uzivatele,mapa,kontakt) kde ve sloupcich mapa a kontakt potom můžeš ukládat Tvé hodnoty ano/ne. |
||
Alphard Profil |
#5 · Zasláno: 21. 7. 2009, 00:18:13
stepanka:
> opravneni (id_prava,id_uzivatele,mapa,kontakt) > kde ve sloupcich mapa a kontakt potom můžeš ukládat Tvé hodnoty ano/ne. Není to trochu překombinované? K čemu potom bude id_prava? Buď spojíme tabulku prava a opravneni, nebo ne, ale IMHO to nemůžeme kombinovat. Viděl bych to na opravneni (id, id_uzivatele, mapa, kontakt, clanky) kde id je identifikátor daného záznamu. nightrider: Asi není třeba zdůrazňovat, že Kajmanův návrh je řádově lepší, ale pro několik málo skupin práv by to šlo i takhle. |
||
nightrider Profil |
#6 · Zasláno: 21. 7. 2009, 04:34:47 · Upravil/a: nightrider
"Stepanka" Vím, že kajman_ má pravdu, ale bohužel to není to jak to potřebuju a jsem vděčnej za každou radu, ale prosím přečti si co jsem napsal: To co popisujete je vážně dobrý, ale je to spíš k právum k administraci.
Tvůj návrh databáze je to co právě nechci. To co mi píšeš za správnou tabulku jsem já označoval za prasárnu. Nechci mít ke každý funkci sloupec, ale mít jeden a stoho tahat oprávnění. Vím, že někomu se budu zdát moc náročnej, ale proč málo když může být víc :-) Dobre, tak dejme tomu, že tabulku změnim pod admin id: `admin` (`id_admin`, `nick`, `pass`) VALUES (2, 'neco', 'heslo '); `prava` (`id_prava`, `id_admin`, `prava`) VALUES (1, '2', 'kontakt:ano; mapa:ano; '); Nevzniknul by bordel? Prezentace (bez přihlášení) má stránku mapy, ale administrátor nechce jí zobrazovat, tak jí v administraci zakáže. Prezentace neni vázaná pod administrátora ani pod jiný přihlášení. Pokud by se zapisovalo pod id admina, tak by vzniknul jenom bordel a stejně by to nefachalo :-) |
||
Mike8748 Profil |
#7 · Zasláno: 21. 7. 2009, 08:26:28
nightrider
obycejnym selectem vytahnes ten text( "kontakt:ano; mapa:ano;" ) z databaze, potom pomoci explode() a foreach cyklu to rozeberes, aby si dostal pole zhruba ve tvaru $opravneni=array('kontakt'=>'ano','mapa'=>'ano'); a pak uz jenom "jednoduchy" podminky typu if ($opravneni['mapa']=='ano') { zobrazit obsah mapy,... } else { nema narok na mapu; } nebo v tom poli muzes nahradit "ano" a "ne" za true/false nebo pokud budes mit to pole s opravnenim v php "pripraveny" tak do db muzes ukladat jeho serializovanou verzi. pak to z db vytahnes jako string, udelas unserialize() a mas opet dane pole. a podminky to samy jako vyse |
||
nightrider Profil |
#8 · Zasláno: 21. 7. 2009, 09:16:58
"Mike8748" kurna, tak tohle jsem chtěl :-) už jsem se bál, že jsem to napsal blbě. Bohužel tomu postupu rozumim, ale věc kódování už bude horší :-(
"pomoci explode() a foreach cyklu" <- u tohodle jsem se zasek. Foreach možná i zvládnu, ale co je explode? |
||
Mike8748 Profil |
#9 · Zasláno: 21. 7. 2009, 09:49:01
nightrider
pokud zustaneme u puvodniho formatu dat, tedy "kontakt:ano; mapa:ano; " tak asi takhle $data_z_db="kontakt:ano; mapa:ano; "; $opravneni=array(); $polozky=explode(';',$data_z_db); foreach ($polozky as $polozka) { $polozka=trim($polozka); // odstani zbytecny mezery list($k,$v)=explode(':',$polozka); // $k='kontakt'; $v='ano'; $opravneni[$k]=$v; } if ($opravneni['mapa']=='ano') { echo 'Smite videt mapu'; } |
||
nightrider Profil |
#10 · Zasláno: 21. 7. 2009, 09:57:27
Super :-) Děkuju Vám strašně moc. Explode jako string :-) taky mně to mohlo nakopnout :-) Tím uzavírám téma :-)
|
||
Časová prodleva: 15 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0