/ Forside/ Teknologi / Udvikling / PHP / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Dynamisk PHP menu...
Fra : dscoop80
Vist : 372 gange
45 point
Dato : 11-02-06 12:51

Hej alle.

Jeg har efter hånden i en uge nu prøvet og udvikle en dynamisk php-menu... det vil sige en menu som udelukket bliver bygget ud fra et array med id'er og relationer til sub-menuer/sub-sider osv. ... det er også lykkedes mig ret godt! MEN har nu 2 problemer... det første er at jeg ikke kan få sorteret menu/side ordentligt (stigende/faldende) ... det andet problem er at jeg ikke vil have at menuerne bliver vist 2 gange... håber nogen kan hjælpe! vedlægger koden her:

Kode
<?php

// menu array

$my_array = array();

$sort   = 16;   $my_array[$sort]['id'] = 1;    $my_array[$sort]['rel'] = "";       $my_array[$sort]['type'] = "menu";   $my_array[$sort]['order'] = $sort;
$sort   = 1;   $my_array[$sort]['id'] = 2;    $my_array[$sort]['rel'] = "";       $my_array[$sort]['type'] = "menu";    $my_array[$sort]['order'] = $sort;
$sort   = 18;   $my_array[$sort]['id'] = 3;    $my_array[$sort]['rel'] = 1;       $my_array[$sort]['type'] = "menu";    $my_array[$sort]['order'] = $sort;
$sort   = 11;   $my_array[$sort]['id'] = 14;    $my_array[$sort]['rel'] = 3;       $my_array[$sort]['type'] = "menu";    $my_array[$sort]['order'] = $sort;
$sort   = 21;   $my_array[$sort]['id'] = 21;    $my_array[$sort]['rel'] = 3;      $my_array[$sort]['type'] = "menu";    $my_array[$sort]['order'] = $sort;

$sort   = 6;   $my_array[$sort]['id'] = 4;    $my_array[$sort]['rel'] = 2;       $my_array[$sort]['type'] = "side";    $my_array[$sort]['order'] = $sort;
$sort   = 8;   $my_array[$sort]['id'] = 5;    $my_array[$sort]['rel'] = 2;       $my_array[$sort]['type'] = "side";    $my_array[$sort]['order'] = $sort;
$sort   = 3;   $my_array[$sort]['id'] = 6;    $my_array[$sort]['rel'] = 2;       $my_array[$sort]['type'] = "side";    $my_array[$sort]['order'] = $sort;
$sort   = 7;   $my_array[$sort]['id'] = 7;    $my_array[$sort]['rel'] = 2;       $my_array[$sort]['type'] = "side";    $my_array[$sort]['order'] = $sort;
$sort   = 5;   $my_array[$sort]['id'] = 8;    $my_array[$sort]['rel'] = 2;       $my_array[$sort]['type'] = "side";    $my_array[$sort]['order'] = $sort;
$sort   = 13;   $my_array[$sort]['id'] = 9;    $my_array[$sort]['rel'] = 3;       $my_array[$sort]['type'] = "side";    $my_array[$sort]['order'] = $sort;
$sort   = 14;   $my_array[$sort]['id'] = 10;    $my_array[$sort]['rel'] = 3;       $my_array[$sort]['type'] = "side";    $my_array[$sort]['order'] = $sort;
$sort   = 10;   $my_array[$sort]['id'] = 11;    $my_array[$sort]['rel'] = 14;      $my_array[$sort]['type'] = "side";    $my_array[$sort]['order'] = $sort;
$sort   = 9;   $my_array[$sort]['id'] = 12;    $my_array[$sort]['rel'] = 14;      $my_array[$sort]['type'] = "side";    $my_array[$sort]['order'] = $sort;
$sort   = 12;   $my_array[$sort]['id'] = 13;    $my_array[$sort]['rel'] = 14;      $my_array[$sort]['type'] = "side";    $my_array[$sort]['order'] = $sort;
$sort   = 15;   $my_array[$sort]['id'] = 15;    $my_array[$sort]['rel'] = "";      $my_array[$sort]['type'] = "side";    $my_array[$sort]['order'] = $sort;
$sort   = 2;   $my_array[$sort]['id'] = 16;    $my_array[$sort]['rel'] = "";      $my_array[$sort]['type'] = "side";    $my_array[$sort]['order'] = $sort;
$sort   = 17;   $my_array[$sort]['id'] = 17;    $my_array[$sort]['rel'] = "";      $my_array[$sort]['type'] = "side";    $my_array[$sort]['order'] = $sort;
$sort   = 19;   $my_array[$sort]['id'] = 18;    $my_array[$sort]['rel'] = 1;      $my_array[$sort]['type'] = "side";    $my_array[$sort]['order'] = $sort;
$sort   = 20;   $my_array[$sort]['id'] = 19;    $my_array[$sort]['rel'] = 1;      $my_array[$sort]['type'] = "side";    $my_array[$sort]['order'] = $sort;
$sort   = 4;   $my_array[$sort]['id'] = 20;    $my_array[$sort]['rel'] = 1;      $my_array[$sort]['type'] = "side";    $my_array[$sort]['order'] = $sort;
$sort   = 22;   $my_array[$sort]['id'] = 22;    $my_array[$sort]['rel'] = 21;      $my_array[$sort]['type'] = "side";    $my_array[$sort]['order'] = $sort;
$sort   = 23;   $my_array[$sort]['id'] = 23;    $my_array[$sort]['rel'] = 21;      $my_array[$sort]['type'] = "side";    $my_array[$sort]['order'] = $sort;
$sort   = 24;   $my_array[$sort]['id'] = 24;    $my_array[$sort]['rel'] = 21;      $my_array[$sort]['type'] = "side";    $my_array[$sort]['order'] = $sort;

