Vraag & Antwoord

Webprogrammeren & scripting

menu en submenu

7 antwoorden
  • Met het volgende script bouw ik een menuutje op met daaronder een submenu. Het menu wordt nu getoond als: 1. 2. 3. 1.1 1.2 <?php $result = mysql_query("SELECT * FROM menu", $db); while (list($m_id, $m_naam, $m_alt) = mysql_fetch_row($result)) { echo "<a href=\"".$_SERVER["PHP_SELF"]."?id=$m_id\" title=\"$m_alt\">$m_naam</a><br>"; } $result = mysql_query("SELECT * FROM menu, submenu WHERE m_id=sm_id AND m_id='" .$_GET["id"] ."'", $db); while (list($m_id, $m_naam, $m_alt, $s_id, $s_naam, $s_alt, $sm_id) = mysql_fetch_row($result)) { echo "<a href=\"tekst.php\" title=\"$s_alt\">$s_naam</a><br>"; } ?> Hoe pas ik het script aan zodat het menu eruit komt te zien als: 1. 1.1 1.2 2. 3.
  • Dat doe je met een geneste query, dus je doet de eerste query, waarin je de menutabel uitleest. Binnen die whileloop, doe je de tweede query die er ongeveer zo uitziet. SELECT * FROM menu, submenu WHERE sm_id = "waarde_van_id_uit_eerste_query" Pas trouwens op met $_GET en/of $_POST in je query, dit kan problemen als SQL injection opleveren.
  • [quote:e88f1953f9="Japaveh"]Dat doe je met een geneste query, dus je doet de eerste query, waarin je de menutabel uitleest. Binnen die whileloop, doe je de tweede query die er ongeveer zo uitziet. SELECT * FROM menu, submenu WHERE sm_id = "waarde_van_id_uit_eerste_query" Pas trouwens op met $_GET en/of $_POST in je query, dit kan problemen als SQL injection opleveren.[/quote:e88f1953f9] Die join is nergens voor nodig in de 'geneste' query. Vraagje voor yolk2003: waarom heb je menu items en submenu items gesplitst over twee tables? Kijk voor hiërarchische structuren in sql eens naar de zgn. Celko trees. Even zoeken op internet geeft voldoende leesvoer (voor- en nadelen, alternatieve technieken).
  • [quote:094eaa07c9="Annie"] Die join is nergens voor nodig in de 'geneste' query. [/quote:094eaa07c9] Hoe 'bepaal' je in de tweede query dan welke submenuitems uit die tabel gehaald moeten worden? Dit hangt toch af van het huidige hoofdmenuitem en daarvoor heb je toch een WHERE nodig? Ik zie dan niet hoe je in deze configuratie (dus met 2 tabellen waarin de eerste het menu definieert, en de tweede het submenu met een verwijzing naar het item van het hoofmenu waaronder dit submenu moet vallen) zonder een WHERE statement de juiste struktuur krijgt. Dit natuurlijk los van de mogelijkheid om Celko trees te gebruiken :)
  • Ik zeg niet dat je geen WHERE clause moet toevoegen. Ik zeg dat het geen zin heeft om te joinen met de menu table :D
  • [quote:7a5be2cde5="Annie"]Ik zeg niet dat je geen WHERE clause moet toevoegen. Ik zeg dat het geen zin heeft om te joinen met de menu table :D[/quote:7a5be2cde5] Die join is idd nogal loos. En topicstarter: Het is heel makkelijk in 1 table op te lossen. Gewoon een parent kolom opnemen in je table voor de subniveau(s) en die koppelen aan het bijbehorende id van het hoofdmenu item. Dus de 'hoofd items' hebben parent 0, items (submenu) die bij het eerste 'hoofd item' horen hebben parent 1 (1 = id van hoofdmenu item 1 dus), enz..
  • @InZane: Volgens mij heb ik het al gedaan zoals je bedoeld (en anders begrijp ik je uitleg verkeerd :P ). De hoofdmenu's hebben 1, 2, 3 etc. als id#. De subitems heb ik genummerd als 1.1, 1.2, waarbij het eerste cijfer verwijst naar het hoofdmenu. Ik krijg nu netjes de hoofdmenu's. En als ik daar op klik worden de submenu's getoond. Deze komen onder de hoofdmenu's te staan ipv onder het hoofdmenu waar ze bij horen.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.