Autor Zpráva
nightrider
Profil
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 *
Co třeba takto nějak?
prava (id_prava,popis)
uzivatel (id_uzivatele,loginatak,...)
opravneni (id_prava,id_uzivatele,hodnota)
nightrider
Profil
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 *
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
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
"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
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
"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
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
Super :-) Děkuju Vám strašně moc. Explode jako string :-) taky mně to mohlo nakopnout :-) Tím uzavírám téma :-)
Toto téma je uzamčeno. Odpověď nelze zaslat.