Avatar billede pesmi Nybegynder
16. marts 2006 - 10:06 Der er 5 kommentarer og
1 løsning

HTML list menu lavet med php

Hej eksperter,

jeg er ved at prøve at bygge et website, med brugen af php og mysql. Da jeg har kigget lidt omkring på nettet og set de mange muligheder med css til opbygning af design på sites, er jeg ved at implementere css på mit site.

Mit problem ligger i at jeg gerne vil have at mine menuer er dynamiske html list (<ul><li></li></ul>) menuer, dvs. at de bliver hevet ud af min db som en list og bagefter stylet med css, da det ser ud som værende den bedste måde at bygge menuer.

Jeg har dog ikke kunne implementere denne funktion og beder derfor om hjælp af jer. Er der nogen som kender en tutorial hvor man kan lære hvordan man gør dette og kan se eksempler på ovenstående, ville jeg blive meget glad hvis I ville poste dem her.

Jeg har prøvet en model som jeg fandt på et site kaldet dhtmlgoodies.com, men denne model virker ikke. Jeg ved ikke helt hvad grunden er, men jeg har bygget et template system, så man hurtigt kan ændre designet og dette vil ikke skrive menuen ind der hvor jeg gerne vil have den ind.


$f_menu = "<div id='mainContainer'>".$tree->drawTree()."</div>";
$f_content="$content $content2";

$tag_code = array ("{%MENU%}", "{%CONTENT%}", "{%FOOTER%}");
$insert_code= array($f_menu,$f_content,"footer");

$t_content="".stripslashes($row[temp_content])."";

$temp_content= str_replace($tag_code, $insert_code, $t_content);


dette spg er tidligere blevet posted under java script:
http://www.eksperten.dk/spm/693539
Avatar billede gizmo-gizmo Nybegynder
16. marts 2006 - 10:18 #1
Hvad er det helt specifikt dit problem er? Er det at hive elementerne ud af databasen?

Et lille hurtigt eksempel (jeg ved ikke det er helt ved siden af)

<style type="text/css">
ul { font-size: 100px; }
</style>

<ul>
  <?
  $q = mysql_query("SELECT tekst,link FROM menu");
  while($r = mysql_fetch_array($q))
  {
  ?>

    <li><a href="<?=$r['link']?>"><?=$r['tekst']?></a></li>

  <?
  }
  ?>
</ul>
Avatar billede pesmi Nybegynder
16. marts 2006 - 10:59 #2
problemet er at jeg har et template system hvor man bygger sin template i en editor og derefter indsætter nogle kode strenge der hvor man f.eks. vil have sin menu, content, footer osv. disse koder vælger man i en drop-down menu i editoren. Når så siden bliver bygget, bliver disse koder skiftet ud med php variabler. Men menu variablen skriver endten kun ren php kode ud i browseren, hvilket jeg ikke vidste var muligt, eller også skvier den "object()" der hvor "list" menuen skulle skrives ud. Da menuen skal kunne vise flere niveauer, fandt jeg følgende script kode som jeg prøvede at bruge på dhtmlgoodies.com:



function addToArray($id,$name,$parentID,$url="",$target="",$onclick=""){
        if(empty($parentID))$parentID=0;   
        $this->elementArray[$parentID][] = array($id,$name,$url,$target,$onclick);
    }
   
    function drawSubNode($parentID){
        if(isset($this->elementArray[$parentID])){           
            echo "<ul>";
            for($no=0;$no<count($this->elementArray[$parentID]);$no++){
                $urlAdd = "";
                if($this->elementArray[$parentID][$no][2]){
                    $urlAdd = "href=\"".$this->elementArray[$parentID][$no][2]."\"";
                    if($this->elementArray[$parentID][$no][3])$urlAdd.=" target=\"".$this->elementArray[$parentID][$no][3]."\" onclick=\"".$this->elementArray[$parentID][$no][4]."\"";   
                }
                echo "<li><a $urlAdd>".$this->elementArray[$parentID][$no][1]."</a>";   
                $this->drawSubNode($this->elementArray[$parentID][$no][0]);
                echo "</li>";
            }           
            echo "</ul>";           
        }       
    }
   
    function drawTree(){
        //echo "<div id=\"mainContainer\">";
        echo"<div id=\"dhtmlgoodies_menu\">";
        echo "<ul>";
        for($no=0;$no<count($this->elementArray[0]);$no++){
            $urlAdd = "";
            if($this->elementArray[0][$no][2]){
                $urlAdd = "href=\"".$this->elementArray[0][$no][2]."\"";
                if($this->elementArray[0][$no][3])$urlAdd.=" target=\"".$this->elementArray[0][$no][3]."\" onclick=\"".$this->elementArray[0][$no][4]."\"";   
            }
            echo "<li><a $urlAdd>".$this->elementArray[0][$no][1]."</a>";       
            $this->drawSubNode($this->elementArray[0][$no][0]);
            echo "</li>";   
        }   
        echo "</ul>";   
        echo "</div>";   
        //echo"</div>";
    }
}

$query = mysql_query("SELECT * FROM content WHERE id!=0 AND publish=1 AND publish_in_menu=1 ORDER BY id ASC");
    while ($row = mysql_fetch_array($query))
{
$tree->addToArray($row["id"],
    $row["title"],
    $row["pid"],
    $row["page_name"],
    "_top",
    $row["onclick"]);

$f_menu = "<div id='mainContainer'>".$tree->drawTree()."</div>";
Avatar billede gizmo-gizmo Nybegynder
16. marts 2006 - 11:01 #3
Ahh okay, så må jeg melde pas  (jeg hader at sætte mig ind i andres kode, hehe :-)
Avatar billede pesmi Nybegynder
16. marts 2006 - 11:02 #4
derefter kommer menuen til at se ud som nedenstående:

<div id="dhtmlgoodies_menu">
<ul>
  <li><a href="home.html" target="_top" onclick="">Home</a>
  <ul>
    <li><a href="sub.html" target="_top" onclick="">sub</a></li>
  </ul>
  </li>
  <li><a href="portfolio.html" target="_top" onclick="">Portfolio</a></li>
  <li><a href="com_store.html" target="_top" onclick="">Com_Store</a></li>
</ul>
</div>
Avatar billede pesmi Nybegynder
16. marts 2006 - 11:07 #5
ok, men tak for dit hurtige svar, det er fedt at vide at der er nogen som læser mit spg.
Avatar billede pesmi Nybegynder
12. juli 2006 - 04:38 #6
er løst med eval()
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