Autor Zpráva
ForestCZE
Profil
Zdravím, snad se mi podaří dobře popsat problém, který řeším.

Budu mít nějakou tabulku:

CREATE TABLE `my_table` (
  `id` int(11) NOT NULL,
  `name` longtext COLLATE utf8_czech_ci NOT NULL,
  `author` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;

ALTER TABLE `my_table`
  ADD PRIMARY KEY (`id`);
  
ALTER TABLE `my_table`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

A pak mám uživatele, kteří mají každý své ID. Potřeboval bych nějak zapsat ke každému záznamu v tabulce my_table IDéčka uživatelů (pole intů ? ), kteří budou moct vidět daný záznam. Problém je, že jsem nikde nenašel, že by se hodnoty daly zapsat jako array. Když je tam nějak zapíšu, jak pak zkontrolovat, jestli ID, které má uživatel, je obsaženo (in_array ? ) i v té databázi. A nakonec jak s tím pracovat? Aby se daly ty IDéčka přidávat i odstraňovat. Vůbec netuším, jak na to. Předem děkuji za pomoc :)
Keeehi
Profil
ForestCZE:
Správné řešení je jednoduché - druhá tabulka. Bude mít dva sloupce. Jeden s idčkem uzivatele který má pravo vidět jiného uzivatele a ve druhém sloupci bude idčko uživatele, kterého má právo vidět. Když jeden uživatel má právo vidět údaje dalších třech, tak za něj v té tabulce budou tři řádky.
Poktrola, zda uživatel může vidět jiného pak probíhá kontolou, zda nějaký záznam s idčky těch dvou uživatelů existuje nebo ne.
ForestCZE
Profil
Keeehi:
A jak to bude souviset s tou původní tabulkou? Mohl bych poprosit o nějaký jednoduchý příklad? Děkuji.
Keeehi
Profil
ForestCZE:
No souviset to bude tak, že ta idčka v té druhé tabulce budou stejná jako v té co už máš.
Jestli jsi tím měl na mysli něco automatického, jako že bys databázi předhodil pole a ta si to nějak sama zpracovala, tak to ne. Tu druhou tabulku si budeš muse sám obhospodařovat pomocí sql dotazů stejně, jako to děláš s tou první.
Ta tabulka na to může vypadat opravdu velmi jednoduše.
CREATE TABLE `permissions` (
  `user_id` int(11) NOT NULL,
  `target_user_id` int(11) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;
Kajman
Profil
A pokud my_table neobsahuje uživatele, tak ten druhý sloupec se může jmenovat my_table_id. A v té tabulce bude pro jedno id vice řádků - tolik, kolik uživatelů bude mít k tomu id právo.

Některé časteji řešené dotazy pro MySQL - FAQ » Více hodnot ve sloupci
ForestCZE
Profil
Keeehi:
Super, už jsem to pobral a funguje to. Děkuji moc :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0