filtrovani menu dle kategorie

potřeboval bych poradit s níže uvedeným skriptem. Pomocí toho mi z tabulky vyjíždí kategorie a tvoří menu. Tabulku v db chci rozšířit, aby ve stejné tabulce byly¨i produkty. Struktura je shruba:
id , id_p , nazev , obr , aktivni , pořadí
1, 0, hlavni kategorie 1 , , 1 (znamena aktivni),
2, 0, hlavni kategorie 2 , , 1,
3, 1, podkategorie 1, , 1,
4, 1, podkategorie 2, , 1,
5, 2, podkategorie 3, , 1,

jak mám vytvořit podmínku, aby z tabulky vyjížděla vždy jen třeba jedna podkategorie, řekněme id (3), id_p (1) a k němu také produkty a také aby vyjížděli jen aktivní. Jak se dají tyto podmínky ve skriptu vytvořit.
Díky

function vypisKateg() {
$result = MySQL_Query("SELECT *
FROM kategorie
ORDER BY kat_id
");
while ($row = MySQL_Fetch_Row($result)):
echo "<A href=\"sindex.php?kateg=$row[0]&akc=kateg\">$row[1]</A><br>";
endwhile;
}
jirik: Nechtěl bych se motat do struktury, ale proč to dávat všechnod o jedné tabulky? Nebylo by lepší mít např. tabulky - hl.kategorie, podkategorie a produkty?
no jo, ale jak to navazat na sebe. Popisu jednoduse jak chci ab ymoje stranky vypadaly.
V levé části je hlavní menu. Při kterékoli volbě se otevře podkategorie v pravé části (něco jako tabulka 4x4 buňky) a hned pod tím se zobrazovali obrázky z některých podkategorií. A když kliknu na nějakou podkategorii, tak pod tím vyběhnou všechny fotky z dné části.

Hlavní menu pro mě není problém, i když to udělám do více tabulek. Horší s čím už si lámu delší dobu je ta pravá strana (podmenu). Tam bych chtěl aby vždy z dané kategorie vyběhlo jen to co potřebuju, háček je v tom, že mi vyběhne úplně vše.

Našel jsem nějaké stránky na kterých to právě takhle funguje (www.logofun.cz), kdyžtak mkněte a poraďte.
co sem se koukal, tak tam to maj přes javascript, či co. ...
joo, ta stránka je doslova zasr*ná javascriptama ... a navíc řekl bych, že ty to chceš jinak,,, a proto se ptám jak to chceš:

chceš aby ti vyjelo podmenu z hlavního odkazu, ve chvíli, kdy je člověk na stránce na kerou vede ten odkaz? tj. člověk klikne na hlavní odkaz, dostane se na nějakou stránku a zároveň mu vyjede dané podmenu.. něco jako je to zde: http://zus-habrmanova.cz/

nebo to chceš mít jako na logofun, kde člověk zůstává porád ne stejný stránce a pomocí javascriptu se mu vysouvaj různý podmenu?
díval jsem se na první možnost, vypadá dobře.

Spíše bych chtěl tu druho variantu. Jen nevím jak nato. Šlo by to řešit pomocí php. Nebo to jde jen pomocí javaskriptu?
2 jirik:

pokud chceš tu druhou variantu, pak jsem tě předtím nepochopil správně. pomocí php by to šlo ale musel bys nechat stránku načíst znovu. to mě příjde trochu nešikovné, pač už bys rovnou mohl udělat první možnost. jinak javascriptem to jde bez problému, ale tomu bych se vyhnul, pač kdo se dostane na logofun.cz a nemá zapnutej javascript (v prohlížeči) tak se do těch sekcí vůbec nedostane. já bych osobně bral první možnost ale to je na tobě. pokud budeš chtít tu druhou, tak se zkus podívat jak to tam maj, a třebas něco vobšlehnout ;-)
dival jsem se ještě jednou na obě dvě varianty. A spíše bych volil tu první, abyse rozvinule menu a v pravo se otevřela daná stránka. Javaskripty mi moc nesedí a lepší bude php.

Jak mám tedy postupovat? I to menu je tvořeno v php?


mno já osobně bych to pak udělal takto:

odkazy hlavního menu bych si dal do db... udělal bych si tabulku 'hlavni-odkazy' se sloupci:

