MS Office week
Pouze tento týden sleva až 80 % na e-learning týkající se MS Office
50 % bodů zdarma na online výuku díky naší Slevové akci!
Avatar
Martin Suchodol
Redaktor
Avatar
Martin Suchodol:9. ledna 13:05

Ahoj, mám jen dotaz jak moc validní způsob je použití funkcí explode() a implode() pro uložení dat do databáze.

Kdyz potřebuji uložit pole do databáze tak jej pomocí implode() složím do řetězce, a když jej načítám a následné je potřebuji použít v podmínce tak zase rozložím pomocí explode() složím zpět do pole a to následně proženu podmínkou.

 
Odpovědět
9. ledna 13:05
Avatar
Odpovídá na Martin Suchodol
Martin Konečný (pavelco1998):9. ledna 13:33

Ahoj, obecně by bylo lepší řešení uložit jednotlivé hodnoty jako jednotlivé řádky v databázi - obecně platí pravidlo, že by hodnoty ve sloupcích již měly být nedělitelné. Pokud ovšem je to nějaká jednolitá struktura (třeba jako JSON), pak si myslím, že je tohle řešení taky OK, jen jdeš sám do rizika toho, že když budeš potřebovat někdy nějakou hodnotu upravit, budeš muset zpracovávat celý seznam hodnot (z toho složeného řetězce) a taky se vystavuješ riziku, že když ti někdo zkazí formát toho řetězce, tak ti explode() bude vracet něco jiného, než chceš :D

Nahoru Odpovědět
9. ledna 13:33
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:9. ledna 13:51

Viz Martin.
Databaze je jen strukturovany radek. Co si tam ulozis, je jedno.
Podstatne je, zda s tim a jak chces dal pracovat. Pokud to nepotrebujes pro vyhledavani, tak je i tato moznost dobrym resenim.
Napriklad piskvorky, herni plocha 20x20, kdyz to zestringujes, nic se nedeje. Hraci pro vypis string parsujes. A editaci ti resi php, stejne. Ale samozrejme uspornejsi by bylo upradovat jen tu jednu bunku. Jen v db bys to mel ale jako 400 radku, tak to asi neni pak tak fajn :)

Editováno 9. ledna 13:52
 
Nahoru Odpovědět
9. ledna 13:51
Avatar
Martin Suchodol
Redaktor
Avatar
Martin Suchodol:9. ledna 14:34

No práce jako taková s hodnotami je jen v podmínce kdy si ze dvou tabulek vytáhnu hodnotu. Porovnám a pak podle toho zareaguji.

Jedná se o oprávnění k přístupu. Kdy mám tři tabulky.

  1. seznam uživatelských oprávnění - admin, uživatel, apod.
  2. uživatel má uložena svá oprávnění v podobě idetntifikátorů jednotlivých oprávnění - 1, 4, 7 pod.
  3. article - jednotlivé sekce podléhají určité úrovni oprávnění - zde je opět typ oprávnění uložen jako id oprávnění.

podmínka porovná dvě pole pokud se uživatel nachází mezi oprávněnými tak má přístup povolen jinak je mu přístup odepřen a je přesměrován. Buď na přihlášení nebo do administrace.

Rozhodně se nebráním další tabulce která zde bude fungovat jako spojka. Jelikož se na tom učím. Ale jde o to že oprávněných skupin nikdy nebude mnoho. Aktuálně jsou tři a maximálně jich bude pět. Proto jsem možnost s další tabulkou zavrhnul

Editováno 9. ledna 14:36
 
Nahoru Odpovědět
9. ledna 14:34
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na Martin Suchodol
Martin Konečný (pavelco1998):9. ledna 15:03

Upřímně bych u něčeho jako oprávnění uživatelů raději volil řešení přes více tabulek/řádků než ta oprávnění strkat do jednoho řetězce. Případně když už, zvolil bych formát, se kterým už jazyk umí pracovat pomocí nativních funkcí - tzn. třeba JSON, u toho můžeš jednoduše i kontrolovat, zda jde o validní řetězec. Nicméně z hlediska odstranění rizika chybovosti bych raději volil první možnost, tedy mít na každou hodnotu řádek zvlášť.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět
9. ledna 15:03
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Martin Suchodol
Redaktor
Avatar
Martin Suchodol:9. ledna 15:08

Ok, díky za radu.

 
Nahoru Odpovědět
9. ledna 15:08
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:10. ledna 7:42

Pro opravneni pouzivam take extra tabulku.
Sql dotazem na konkretni opravneni ziskas rychle bud vsechna nebo jedno. Muzes jedno konkretni zmenit bez specialniho kodu. Tezko rici ted, co je lepsi, zda vytahnout hned vsechny a dal uz sql nekontaktovat nebo pokazde se ho zeptat. To zalzi, jak mas zabezpecenou class s pravy, zda ti to tam muze snadno hacker prepsat nebo to mas jako private.

 
Nahoru Odpovědět
10. ledna 7:42
Avatar
Martin Suchodol
Redaktor
Avatar
Odpovídá na Peter Mlich
Martin Suchodol:10. ledna 9:07

to teprve budu řešit zatím mám jen model, a upravuju funkci která to bude řešit. Zatím jen fungovala na bázi toho zda je uživatel admin tedy pouze true a false. Teď bude fungovat tak že si vezme seznam oprávnění uživatele a seznam oprávnění sekce a na základě toho bude buď přístup povolen nebo dostane uživatel vyhubováno. Nedělám to na pevno v kódu aby bylo možné jednotlivé skupiny ubírat či předávat, nebo upravovat jejich oprávnění (pouze ke čtení, plný přístup a nebo zablokováno). Včera jsem ještě trochu bojoval s SQL doatzem protože to co mi fungovalo přřes konzoli resp. v phpmyadmin to byl pro php problém ale už sem to vyřešil.

Editováno 10. ledna 9:08
 
Nahoru Odpovědět
10. ledna 9:07
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.