Autor Zpráva
SteveO
Profil *
Dobrý den, mám v DB tři tabulky, kategorie, sekce a podsekce. V tabulce sekce je sloupec kategorie, ve kterém je uloženo ID kategorie, do které sekce patří, v tabulce podsekce je sloupec sekce, ve kterém je zase ID sekce, do které podsekce patří.
Uživatelé při přidávání záznamu musí vybrat kategorii a sekci, a pokud k sekci existují nějaké podsekce, tak i tu podsekci. Odesláním formuláře se odesílají ID vybrané kategorie, sekce a podsekce.
Před uložením záznamu chci ověřit, zda byla odeslána smysluplná ID, tedy zda byla vybrána sekce, která opravdu patří do zvolené kategorie, a to samé u podsekce.

Vytvořil jsem pro to následující dotaz:

$zarazeni=mysql_query("SELECT kategorie.id AS k_id, sekce.id AS s_id, podsekce.id AS p_id FROM kategorie JOIN sekce ON kategorie.id=sekce.kategorie AND sekce.id=".intval($_POST["sekce"])." LEFT JOIN podsekce ON sekce.id=podsekce.sekce AND podsekce.id=".intval($_POST["podsekce"])." WHERE kategorie.id=".intval($_POST["kategorie"]));
$zarazeni=mysql_fetch_array($zarazeni);

Ten však kvůli LEFT JOIN projde i v případě, že v $_POST["podsekce"] je nesmysl. Jak to upravit tak, aby se mi do pole vrátila ID kategorie a sekce (ta se musí vrátit vždy), a pokud k sekci existují podsekce, tak aby se vrátilo i ID této podsekce? A pokud by bylo odesláno ID podsekce, které to dané sekce nepatři, tak aby se vrátilo prázdné pole? Jasně, šlo by to jednoduše rozložit do více dotazů, ale zajímá mě, jestli to lze spojit do jednoho. Díky moc.
Kajman
Profil
Však už to tak máte. Pokud byla podsekce správně určena, bude v p_id, jinak tam bude null.

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