Avatar billede cleecer Nybegynder
25. februar 2006 - 16:45 Der er 4 kommentarer

menu baseret på parent og id

Hej
jeg vil gerne lave en menu som denne:
http://www.odi.ch/prog/java/portscanner.php

Det eneste der ikke skal være som på denne er at den skal linke til den samme index.php side bare med ?id=4id efter.

- hvordan gør jeg det..?
Avatar billede dkfire Nybegynder
25. februar 2006 - 17:04 #1
Ligger dit indhold i en database eller som php-filer ??
Avatar billede cleecer Nybegynder
25. februar 2006 - 17:18 #2
det ligger i en database
Avatar billede dkfire Nybegynder
25. februar 2006 - 18:03 #3
Jeg vil opfordre dig til at kigge her: http://www.eksperten.dk/spm/259636
Så tager vi den derefter.
Avatar billede cleecer Nybegynder
25. februar 2006 - 19:22 #4
Jeg har via eksperten fundet frem til en løsning. Men jeg vil gerne have at scriptet rykker menupunkterne for at indikere hvad der høre til hvad. som nedenstående:

menupunkt 1
  menupunkt 1.1
  menupunkt 1.2
    menupunkt 1.2.1
      menupunkt 1.2.1.1
  menupunkt 1.3
  menupunkt 1.4
menupunkt 2
  menupunkt 2.1
OSV..

kode:

if( isset($_GET['id']) )
    $menu_id = $_GET['id'];
else
    $menu_id = null;

$menu = getMenu($menu_id);
printMenu($menu); // Example output


function printMenu($menu,$level=0) {
    foreach($menu as $item) {
        $pre = $post = '';
        if( $level == 0 ) {
            $pre = '<font size=+1>';
            $post = '</font>';
        }elseif( $level == 2 ) {
            $pre = '<i>';
            $post = '</i>';
        }
        $id=$item['id'];
        print $pre . '<a href='.$_SERVER['PHP_SELF'].'?id=' . $item['id'] . '&' . $item['link'] . '"><img src=\"gfx/standard/menu_indikator.gif\" name=\"n_$id\" height=\"15\" width=\"19\" border=\"0\">' .$item['name'].'</a>' . $post . '<br/>';
        if( $item['submenu'] != null )
            printMenu($item['submenu'],$level+1, true);
    }
   
}

function getMenu($path) {
    if(! is_array($path) ) {
        $id = $path;
        $path = array();
        do {
            $path[] = $id;
            $sql = "SELECT parent FROM menu WHERE id = '$id'";
            $res = mysql_query($sql) or die(mysql_error());
            $row = mysql_fetch_array($res);
            if( $row === null )
                $id = 0;
            else
                $id = $row[0];
        }while($id != 0);
        $path[] = '0'; // All path ends at root..
        return getMenu($path);
    }

    $menu = array();
    $parent = array_pop($path);
    $sql = "SELECT id, name, link FROM menu WHERE parent = '$parent'";
    $res = mysql_query($sql) or die(mysql_error());

    while($row = mysql_fetch_array($res)) {
        $id  = $row[0];
        $name = stripslashes($row[1]);
        $link  = stripslashes($row[2]);
        if( in_array($id,$path) )
            $submenu = getMenu($path);
        else
            $submenu = null;
        $menu[] = array('id' => $id, 'name' => $name, 'link' => $link, 'submenu' => $submenu);
    }
    return $menu;
}
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