demiurgen Skrevet 7. januar 2007 Del Skrevet 7. januar 2007 noen som vet om noen gode tutorialer for en databasedrevet meny? hva bør jeg søke etter? å putte navnet på en knapp inn i en mysql databas er jo en smal sak men når det er flere undermenyer under noen av knappene blir det fort litt vanskeligere... hvis noen vet om noen resursser på dette emnet tar jeg imot med åpne armer. det er php koden for å hente ut dette fra en database jeg er ute etter og ikke hvordan selve databassen ser ut.... Lenke til kommentar
kjey Skrevet 7. januar 2007 Del Skrevet 7. januar 2007 (endret) Tja, vet ikke om jeg fant akkurat hva du letet etter, men dette er vel kanskje noe nyttig? http://codewalkers.com/seecode/672.html Jeg søkte forresten på google med søkeordene: "php mysql menu system" Endret 7. januar 2007 av kjey Lenke til kommentar
Ståle Skrevet 7. januar 2007 Del Skrevet 7. januar 2007 (endret) jeg tenkte på noe à la while($r = mysql_fetch_array($result, MYSQL_ASSOC)) { if ($r['type'] == "menytop1") { echo '<li class="menytop1">' . $r['tittel'] . '</li>'; } elseif ($r['type'] == "undermeny1") { echo '<li class="undermeny1">' . $r['tittel'] . '</li>'; } else { echo '<li class="vanlig">' . $r['tittel'] . '</li>'; } Men det blir kanskje litt vanskelig og dårlig koding.. jeg vet ikke Edit; glemme paranteser, jatakk! Endret 7. januar 2007 av Ståle Lenke til kommentar
Peter Skrevet 8. januar 2007 Del Skrevet 8. januar 2007 Jeg lagde noe slikt for en stund siden, men tror ikke jeg har koden lenger. Du trenger et par tabeller for å lage menyen så dynamisk som mulig. Tabell 1: automagisk teller(id) prioritet (tall som starter på 0 som angir rekkefølgen linkene kommer i) navn link Tabell 2: automagisk teller(id) forelder(id fra tabell 1) barn(id fra tabell 2) Et sted må du også definere de linkene som utgjør hovedmenyen. Så traverserer du bare menyen og henter ut barnelinkene som har forelder lik linken du står på nå. (litt vanskelig forklart) En annen måte, som kanskje er vel så enkel og effektiv er å lage en array med subarrayer som er undermenyer osv. Arrayer er jo veldig fleksible og enkle å jobbe med i PHP. For å lagre menyen serialiserer du den (serialize()) og skriver denne strengen til en fil. Så kan du lese inn strengen fra filen og bruke unserialize() for å få tilbake arrayet ditt (og dermed menyen) Lenke til kommentar
Stian Jacobsen Skrevet 8. januar 2007 Del Skrevet 8. januar 2007 Det du leter etter er ikke så vanskelig som det høres ut.. Ta utgangspunkt i dette oppsettet av en mysql tabell +---+---------+---------+-----+ | ID | SUBID | NAVN | URL | +---+---------+---------+-----+ La oss si du har 4 "items" i tabellen 1 - 0 - Hovedsiden - index.php 2 - 0 - Om meg - ommeg.php 3 - 2 - Bilder - galleri.php 4 - 3 - Siste bilder - siste.php Menyen du ønsker, skal se slik ut -Hovedsiden -Om meg --Bilder ---Siste bilder print '<ul>\n'; ##Kjør et query for å finne alle sider som IKKE er undersider $sql = "SELECT id,subid,navn,url FROM tabellnavn WHERE subid='0'"; $run = mysql_query($sql); while($rad = mysql_fetch_array($run)) { print '<li><a href="'.$subRad['url'].'">'.$subRad['navn'].'</a></li>\n'; ## Så henter vi undersidene $SubSql = "SELECT id,subid,navn,url FROM tabellnavn WHERE subid='{$rad['id']}'"; $SubRun = mysql_querty($SubSql); while($subRad = mysql_fetch_array($run)) { print '<li class="sub"><a href="'.$subRad['url'].'">'.$subRad['navn'].'</a></li>\n'; } } print '</ul>'; Denne koden er ganske primitiv. Den tar ikke hensyn til posisjon, klasser osv. Jeg anbefaler at du lager enten en klasse eller funksjoner function FetchMainItems($style) { ## Hent hovdemenyer } function FetchSubItems($id, $style) { ## Hent undermenyer } function FetchItems() { FetchMainItems(); FetchSubItems(); } Håper dette hjelper Lenke til kommentar
demiurgen Skrevet 9. januar 2007 Forfatter Del Skrevet 9. januar 2007 jeg har kommet fram til koden under. selv om jeg ikke skjønner alt i den fungerer den nesten perfekt. bare se her: http://www.morganwaage.com/fb/sub.php?menu=ha&cat=ha_main problemet er at jeg ikke får lagt inn cat= i url'n...? noen som vet hvordan? <?php $query = " SELECT * FROM fb_menu "; $query .= " WHERE main_category = '" . $cat_menu . "' "; $query .= " OR main_category = 'om' "; $query .= " OR main_category = 'nl' "; $query .= " AND status = 'active' "; $query .= " ORDER BY parent_id, id "; $qry = mysql_query($query); $menu = array(); while ($row = mysql_fetch_array($qry) ) { $menu[$row['parent_id']][$row['id']] = $row['name']; } echo "<ul class='level1'>\n"; foreach ($menu[0] as $LVL1_key => $LVL1_item) { if (!isset($menu[$LVL1_key])) { echo "<li><a href='sub.php?menu=" . $cat_menu . "&cat=" . $idontknow . "'>" . $LVL1_item . "</a></li>\n"; } else { echo "<li class='submenu'><a href='sub.php?menu=" . $cat_menu . "&cat=" . $idontknow . "'>" . $LVL1_item . "</a>\n"; echo "<ul class='level2'>\n"; foreach ($menu[$LVL1_key] as $LVL2_key => $LVL2_item) { if (!isset($menu[$LVL2_key])) { echo "<li><a href='sub.php?menu=" . $cat_menu . "&cat=" . $idontknow . "'>" . $LVL2_item . "</a></li>\n"; } else { echo "<li class='submenu'><a href='sub.php?menu=" . $cat_menu . "&cat=" . $idontknow . "'>" . $LVL2_item . "</a>\n"; echo "<ul class='level3'>\n"; foreach ($menu[$LVL2_key] as $LVL3_key => $LVL3_item) { echo "<li><a href='sub.php?menu=" . $cat_menu . "&cat=" . $idontknow . "'>" . $LVL3_item . "</a></li>\n"; } echo "</ul>\n"; echo "</li>\n"; } } echo "</ul>\n"; echo "</li>\n"; } } echo "</ul>\n"; ?> Lenke til kommentar
Stian Jacobsen Skrevet 9. januar 2007 Del Skrevet 9. januar 2007 jeg har kommet fram til koden under.selv om jeg ikke skjønner alt i den fungerer den nesten perfekt. bare se her: http://www.morganwaage.com/fb/sub.php?menu=ha&cat=ha_main problemet er at jeg ikke får lagt inn cat= i url'n...? noen som vet hvordan? <?php $query = " SELECT * FROM fb_menu "; $query .= " WHERE main_category = '" . $cat_menu . "' "; $query .= " OR main_category = 'om' "; $query .= " OR main_category = 'nl' "; $query .= " AND status = 'active' "; $query .= " ORDER BY parent_id, id "; $qry = mysql_query($query); $menu = array(); while ($row = mysql_fetch_array($qry) ) { $menu[$row['parent_id']][$row['id']] = $row['name']; } echo "<ul class='level1'>\n"; foreach ($menu[0] as $LVL1_key => $LVL1_item) { if (!isset($menu[$LVL1_key])) { echo "<li><a href='sub.php?menu=" . $cat_menu . "&cat=" . $idontknow . "'>" . $LVL1_item . "</a></li>\n"; } else { echo "<li class='submenu'><a href='sub.php?menu=" . $cat_menu . "&cat=" . $idontknow . "'>" . $LVL1_item . "</a>\n"; echo "<ul class='level2'>\n"; foreach ($menu[$LVL1_key] as $LVL2_key => $LVL2_item) { if (!isset($menu[$LVL2_key])) { echo "<li><a href='sub.php?menu=" . $cat_menu . "&cat=" . $idontknow . "'>" . $LVL2_item . "</a></li>\n"; } else { echo "<li class='submenu'><a href='sub.php?menu=" . $cat_menu . "&cat=" . $idontknow . "'>" . $LVL2_item . "</a>\n"; echo "<ul class='level3'>\n"; foreach ($menu[$LVL2_key] as $LVL3_key => $LVL3_item) { echo "<li><a href='sub.php?menu=" . $cat_menu . "&cat=" . $idontknow . "'>" . $LVL3_item . "</a></li>\n"; } echo "</ul>\n"; echo "</li>\n"; } } echo "</ul>\n"; echo "</li>\n"; } } echo "</ul>\n"; ?> 7679049[/snapback] Hvor kommer $idontknow fra? Ser ikke at denne variabelen er definert... En annen ting, for rett markup, bruk &cat=enkategori En tredje ting, med dette scriptet kan du ikke har uendelige undersider.. Har du i det hele tatt prøvd ut det scriptet jeg skrev til deg? Lenke til kommentar
demiurgen Skrevet 10. januar 2007 Forfatter Del Skrevet 10. januar 2007 (endret) under er koden din som jeg bruker på denne siden: http://www.morganwaage.com/fb/css/ echo "<ul>\n"; $sql = "SELECT * FROM menu WHERE subid='0'"; $run = mysql_query($sql); while($rad = mysql_fetch_array($run)) { echo "<li><a href='".$rad['url']."'>".$rad['navn']."</a></li>\n"; $SubSql = "SELECT id,subid,navn,url FROM menu WHERE subid='{$rad['id']}'"; $SubRun = mysql_query($SubSql); while($subRad = mysql_fetch_array($SubRun)) { echo "<li class='sub'><a href='".$subRad['url']."'>".$subRad['navn']."</a></li>\n"; } } echo "</ul>"; som du ser fungerer heller ikke denne helt riktig men hvis du kan si meg hva jeg må gjøre for å få submenyene til å fungere kan jeg heller bruke denne...?? i den andre koden så skrev jeg variabelen idontknow bare for å understreke at det var der jeg hadde problemer... Endret 10. januar 2007 av demiurgen Lenke til kommentar
Stian Jacobsen Skrevet 10. januar 2007 Del Skrevet 10. januar 2007 under er koden din som jeg bruker på denne siden:http://www.morganwaage.com/fb/css/ echo "<ul>\n"; $sql = "SELECT * FROM menu WHERE subid='0'"; $run = mysql_query($sql); while($rad = mysql_fetch_array($run)) { echo "<li><a href='".$rad['url']."'>".$rad['navn']."</a></li>\n"; $SubSql = "SELECT id,subid,navn,url FROM menu WHERE subid='{$rad['id']}'"; $SubRun = mysql_query($SubSql); while($subRad = mysql_fetch_array($SubRun)) { echo "<li class='sub'><a href='".$subRad['url']."'>".$subRad['navn']."</a></li>\n"; } } echo "</ul>"; som du ser fungerer heller ikke denne helt riktig men hvis du kan si meg hva jeg må gjøre for å få submenyene til å fungere kan jeg heller bruke denne...?? i den andre koden så skrev jeg variabelen idontknow bare for å understreke at det var der jeg hadde problemer... 7688986[/snapback] Om du ser på kildekoden så funker scripet, bilder har klassen "sub" og ligger under "Om meg" Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå