Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当用户单击子菜单并在新页面中打开时,子菜单将保持活动状态_Javascript_Php_Css_Menu - Fatal编程技术网

Javascript 当用户单击子菜单并在新页面中打开时,子菜单将保持活动状态

Javascript 当用户单击子菜单并在新页面中打开时,子菜单将保持活动状态,javascript,php,css,menu,Javascript,Php,Css,Menu,当访问者单击子菜单,链接在新页面中打开时,我会遇到问题,因此我希望该子菜单在该页面上保持活动状态 我有css类活动和javascript打开它,我需要的是使它与php的活动。 这是UL认证的等级: 这是我的密码。它可以用php或javascript来完成 <ul> <?php $qKategori = ("SELECT * FROM kategori WHERE kprind = 0"); $rKategori = mysqli_query($dbc, $qKategori)

当访问者单击子菜单,链接在新页面中打开时,我会遇到问题,因此我希望该子菜单在该页面上保持活动状态

我有css类活动和javascript打开它,我需要的是使它与php的活动。 这是UL认证的等级:

这是我的密码。它可以用php或javascript来完成

<ul>
<?php 
$qKategori = ("SELECT * FROM kategori WHERE kprind = 0");
$rKategori = mysqli_query($dbc, $qKategori);
if ($rKategori) {

while ($exKat = mysqli_fetch_array($rKategori, MYSQLI_ASSOC)){ 
$emrikategorise = $exKat['kemri'];
$idkategori = $exKat['kid'];
$idprind = $exKat['kprind'];
?>  

<li><a href="#"><?=$emrikategorise;?></a>

<ul>
<?php 
$qPrind = ("SELECT * FROM kategori WHERE kprind = '".$idkategori."'");              
$rPrind = mysqli_query($dbc,$qPrind);

while($prind = mysqli_fetch_array($rPrind)) {                 
?>
<li><a href="kategori.php?kid=<?=$prind['kid']?>"><?=$prind['kemri']?></a>   </li>
<?php 
}
mysqli_free_result($rPrind);    
?>
</ul>

</li>

<?php                   }       
mysqli_free_result($rKategori); 
}   

?>
</ul>

您可以看到网站左侧的菜单是www.sitimobil.mk

,您可能需要在输出前构建阵列,以确定哪些菜单应处于活动状态。您还可以将其与查询优化相结合,以使每个类别不必执行1个查询

比如:

$active = isset($_GET['kid'] ? $_GET['kid'] : -1;
$tree = array();
$list = array();
$qKategori = ("SELECT * FROM kategori ORDER BY kprind");
$rKategori = mysqli_query($dbc, $qKategori);
if ($rKategori) {
   while ($exKat = mysqli_fetch_array($rKategori, MYSQLI_ASSOC)){ 
      $id = $exKat['kid'];
      //To prevent numerical array with unused space
      $name = 'kategori'.$exKat['kid']; 
      $list[$name] = $exKat;

      //Calculate depth to see if the menu is a sub..sub..sub menu etc.
      $parent = $list[$name]['kprind'];
      if($parent == 0) {
         $list[$name]['depth'] = 0;
         $list[$name]['childCount'] = 0;
      }
      else {
         $list['kategori'.$parent]['childCount']++;
         $list[$name]['depth'] = $list['kategori'.$parent]['depth']+1; //Increment
      }

      if($id == $active) {
         $list[$name]['active'] = true;

         while($parent != 0) {
            $parentName = 'kategori'.$parent;
            $list[$parentName]['active'] = true;
            $parent = $list[$parentName]['kprind'];
         }
      }
      else 
         $list[$name]['active'] = false;
   }  
   mysqli_free_result($rPrind); 
   //Once we have that we can output the results...

   function output_menu($list, $parent = 0, $active = false)
       $activeClass = $active ? ' class="active"' : '';
       echo '<ul'.$activeClass.'>';
       foreach($list as $row){
          if($row['kprind'] != $parent) continue;
          $link = $row['kprind'] == 0 ? '#' : 'kategori.php?kid='.$row['kid'];
          echo '<li><a href="'.$link.'">'.$row['kemri'].'</a>';
          if($row['childCount'] > 0) 
           output_menu($list, $row['kprind'], $row['active']);
          echo '</li>';
       }
       echo '</ul>';
   }
   output_menu($list);
}

这仍然是一个有点粗糙,但应该做的把戏。它可能会被优化,这样我们就不必过多地查看列表,但它的好处是不必向数据库请求太多的调用。这将减轻数据库的工作量,提高输出速度。

这不起作用,打开网站的速度非常慢。我认为最好是使用GET和put,如果还有其他选项,请使用?