/* *************************************************************** */

function get_subs($id)
{
Global $my_array;
$new_array = array();

   // henter alle relaterende sider
   foreach($my_array as $key => $value)
   {
      if($value['rel'] == $id)
      {
      $new_array[$key] = $value;
      }
   }

return($new_array);
}

function menu($menu,$level_count,$test_array)
{
$level_count++;

// sortering ?
reset($menu);
ksort($menu);

   if(!is_array($test_array))
   {
   // dette array skal sørge for menu'er/sider KUN blir vist én gang
   $test_array = array();
   }
   
   foreach($menu as $key => $value)
   {
      if($value['type'] == "menu" AND count(get_subs($value['id'])) > 0 AND !in_array($value['rel'],$test_array))
      {
      echo "<div onclick=\"show_hide_menu('menu_ul_".$level_count."_".$value['id']."','".$level_count."','".$value['id']."')\" id=\"menu_div_".$level_count."_".$value['id']."\"><p class=\"headmenu\">menu:&nbsp;".$value['id']."&nbsp;(level:&nbsp;".$level_count." SORT: ".$value['order'].") klik her for og lukke denne menu...</p></div>\n";
      echo "<ul id=\"menu_ul_".$level_count."_".$value['id']."\">\n";

         // sortering ?
         $my_subs = get_subs($value['id']);
         reset($my_subs);
         ksort($my_subs);

         foreach($my_subs as $page_key => $page_value)
         {
            if($page_value['type'] == "menu")
            {
            menu(get_subs($page_value['rel']),$level_count,$test_array);
            array_push($test_array,$page_value['rel']);
            }

            else
            {
            echo "<p class=\"subpage\">alm.&nbsp;side:&nbsp;".$page_value['id']."&nbsp;(".$level_count." SORT: ".$page_value['order'].")</p>\n";
            }
         }
   
      echo "</ul>";
      }
   }
}

?>

<html>
<head>

<style>

   div,p,ul      { font-family:arial; font-size:12px; font-weight:bold; }
   div      { cursor:hand; }
   ul,p      { margin:0; padding-left:20px; }
   .hide_class    { display:none; }
   .show_class    { display:block; }

   .headmenu   { color:blue; }
   .headpage   { color:red; }
   .subpage      { color:green; }

