Mazání z databáze – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Mazání z databáze – PHP – Fórum – Programujte.comMazání z databáze – PHP – Fórum – Programujte.com

 

fix0
Stálý člen
12. 5. 2018   #1
-
0
-

Ahoj,

prosím si o radu.

Mám v databázi např:

1. Tabulku uživatelů

2. Tabulku uživatelských skupin, které každý uživatel implementuje, kde uzivatele.skupina = skupina.id

Jak vyřešit v PHP, aby nešla smazat uživatelská skupina, dokud uživatelská skupina bude obsahovat nějaké uživatele (nebude prázdná(nebude existovat uživatel, který by byl do skupiny přiřazen)).

Něco mi říká, že by se mělo využít nějakého klíčování v databázi, ale to je furt jen v databázi. Jak by se to v tom případě řešilo na webu?

Teď mě třeba ještě napadlo, nechat skupinu normálně smazat s tím, že ty uživatelé, kteří budou ve skupině, tak všude, kde se vypisuje jejich skupina, tak dát kontrolu if(skupina neexistuje) echo "Skupina již neexistuje nebo nemá přiřazenou žádnou platnou skupinu"

Nicméně uvědomuji si to, že to není asi zrovna ideální.

Otazka: Jak to řešit? Jak byste to řešili Vy? Jak se to řeší v praxi?

Děkuji za radu.

Nahlásit jako SPAM
IP: 92.240.177.–
Kit+15
Guru
12. 5. 2018   #2
-
0
-

#1 fix
Do databáze pošleš: 

ALTER TABLE uzivatele
    ADD FOREIGN KEY (skupina_id) REFERENCES skupina(id);

To je vše, databáze si to bude pamatovat.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
fix0
Stálý člen
16. 5. 2018   #3
-
0
-

To je sice pěkné, ale jak se na to bude tvářit web? Co tahle relace nebo jak se tomu říká vlastně zajistí?

Nahlásit jako SPAM
IP: 92.240.177.–
gna
~ Anonymní uživatel
1891 příspěvků
16. 5. 2018   #4
-
0
-

To říká, že skupina_id odkazuje na skupina.id a hlídá se, aby ten odkaz byl platný, takže nepůjde smazat skupina, ve které někdo je.

Web se na to bude tvářit tak, jak si ho napatláš.

Nahlásit jako SPAM
IP: 213.211.51.–
fix0
Stálý člen
16. 5. 2018   #5
-
0
-

"že si ho napatláš"? :-D Podle to skončí nějakou výjimkou, kterou musím nějak ošéfovat ne? No zkusím to a případně se ještě ozvu.

Zatím díky moc vám oběma.

Nahlásit jako SPAM
IP: 92.240.177.–
peter
~ Anonymní uživatel
4014 příspěvků
17. 5. 2018   #6
-
0
-

Samozrejme. Ale s tim pocitas, ze se tam nedoprogramuje ten kod sam, ne, kdyz provedes zmenu jen v databazi? Stejne, uz od zacatku chces do php kodu provest zmenu, ne? :)

Nahlásit jako SPAM
IP: 2001:718:2601:258:7131:7a...–
Kit+15
Guru
17. 5. 2018   #7
-
0
-

#6 peter
Však jinde než v databázi změnu dělat nemusí. Odmítnutí požadavku jednoduše přepošle klientovi.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
MilanL+1
Grafoman
17. 5. 2018   #8
-
0
-

#1 fix

tak řešení přes relaci v DB, ti už lidi napsali, teď ještě možné řešení v php.

Je to také celkem jednoduché, stačí si na tabulku uživatelů udělat SELECT s podmínkou na skupinu a pokud se vrátí nějaký/é/ záznamy, tak je skupina použitá.

Já obvykle používám obojí, je to taková dvojitá kontrola.

Nahlásit jako SPAM
IP: 91.139.9.–
Kit+15
Guru
17. 5. 2018   #9
-
0
-

#8 MilanL
V PHP se nemusí dělat prakticky nic. Uvedený postup moc dobře nefunguje, neboť může dojít k souběhu. Databáze se buď ptám, anebo jí přikazuji. Nikdy obojí.

V PHP stačí zpracovat návratový kód a přečíst si warningy. Když to neudělá, tak se také nic neděje, jen klient nebude vědět, proč se smazání nepovedlo.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:39ca:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 43 hostů

Podobná vlákna

Mazání z databáze — založil ench

Mazání zástupců — založil Leanes

Mazání adresářů — založil Petr

C# mazaní složek ( 2 ) — založil ospaly.stanislav

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý