Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.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
如何使用php创建带有子菜单的动态菜单&;mysql_Php_Mysql - Fatal编程技术网

如何使用php创建带有子菜单的动态菜单&;mysql

如何使用php创建带有子菜单的动态菜单&;mysql,php,mysql,Php,Mysql,我想有一个动态菜单,从一个使用php和mysql的表中获取数据 我的桌子看起来像这样: sec_id sec_name sec_group 1 section 1 group 1 2 section 2 group 1 3 section 3 group 2 4 section 4 group 1 5 section 5 group 3 我可以通过查询来获取和显示唯一的sec_组值,但无法找到将sec_名称包含到每个sec_组中的方法 //Que

我想有一个动态菜单,从一个使用php和mysql的表中获取数据

我的桌子看起来像这样:

sec_id  sec_name    sec_group
1   section 1   group 1
2   section 2   group 1
3   section 3   group 2
4   section 4   group 1
5   section 5   group 3
我可以通过查询来获取和显示唯一的sec_组值,但无法找到将sec_名称包含到每个sec_组中的方法

//Query by unique sec_group
$qry_secs="SELECT DISTINCT sec_group FROM tbl_user_sec ORDER BY sec_id ASC";
$result_secs = mysql_query($qry_secs);

//echo values
while($row_secs = mysql_fetch_assoc($result_secs)){
 echo '<ul><li><a href="#">'.$row_secs['sec_group'].'</a></li></ul>';
}
//按唯一sec_组查询
$qry_secs=“根据sec_id ASC从tbl_用户_secorder中选择不同的sec_组”;
$result\u secs=mysql\u query($qry\u secs);
//回波值
而($row\u secs=mysql\u fetch\u assoc($result\u secs)){
回音“
    • ”; }
最终,HTML应该像下面的代码一样

<ul>
<li><a href="#">Group 1</a>
  <ul>
  <li><a href="#">Section 1</a></li>
  <li><a href="#">Section 2</a></li>
  <li><a href="#">Section 4</a></li>
  </ul>
</li>

<li><a href="#">Group 2</a>
  <ul>
  <li><a href="#">Section 3</a></li>
  </ul>
</li>

<li><a href="#">Group 3</a>
  <ul>
  <li><a href="#">Section 5</a></li>
  </ul>
</li>
</ul>
有什么想法吗?

$qry_secs=“根据sec id ASC从tbl_用户_secorder中选择不同的sec组”;
$qry_secs="SELECT DISTINCT sec_group FROM tbl_user_sec ORDER BY sec_id ASC";
$result_secs = mysql_query($qry_secs);
echo '<ul>\n';
//echo values
while($row_secs = mysql_fetch_assoc($result_secs)) {
    echo '<li><a href="#">'.$row_secs['sec_group'].'</a></li>\n';
    echo '<ul>\n';
    $newqry = "SELECT sec_name FROM tbl_user_sec WHERE `sec_group` = '" . mysql_real_escape_string($row_secs['sec_group'] . "'";
    $result = mysql_query($newqry);
    while($row = mysql_fetch_assoc($result) ) {
        echo '<li><a href="#">' . $row['sec_name'] . '</li>\n';
    echo '</ul>\n';
}
echo '</ul>\n';
$result\u secs=mysql\u query($qry\u secs); 回声'
    \n'; //回波值 而($row\u secs=mysql\u fetch\u assoc($result\u secs)){ 回音“
  • \n”; 回声'
      \n'; $newqry=“从tbl_user_sec中选择sec_name,其中`sec_group`=”。mysql_real_escape_字符串($row_secs['sec_group'])。”; $result=mysql\u查询($newqry); while($row=mysql\u fetch\u assoc($result)){ 回显“
    • ”.$row['sec_name']。
    • \n”; 回声'
    \n'; } 回声'
\n';
$q=mysql\u查询(“按sec\u id从tbl\u用户\u sec订单中选择sec\u id、sec\u名称、sec\u组”);
//准备数据
$groups=Array();
而($w=mysql\u fetch\u assoc($q)){
如果(!isset($groups[$w['secu-group']])$groups[$w['secu-group']]]]=Array();
$groups[$w['sec_group']][]=$w;
}
//显示数据
回声“
    ”; foreach($group as$group\U name=>$sections){ 回音“
    • ”; foreach($sections作为$section){ 回音“
    • ”; } 回音“
  • ”; } 回声“
”;

如果你不关心按秒id排序的结果,你只需要两个嵌套循环。@PeterSzymkowski我尊重OP的愿望,希望按秒id ASC排序。。if-you-know-what-I-means.:@Nerd Herd ok更新了我的答案。仍然不需要使用嵌套查询来向db发出组数量*查询
$q = mysql_query("SELECT sec_id, sec_name, sec_group FROM tbl_user_sec ORDER BY sec_id");

// prepare data 
$groups = Array();
while($w = mysql_fetch_assoc($q)) {
  if(!isset($groups[$w['sec_group']])) $groups[$w['sec_group']] = Array();
  $groups[$w['sec_group']][] = $w;
}

// display data
echo "<ul>";
foreach($groups as $group_name => $sections) {
  echo '<li><a href="#">'.$group_name.'</a><ul>';
  foreach($sections as $section) {
    echo '<li><a href="#">'.$section['sec_name'].'</a>';
  }
  echo '</ul></li>';
}
echo "</ul>";