Avatar billede katja_kh Nybegynder
26. august 2008 - 12:30 Der er 23 kommentarer

Nested list udfra database udtræk.

Jeg håber jeg kan få det forklaret uden at det bliver for kringlet.

Jeg har en nested menu, hvor menu punkterne er database udtræk.
I øjeblikket åbner menuen sig når man trykker på et punkt, når man så har valgt et underpunkt lukker den sig igen. Jeg vil gerne have at den forbliver åben, indtil man trykker på et hovedpunkt.

KODE:
    <?
if ($_GET['side'] !="") {
    $side = "includes/" . $_GET['side'] . ".php";
    }else{
        $side = "includes/forside.php";   
    }?>
   
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Language" content="en" />
<meta name="GENERATOR" content="Zend Studio" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Løjstrup bibliotek</title>
<link rel="stylesheet" type="text/css" href="stylesheet/fox.css" />
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="stylesheet/css.css">
<![endif]-->
</head>
<body >

<div id="main">

    <div class="header"></div>   
   
    <div class="bog"></div>
       
<div class="left">
    <div class="menu">
               
<?php
                   
include('includes/db_con.php');

$sql = "SELECT * FROM biblo_menu WHERE parent=0";
$result = mysql_query($sql);
                       
while ($row = mysql_fetch_array($result)){
                            echo "<li>";
    echo "<a href='index.php?id=";
    echo $row['id'];
    echo "'>";
    echo $row['navn'];
    echo "</a >";
                            echo "</li>";
                            echo "<br />";
                       
      if ($row['id'] == $_GET['id']){
                       
                           
$sql2 = "SELECT * FROM biblo_menu WHERE parent='$_GET[id]'";
                                $result2 = mysql_query($sql2);
                       
                                while ($row2 = mysql_fetch_array($result2)) {
                                    echo "<li>";
                                    echo "<a href='index.php?id=";
                                    echo $row2['id'];
                                    echo "'>";
                                    echo $row2['navn'];
                                    echo "</a >";
                                    echo "</li>";
                                    echo "<br />";
                                }
                            }
                        }
                       
                       
                    ?>
                </div>


Et andet spørgsmål er at når man trykker på et menupunkt vil den gerne åbne en side der hedder det samme punktets id. Men det er meningen at den skal hente en side via den lille php kode jeg har her.     <?
if ($_GET['side'] !="") {
    $side = "includes/" . $_GET['side'] . ".php";
    }else{
        $side = "includes/forside.php";   
    }?>

hvordan skal jeg dog skrive at den skal hente disse sider.
Avatar billede w13 Novice
26. august 2008 - 12:37 #1
Det er umuligt at se ud fra den kode. Kan vi evt. se det i aktion?
Avatar billede katja_kh Nybegynder
26. august 2008 - 12:46 #2
Avatar billede w13 Novice
26. august 2008 - 12:50 #3
Som en start skal:

echo "<a href='index.php?id=";

vel rettes til:

echo "<a href='index.php?side=";
Avatar billede w13 Novice
26. august 2008 - 12:50 #4
Begge steder.
Avatar billede w13 Novice
26. august 2008 - 12:51 #5
Det med at underpunkterne stadig skal vises, når man klikker på dem, bliver lidt sværere. Der skal nok noget Session ind over.
Avatar billede jakobdo Ekspert
26. august 2008 - 12:54 #6
Man kan jo også bygge det op i linket.
Avatar billede katja_kh Nybegynder
26. august 2008 - 13:01 #7
det med at ændre echo "<a href='index.php?id="; til echo "<a href='index.php?side="; virker ikke.
Avatar billede w13 Novice
26. august 2008 - 13:03 #8
Men det er det format, du vil hente det ned med her:

