Avatar billede rthuls Nybegynder
02. september 2003 - 12:11 Der er 10 kommentarer og
1 løsning

opbygning af menu

Jeg skal lige bruge lidt hjælp her. Jeg vil opbygge min menu udfra data fra en database. Menuen skifter alt efter hvilken katagori der er valgt. Menuen kan have et eller flere hovedpunkter.

Menu skal have denne opbygning:

<h3>Hovedpunkt1</h3>
<div class="item">
    <ul class="nav">
        <li>underpunkt1</li>
        <li>underpunkt2</li>
        <li>underpunkt3</li>
    </ul>
</div>

<h3>Hovedpunkt2</h3>
<div class="item">
    <ul class="nav">
        <li>underpunkt1</li>
        <li>underpunkt2</li>
    </ul>
</div>


Her er hvad jeg har indtil videre, men det skal nok laves meget om:

$result = mysql_query("SELECT * FROM menu WHERE katagori='$_GET[katagori]'");

$total = mysql_num_rows($result);

if ($result && $total > 0){
    $menu = "<ul class=\"nav\">";
    while($row = mysql_fetch_array($result)){
        $menu .= "<h3>" . $row['overskrift'] . "</h3>";
        $menu .= "<div class=\"item\">";
        $menu .= "<li><a href=\"" . $row['link'] . "\">" . $row['tekst'] . "</a></li>";
        $menu .= "</div>";   
    }
    $menu .= "</ul>";
}


Min database struktur ser i øjeblikket sådan her ud:
id  katagori  overskrift  tekst  link

, hvilket sikkert kan laves meget smartere...

Håber at I forstår hvad jeg vil og at I kan hjælpe mig.
Avatar billede thanatos Nybegynder
02. september 2003 - 12:13 #1
Det ser da allerede godt ud... kan du da ikke fortælle os HVAD du vil få ændret? kun at det skal gøres smartere?
Avatar billede rthuls Nybegynder
02. september 2003 - 12:19 #2
Ja, selvfølgelig :-)
I øjebliket får jeg denne struktur:

<h3>Hovedpunkt1</h3>
<div class="item">
    <ul class="nav">
        <li>underpunkt1</li>
    </ul>
</div>

<h3>Hovedpunkt1</h3>
<div class="item">
    <ul class="nav">
        <li>underpunkt2</li>
    </ul>
</div>

<h3>Hovedpunkt1</h3>
<div class="item">
    <ul class="nav">
        <li>underpunkt3</li>
    </ul>
</div>

<h3>Hovedpunkt2</h3>
<div class="item">
    <ul class="nav">
        <li>underpunkt1</li>
    </ul>
</div>

<h3>Hovedpunkt2</h3>
<div class="item">
    <ul class="nav">
        <li>underpunkt2</li>
    </ul>
</div>
Avatar billede martinbk Nybegynder
02. september 2003 - 12:28 #3
vil gerne lige se din tabel struktur så tror jeg vi kan bikse noget sammen :)
Avatar billede rthuls Nybegynder
02. september 2003 - 12:39 #4
strukturen for tabellen menu ser sådan her ud:

id  katagori  overskrift  tekst        link   
1  nyheder  menupunkt1  underpunkt1  link1.html
2  nyheder  menupunkt1  underpunkt2  link2.html
3  nyheder  menupunkt1  underpunkt3  link3.html
4  nyheder  menupunkt2  underpunkt1  link4.html
5  nyheder  menupunkt2  underpunkt2  link5.html
Avatar billede martinbk Nybegynder
02. september 2003 - 12:45 #5
skal lige siges dette er utestet men leg lidt med det og kom tilbage hvis der er problemer:

$totalhovedepunkter = mysql_fetch_array(mysql_query("SELECT COUNT(overskrift) AS numover FROM tabel"));


    $menu = "<ul class=\"nav\">";
    for($i=0;$i<=$totalhovedepunkter[numover];$i++) {
        $res = mysql_query("SELECT * FROM tabel WHERE overskrift="menupunkt".$i");
        $over = mysql_fetch_array($res);
        $menu .= "<h3>" . $over['overskrift'] . "</h3>";
        $menu .= "<div class=\"item\">";
        while($row = mysql_fetch_array($res)) {
          $menu .= "<li><a href=\"" . $row['link'] . "\">" . $row['tekst'] . "</a></li>";
        }
        $menu .= "</div>";   
    }
    $menu .= "</ul>";
Avatar billede martinbk Nybegynder
02. september 2003 - 12:49 #6
har så allerede selv opdaget jeg sidder og sover den første linie skal være

$totalhovedepunkter = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM tabel GROUP BY overskrift"));
Avatar billede rthuls Nybegynder
02. september 2003 - 13:08 #7
jeg tror du har misforstået min tabel struktur, du kan ikke regne med at overskrift/tekst altid hedder det samme efterfulgt af et nummer. Det vil nærmere se sådan her ud:

id  katagori  overskrift      tekst        link   
1  nyheder  seneste nyheder      bla        bla.html
2  nyheder  seneste nyheder      et eller andet        etellerandet.html
3  nyheder  seneste nyheder      noget        hej.html
4  nyheder  nyheds arkiv      foo og bar        foo.html
5  nyheder  nyheds arkiv      foobar        bar.html
Avatar billede rthuls Nybegynder
02. september 2003 - 13:09 #8
...hvis det ikke er tilfældet, så forstår jeg ikke linien her:
$res = mysql_query("SELECT * FROM menu WHERE overskrift='menupunkt'.$i");
Avatar billede rthuls Nybegynder
02. september 2003 - 13:48 #9
Så tror jeg sq den er der:

$menupunkter = mysql_query("SELECT overskrift FROM menu GROUP BY overskrift");

while($row = mysql_fetch_array($menupunkter)) {
    $res = mysql_query("SELECT * FROM menu WHERE overskrift='$row[overskrift]'");
    $menu .= "<h3>" . $row['overskrift'] . "</h3>";
    $menu .= "<div class=\"line\"></div>";
    $menu .= "<div class=\"item\">";
    $menu .= "<ul class=\"nav\">";
        while($row = mysql_fetch_array($res)) {
            $menu .= "<li><a href=\"" . $row['link'] . "\">" . $row['tekst'] . "</a></li>";
        }
    $menu .= "</ul>";
    $menu .= "</div>";
}


Hvis der er nogen der har en bedre løsning, siger i bare til :-)
Avatar billede rthuls Nybegynder
02. september 2003 - 13:54 #10
Hvis der er nogen der har styr på .htaccess RewriteRule må I meget gerne ta' et kig på det her spørgsmål:
http://www.eksperten.dk/spm/395671
Avatar billede rthuls Nybegynder
13. juni 2004 - 23:23 #11
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester