Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: použití implode a explode pro uložení a načtní dat z databáze

Aktivity
Avatar
Martin Suchodol:9.1.2020 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.1.2020 13:05
Avatar
Odpovídá na Martin Suchodol
Martin Konečný (pavelco1998):9.1.2020 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.1.2020 13:33
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:9.1.2020 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.1.2020 13:52
 
Nahoru Odpovědět
9.1.2020 13:51
Avatar
Martin Suchodol:9.1.2020 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.1.2020 14:36
 
Nahoru Odpovědět
9.1.2020 14:34
Avatar
Odpovídá na Martin Suchodol
Martin Konečný (pavelco1998):9.1.2020 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í
+2,50 Kč
Řešení problému
Nahoru Odpovědět
9.1.2020 15:03
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Martin Suchodol:9.1.2020 15:08

Ok, díky za radu.

 
Nahoru Odpovědět
9.1.2020 15:08
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:10.1.2020 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.1.2020 7:42
Avatar
Odpovídá na Peter Mlich
Martin Suchodol:10.1.2020 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.1.2020 9:08
 
Nahoru Odpovědět
10.1.2020 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.