Autor Zpráva
gorilla
Profil
Ahoj,

tvořím teď jeden web a snažím se udělat selekci obsahu pouze pro daného uživatele. Vždycky jsem pracoval pouze s jednou db tabulkou, ale tady už z principu budu muset pracovat s více tabulkami zároveň.

Při přihlášení naberu z databáze id uživatele a dám ho do $_SESSION['id']. Pak mám tabulku se seznamem stránek (obsah), které obsahují sloupec pid (project id). Kromě této tabulky mám ještě druhou tabulku (opravneni), ve které jsou dva sloupce id a pid - ve sloupci id je id uživatele a ve sloupci pid je pid stránky. Teď je mi jasné, že musím nějakým způsobem vytvořit selekci dat z databáze - vyber z tabulky opravneni všechny záznamy, kde $_SESSION['jmeno'] = id a odpovídající pid vyber z tabulky obsah. Popravdě ale moc nevím, jak toto provést v praxi a zda je to vůbec reálná úvaha. Mám problém se selekcí dat z více tabulek zároveň. Podle internetu jsem zkusil sestrojit tohle, ale to evidentně nefunguje
$sql = "SELECT * FROM obsah,opravneni WHERE ". $_SESSION['id'] ." = opravneni.id AND (opravneni.pid = obsah.pid) ORDER BY od DESC, pid DESC";
  
.

Mohl bych někoho poprosit o radu?
Kajman
Profil
Jak se nefungování projevuje? Vypisujete si při ladění výsledný dotaz i chybovou hlášku z databáze? Třeba ta bude zmíněna nejednoznačnost sloupce pid v řazení.
Stroganov
Profil *
gorilla:

Súhlasím s Kajmanom. Pokiaľ ide o tú nejednoznačnosť, tú obídete tak, že pred nejednoznačné stĺpce dopíšete názov tabuľky (alebo jej alias) - to vlastne už využívate. Aliasy tabuliek sa definujú pomocou kľúčového slova as hneď za názvom tabuľky, za slovom as nasleduje názov aliasu (kľúčové slovo as je nepovinné, hodí sa kvôli prehľadnosti).

A bolo by dobré dáta (aj tie zo $_SESSION) ošetriť, než ich pošlete do databázy, aby vás raz neprekvapil SQL Injection.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0