id, poradi, odkaz, url

kde -> id je auto inkrement,,, a toho bych si vůbec nevšímal.
-> poradi by bylo 1, u dalšího odkazu 2, pak 3 atd. možná se to bude shodovat s id, ale podle id bych to z jistejch důvodů nedělal.navíc poradi pak budeme používat
-> odkaz je text na který se má kliknout.
-> url -> adresa odazu po kliknutí. bez proměnné page

případně si tam můžeš dodělat třeba title, a další atributy co potřebuješ.

pak bych udělal druhou tabulku 'podmenu' -> tam by byly odkazy podmenu. sloupce:

id, poradi, hlavni, odkaz, url, page

-> id, odkaz, url zůstává stejné.
-> poradi je pořadí odkazů v podmenu,, možná nemusí být, když to budeš mít podle id,, ale udělal bych to přes poradi
-> hlavni je číslo, které odpovídá poradi hlavniho odkazu
-> + další možné sloupce jako title



nakonec do stránky kde je menu vložíš cyklus,,, a záleží jak to chceš mít tj. jestli chceš mít menu typu jenom <div...><a...>odkaz</a><a...></a></div>
nebo jako tabulku, nebo jako: <menu...><li><a...></a></li><li></li></menu> (tento způsob, na menu nejsémantičtější, mnou používaný ti ukážu jako př.)
tak si to budeš muset upravit dle svého:

echo ("<menu id=\"menu\">");
$dotaz = mysql_query("SELECT * FROM hlavni-odkazy ORDER BY poradi ASC");

while ($vypis = mysql_fetch_array($dotaz)) {

$adresa = $vypis['url'] ."$amp;poradi=". $vypis['poradi'] ;

echo("<li>");
echo("<a href=\"". $adresa ."\">");
echo($vypis['odkaz']);
echo("</a></li>")

if ($_GET['poradi'] == $vypis['poradi']) {

$druhydotaz = mysql_query("SELECT * FROM podmenu WHERE hlavni = '". $vypis['poradi'] ."' ORDER BY poradi ASC");
echo ("<menu id=\"podmenu\">");
while ($druhyvypis = mysql_fetch_array($druhydotaz)) {

$adresa = $druhyvypis['url'] ."$amp;poradi=". $vypis['poradi'] ;

echo("<li>");
echo("<a href=\"". $adresa ."\">");
echo($druhyvypis['odkaz']);
echo("</a></li>")

} // konec whileu podmenu
echo("</menu>");

}//konec if_podmenu


}//konec whileu hlavnimu

echo("</menu>");




pár poznámek.. k adrese např. index.php?stranka=neco se přidává &poradi=cislo_kere_odpovida_poradi_odkazu_v_jehoz_sekci_se_nachazime

pokud bys tam měl třeba url typu index.php? nebo index.php musel by sis to oIFovat tak aby se ti tam třeba & nevypisoval, popř aby se ti tam dopsal otaznik. ale to už nenji problém.




je to psany zfelku, takže nevim esli tam nebude něco špatně, jako že asi bude. ale to už si opravíš,, chtěl jsem jenom nastínit jak bych to udělal já.
zkoušel jsem to podle zadání, ale otevře se hlavní menu ale podmenu (druhá funkce) už ne. Možná je chyba v moji db.
nevypadá to, že by byla v tom skriptu chyba. jenom poznámka, na úvodní straně žádný podmenu nevyjede... aby ti vyjelo patřičný podmenu, musíš mít zadanou proměnou $_GET['poradi'] ... popřípadě, což se mi velice osvědčilo, si dej echa do spousty částí kódu, zjistíš, kde je chyba. asi takto:

echo("while hlavni menu jede");

if ($_GET['poradi'] == $vypis['poradi']) {

echo("podmínka pro podmenu splněna");

$druhydotaz = mysql_query("SELECT * FROM podmenu WHERE hlavni = '". $vypis['poradi'] ."' ORDER BY poradi ASC");

echo("while podmenu jede");

echo ("<menu id=\"podmenu\">");
while ($druhyvypis = mysql_fetch_array($druhydotaz)) {


zjistíš tak, kde je chyba přesně a pak se na to začneš orientovat.. ;)



jinak podmenu nenji fce, nicméně jako 2 funkce (menu a podmenu) by se to dalo udělat taky.