if ($_GET['side'] !="") {

som du ser henter du "side" og ikke "id", så derfor skal det helt sikkert være "side".

Hvis det ikke virker, er det jo fordi filerne hedder noget forkert i din includes-mappe.
Avatar billede jakobdo Ekspert
26. august 2008 - 13:03 #9
Det skal være id, da du bruge $_GET['id'] her: $sql2 = "SELECT * FROM biblo_menu WHERE parent='$_GET[id]'";
Avatar billede katja_kh Nybegynder
26. august 2008 - 13:12 #10
Tror jeg dropper det med databasen denne gang.. Har lige set i min opgave beskrivelse at det ikke er at krav at menuen er fra database..

Er der nogle af jer der har en bedre måde at lave sådan en menu liste på?
Avatar billede jakobdo Ekspert
26. august 2008 - 13:14 #11
Hvor mange niveauer har du ?
Avatar billede katja_kh Nybegynder
26. august 2008 - 13:17 #12
der skal kun være 2 niveauer.

FORSIDE
NYE BØGER
  *VOKSNE
  *UNGE
  *BØRN
ARRANGEMENTER
REGLEMENT
KONTAKT
Avatar billede jakobdo Ekspert
26. august 2008 - 13:23 #13
Så vil din måde med at trække alle parents ud først og så trække submenuer ud efterfølgende, være den nemmste løsning.

Og du kan bibeholde udklikket menu, ved at lave:

$sql2 = "SELECT * FROM biblo_menu WHERE parent='$_GET['id']' OR id = $_GET['id']";
Avatar billede katja_kh Nybegynder
26. august 2008 - 13:31 #14
hmm hvis jeg sætter den sætning ind går den helt agurk når man trykker rundt i menuen.

http://katja.wi13.ots.dk/bibliotek/
Avatar billede jakobdo Ekspert
26. august 2008 - 13:36 #15
Det er sgu da også forkert. :o)
Du skal nok lave en funktion som kan finde parent (hvis nogen) på netop åbnede side.
Avatar billede jakobdo Ekspert
26. august 2008 - 14:03 #16
Evt. skal man lave et hack ala: http://www.codebreaker.dk/exp/843045exp.php
Avatar billede jakobdo Ekspert
26. august 2008 - 14:03 #17
Og der hvor man så henter siden frem, skal man først tjekke om sub er sat, hvis ikke, så hent id og hvis ikke den er sat heller, så trække standard siden ud.
Avatar billede katja_kh Nybegynder
27. august 2008 - 09:22 #18
den slags liste jeg er ude efter kan I se på denne side.. Det er nøjagtig sådan mit skal se ud

http://uvmserver.dk/web/praktisk/lojstrup/index.php?side=forside
Avatar billede jakobdo Ekspert
27. august 2008 - 09:43 #19
Det er jo lidt ala det jeg har lavet.
Avatar billede katja_kh Nybegynder
27. august 2008 - 12:39 #20
jeg har lavet en menu ud fra et bilag jeg fandt på libris det kommer fra 44 javascript bogen..

Men jeg er der en måde at få undermenuen til at lade være med at lukke sig. Den må kun lukke hvis man klikker på et hovedpunkt.

DETTE ER JAVASCRIPTET:
var menuStatus = new Array();

function openMenu(menuID,object) {
    rowID=object.rowIndex+1;
    obj=object.parentNode;
    if (!menuStatus[menuID] || null) {
        obj.rows[object.rowIndex].cells[0].innerHTML = obj.rows[object.rowIndex].cells[0].innerHTML.replace(/c.gif/,'o.gif');
        obj.insertRow(rowID);
        obj.rows[rowID].insertCell(0);
        obj.rows[rowID].cells[0].innerHTML=document.getElementById(menuID).innerHTML;
        obj.rows[rowID].cells[0].className='submenu';
        menuStatus[menuID]=true }
    else {
        obj.rows[object.rowIndex].cells[0].innerHTML = obj.rows[object.rowIndex].cells[0].innerHTML.replace(/o.gif/,'c.gif');
        obj.deleteRow(rowID);
        menuStatus[menuID]=false }
}

function highlight(object){
    object.className='menuhover';
}

function dontHighlight(object){
    object.className='menu';
}