</style>

   <script language="javascript">

   function findPosX(obj)
   {
      var curleft = 0;
      if (obj.offsetParent)
      {
         while (obj.offsetParent)
         {
            curleft += obj.offsetLeft
            obj = obj.offsetParent;
         }
      }
      else if (obj.x)
         curleft += obj.x;
      return curleft;
   }

   function findPosY(obj)
   {
      var curtop = 0;
      if (obj.offsetParent)
      {
         while (obj.offsetParent)
         {
            curtop += obj.offsetTop
            obj = obj.offsetParent;
         }
      }
      else if (obj.y)
         curtop += obj.y;
      return curtop;
   }

   function js_menu_expand(myid,levelcount)
   {
      if(myid && levelcount)
      {
      var slide_l,slide_t;

      var browser    = document.all;
      var menu_div    = 'menu_div_' + levelcount + '_' + myid;
      var menu_ul    = 'menu_ul_' + levelcount + '_' + myid;
      var headmenu    = 'headmenu_div';

      menu_div      = browser(menu_div);
      menu_ul      = browser(menu_ul);
      headmenu      = browser(headmenu);

      /* **************************** MENU TEST 1 ********************************* */

         /*
         if(levelcount == 1)
         {
         slide_l = findPosX(document.all.headmenu_div) + headmenu.offsetWidth - 1;
         slide_t = findPosY(document.all.headmenu_div) + menu_div.offsetTop - 6;
         }

         else
         {
         slide_l = menu_div.offsetWidth + (menu_div.offsetLeft * 2);
         slide_t = menu_div.offsetTop - menu_div.offsetLeft - 1;
         }

         menu_ul.style.cssText    = 'position:absolute; left:' + slide_l + 'px; top:' + slide_t + 'px; margin:0;';
         */

      /* **************************** MENU TEST 2 ********************************* */

      menu_ul.style.cssText    = 'padding-left:30px; width:100%;';

      /* ************************************************************************** */
      }
   }

   function tildel_klasser(type,myclass)
   {
   var Nodes    = document.getElementsByTagName(type)
   var max   = Nodes.length;

      for(var i = 0;i < max;i++)
      {
      var nodeObj = Nodes.item(i)
      nodeObj.className = myclass;
      }
   }

   function show_hide_menu(ul_id,level,id)
   {
   var Nodes    = document.getElementsByTagName('ul')
   var max      = Nodes.length;

      for(var i = 0;i < max;i++)
      {
      var nodeObj = Nodes.item(i)

         if(myclass == 'show_class')
         {
            if(nodeObj.id == ul_id)
            {
               if(nodeObj.className !== 'show_class')
               {
               js_menu_expand(id,level);
               nodeObj.className = 'show_class';
               }
                  else
                  {
                  nodeObj.className = 'hide_class';
                  }
            }
               else if(level == 1)
               {
               nodeObj.className = 'hide_class';
               }
         }

         else if(myclass == 'hide_class')
         {
            if(nodeObj.id == ul_id)
            {
               if(nodeObj.className !== 'hide_class')
               {
               nodeObj.className = 'hide_class';
               }
                  else
                  {
                  js_menu_expand(id,level);
                  nodeObj.className = 'show_class';
                  }
            }
               else if(level == 1)
               {
               nodeObj.className = 'hide_class';
               }
         }
      }
   }

   /* *************************************************************************************** */   

   </script>

   <script language="javascript">
   var myclass = 'show_class';   /* vælger start-klasse til <UL> */
   </script>

</head>
<body>
<table style="width:100%;height:100%;" cellpadding="0" cellspacing="0"><tr><td style="vertical-align:middle;text-align:center;">
<table cellpadding="0" cellspacing="0"><tr><td>

   <?php

   echo "<div id=\"headmenu_div\">\n";
   echo menu($my_array,0,0);
   echo "</div>";

   ?>

   <script language="javascript">
   tildel_klasser('ul',myclass);
   </script>

</td></tr></table>
</td></tr></table>
</body>
</html>


 
 
Annuller spørgsmålet
Fra : dscoop80


Dato : 12-02-06 15:18

Har fundet løsningen....

Du har følgende muligheder
Dette spørgsmål er blevet annulleret, det er derfor ikke muligt for at tilføje flere kommentarer.
Søg
Reklame
Statistik
Spørgsmål : 177424
Tips : 31962
Nyheder : 719565
Indlæg : 6407903
Brugere : 218877

Månedens bedste
Årets bedste
Sidste års bedste