Avatar billede sajbar Nybegynder
07. april 2005 - 13:53 Der er 1 kommentar og
1 løsning

treemenu lavet fra et sql udtræk

Hej eksperter!

jeg vil gerne have lavet en træmenu ud fra et udtræk fra mysql.
min tabel ser ud som følgende
+-------------+----------+------+-----+---------+----------------+
| Field      | Type    | Null | Key | Default | Extra          |
+-------------+----------+------+-----+---------+----------------+
| pid        | int(11)  |      | PRI | NULL    | auto_increment |
| parent      | int(11)  |      |    | 0      |                |
| page_name  | tinytext |      |    |        |                |
| titel      | text    |      |    |        |                |
| content    | text    |      |    |        |                |
| template_id | int(11)  |      |    | 2      |                |
| status      | int(1)  |      |    | 1      |                |
| position    | int(11)  |      |    | 0      |                |
| editable    | int(1)  |      |    | 1      |                |
+-------------+----------+------+-----+---------+----------------+

pid er det enkelte siders id
page_name er linket til siden.
parent er et id som indeholder information hvem der er "forældre" til den enkelte side.

jeg er godt klar over det kræver noget rekursiv
og jeg er dummere end en dør på det område så jeg håber der er en eller anden der har lavet noget ligende som personen kunne tænke sig at dele/rette lidt til

jeg er villig til at give mere end 100 point hvis det bliver nødvendig, har googlet en del timer idag men ikke fundet noget jeg kunne finde ud af at rette til :(

håber på at høre fra en eller anden der kan løse det for mig.
Avatar billede sajbar Nybegynder
07. april 2005 - 15:17 #1
hive ud og fremvisningsdelen har jeg fået lavet nu, havde glemt jeg have et gammelt spørgsmål åbent.

så det source jeg har at arbejde med ser således ud:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>test</title>
</head>
<body>
<?
include("./inc/database/dbfunctions.inc.php");
connect();
function getMenu( $parent, &$array, $level = 0 )
{
    $sql = "SELECT pid, parent, page_name FROM pages WHERE parent = '$parent'";
    $qh = fetch($sql);
    if ( @mysql_num_rows( $qh ) > 0 )
    {
        while ($row = mysql_fetch_assoc($qh))
        {
            $row['level'] = $level;
            $array[] = $row;
           
            $array[] = getMenu( $row['pid'], $array, $level + 1 );
        }
        Return $array;
        mysql_free_result($qh);
    }
}
$array = array();
$array1  = getMenu( 0, $array );
//var_dump($array1);

function dispMenu( $array )
{
    $oldlevel = -1;
    foreach ( $array as $item )
    {
        if($item !=NULL) {
               
        if ( $oldlevel != $item['level'] )
        {
            if ( $oldlevel < $item['level'] )
            {
                echo "<ul>\n";
            }
            elseif ( $oldlevel > $item['level'] )
            {
                echo "</ul>\n";
            }
            $oldlevel = $item['level'];
        }

        echo "<li><a href='$_SERVER[PHP_SELF]?pid=$item[pid]'>$item[page_name]</a></li>\n";
        }
    }
    echo("</ul>\n");
}
dispMenu($array1);
?>
</body>
</html>

håber der er nogen der kan fixe det sidste med at lave træmenu'en
output kan ses på http://home.sajbar.dk/mediaoptik.dk/test.php
Avatar billede sajbar Nybegynder
07. april 2005 - 15:58 #2
jeg tror jeg har fundet en løsning selv, jeg poster den hvis det viser sig at den holder vand :)
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