HER ER DER SCRIPT OG CSS SOM LIGGER I HEAD:
<script src="menu.js"></script>
<style type="text/css">
#dynTable    {
            position:absolute;
            top:50px;        /* Menuens placering fra top */
            left:10px;        /* Menuens placering fra venstre */
            /*border:1px black solid;/* Menuens kant */
            cursor:pointer;cursor:hand;/* Musepilens form over menuen */
            width:140px;        /* Menuens bredde */
            }
.menu        {
            height:22px;            /* Menuteksts højde */
            color:#000;            /* Menuteksts farve */
            /*background-color:#00CCFF;/* Menuteksts baggrundsfarve */
            font-family:arial;    /* Menuteksts skrifttype */
            font-size:12px;        /* Menuteksts størrelse */
            font-weight:bold;    /* Menuteksts form */
            }
.menuhover    {
            height:22px;            /* Menuteksts højde */
            color:#000;            /* Menuteksts farve */
            /*background-color:gray;/* Menuteksts baggrundsfarve */
            font-family:arial;    /* Menuteksts skrifttype */
            font-size:14px;        /* Menuteksts størrelse */
            font-weight:bold;        /* Menuteksts form */
            }
.menulink    {
            color:#000;        /* Menuteksts farve */
            text-decoration:none;    /* Ingen understregning af links*/
            }
.submenu    {
            width:100%;            /* Submenuteksts bredde */
            color:black;            /* Submenuteksts farve */
            /*background-color:#CCFFFF;/* Submenuteksts baggrundsfarve */
            font-family:arial;        /* Submenuteksts skrifttype */
            font-size:12px;        /* Submenuteksts størrelse */
            text-decoration:none;    /* Ingen understregning af links*/
            font-weight:bold;        /* submenuteksts tekstform*/   
           
            }
A.submenu:hover{
            font-weight:bold;/* Den aktive submenuteksts tekstform*/
            color:#ff9933;        /* Den aktive submenuteksts farve*/
            /*background-color:gray;/* Den aktive submenuteksts baggrundsfarve*/
    }

</style>

HER ER KODEN TIL MENUEN:
<TABLE id=dynTable border=0 cellpadding=0 cellspacing=0>
    <TR>
        <TD class="menu">
            &bull;&nbsp; <A HREF="index.php?side=forside" class=menulink>FORSIDE</a></TD></TR>
    <TR onclick="openMenu('menu2',this)">
        <TD class=menu onmouseover="dontHighlight(this)" onmouseout="dontHighlight(this)">
            &bull;&nbsp;<!--<A HREF="index.php?side=nye_b" class=menulink>--> NYE BØGER</a></TD></TR>
    <TR>
        <TD class=menu >
            &bull;&nbsp; <A HREF="index.php?side=arran" class=menulink>ARRANGEMENTER</a></TD></TR>
    <TR>
        <TD class=menu >
            &bull;&nbsp; <A HREF="index.php?side=regl" class=menulink>REGLEMENT</A></TD></TR>
    <TR>
        <TD class=menu >
            &bull;&nbsp;<A HREF="index.php?side=kontakt" class=menulink> KONTAKT</A></TD></TR>
</TABLE>


<div id=menu2 style="visibility:hidden">
    &nbsp;&nbsp;&nbsp;&nbsp;&bull;&nbsp;<a href="index.php?side=voksne" class=submenu>&nbsp;VOKSNE</a><br>
    &nbsp;&nbsp;&nbsp;&nbsp;&bull;&nbsp;<a href="index.php?side=unge" class=submenu>&nbsp;UNGE</a><br>
    &nbsp;&nbsp;&nbsp;&nbsp;&bull;&nbsp;<a href="index.php?side=born" class=submenu>&nbsp;BØRN</a></div>
Avatar billede jakobdo Ekspert
27. august 2008 - 12:47 #21
Prøv i javascript kategorien. :o)
Avatar billede katja_kh Nybegynder
27. august 2008 - 13:00 #22
ja det det havde jeg næsten regnet ud.. men forstår ikke rigtig noget af javascript!
Avatar billede w13 Novice
27. august 2008 - 14:22 #23
Nej, men derfor kan du spørge i JavaScript-kategorien, hvor der er mange, der forstår det. =)
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