PHP生成UL LI,UL LI
无法理解如何使用while循环生成此菜单 这是我的代码示例:PHP生成UL LI,UL LI,php,html-lists,suckerfish,Php,Html Lists,Suckerfish,无法理解如何使用while循环生成此菜单 这是我的代码示例: <ul id="nav"> <li><a href="#">Hoofdmenu 1</a> <ul class="sub"> <li><a href="#">Submenu 1.1</a></li> <li><a href="#">Submenu 1.2</a>
<ul id="nav">
<li><a href="#">Hoofdmenu 1</a>
<ul class="sub">
<li><a href="#">Submenu 1.1</a></li>
<li><a href="#">Submenu 1.2</a></li>
<li><a href="#">Submenu 1.3</a></li>
<li><a href="#">Submenu 1.4</a></li>
</ul>
</li>
<li><a href="#">Hoofdmenu 2</a>
<ul class="sub">
<li><a href="#">Submenu 2.1</a></li>
<li><a href="#">Submenu 2.2</a></li>
<li><a href="#">Submenu 2.3</a></li>
<li><a href="#">Submenu 2.4</a></li>
</ul>
</li>
</ul>
当type==id来自父菜单时,它应该是子菜单。
在我的例子中,这是有效的,现在我必须使它动态。
大脑不工作
谢谢你的帮助
用于从数据库获取数据的代码:
<ul id="nav">
<?php
include_once("ond/inc/php/connect.php");
$query = "SELECT * FROM paginas WHERE type = '0'";
$result = mysql_query($query);
while($row = mysql_fetch_object($result)){
echo '<li><a href="?ond='.$row->titel.'">'.$row->titel.'</a>';}
echo '<ul class="sub">';
$query2 = "SELECT * FROM paginas WHERE type = '".$row->id."'";
$result2 = mysql_query($query2);
while($row2 = mysql_fetch_object($result2))
{
echo '<li><a href="?ond='.$row2->titel.'">'.$row2->titel.'</a></li>';
}
echo '</ul>';
echo '</li>';
?>
</ul>
我会这样做:
$menuArray = array();
if (empty($type)) // If the entry has no "type", then it's a parent
{
$menuArray[$type]['title'] = $title;
}
else // else, it's a child, so append it to the parent
{
$menuArray[$type]['subitems'][] = $title;
}
首先,将数据作为数组取出,并在每个条目中循环。然后运行如下操作:
$menuArray = array();
if (empty($type)) // If the entry has no "type", then it's a parent
{
$menuArray[$type]['title'] = $title;
}
else // else, it's a child, so append it to the parent
{
$menuArray[$type]['subitems'][] = $title;
}
然后,使用$menuArray
,循环遍历它以创建菜单:
?><ul id="nav"><?php
foreach ($menuArray as $item)
{
?><li><a href="#">$item['title']</a><?php
?><ul class="sub"><?php
foreach ($item['subitems'] as $subItem)
{
<li><a href="#">$subItem</a></li>
}
?></ul><?php
?></li><?php
}
?></ul><?php
?> <?php
/**
* Module for displaying data from items table
*/
class App_Modules_Tree extends App_AbstractModule {
/**
* array for storing data
*
* @var array
*/
private $tree = array();
/**
* html - output of current module
*
* @var string
*/
private $output = '';
/**
* Retreives data from table items.
*
* @return void
*/
private function _getData()
{
$pdo = App_Registry::get('pdo');
$levels = array();
foreach ($pdo->query('SELECT * FROM items ORDER BY parent_id ASC',PDO::FETCH_OBJ) as $k=>$v){
// references
$current = &$levels[ $v->id ] ;
$current['parent_id'] = $v->parent_id;
$current['name'] = $v->name;
if (0 == $v->parent_id){
$this->tree[ $v->id ] = &$current;
} else {
$levels[$v->parent_id ]['children'][$v->id] = &$current;
}
}
}
/*
*App_AbstractModule::preRender overriding
* @return void
*/
protected function preRender()
{
$this->_getData();
}
/**
* recursively build html output.
*
* @return string
*/
private function _render($arr)
{
$this->output.= '<ul>';
foreach ($arr as $k=>$v)
{
$this->output.= '<li>'.$v['name'].'</li>';
if( !empty($v['children'])){
$this->_render($v['children']);
}
}
$this->output.= '</ul>';
return $this->output;
}
/*
*App_AbstractModule::render overriding
* @return string
*/
protected function render()
{
return $this->_render($this->tree);
}
}
下一行是解决方案:
<ul id="nav">
<?php
include_once("ond/inc/php/connect.php");
$query = "SELECT * FROM paginas WHERE type = '0'";
$result = mysql_query($query);
while($row = mysql_fetch_object($result)){
echo '<li><a href="?ond='.$row->titel.'">'.$row->titel.'</a>';
$query2 = "SELECT * FROM paginas WHERE type = '".$row->id."'";
$result2 = mysql_query($query2);
echo '<ul class="sub">';
while($row2 = mysql_fetch_object($result2))
{
echo '<li><a href="?ond='.$row2->titel.'">'.$row2->titel.'</a></li>';
}
echo '</ul>';
echo '</li>';}
?>
</ul>
函数加载()
{
全球$conn;
$query=“从子类别中选择*,其中主类别id='1';
$result=mysqli\u查询($conn,$query);
while($row=mysqli\u fetch\u assoc($result)){
$cat_id=$row['sub_category_id'];
回音“”;
$query2=“从类别中选择*,其中子类别id='$cat\U id';
$result2=mysqli\u查询($conn,$query2);
echo';
而($row2=mysqli\u fetch\u assoc($result2))
{
回音“”;
}
回声“
”;
回音“ ”;}
}
大脑不工作?你又在消费自己的产品了吗!:)无论如何,欢迎来到SO。这需要更多信息:您使用的是什么数据库库?连接到数据库并获取记录需要什么代码?发布这些代码,人们可以给你指点怎么做。如果你还没有什么,你应该先看一本不错的PHP数据库编程教程,如果遇到困难,可以问一些具体的问题;p无论如何,我使用的是mysql数据库。我的php很不错,但我的大脑今天无法工作(酒精、大麻)@Ganjafarmer嗯,正如所说的,如果你还没有什么,你应该开始学习基本的数据库教程,例如。如果没有一个具体的问题,我在这里看不到比“为我写代码”更多的东西,这不是SO的使命和目的。佩卡你是对的,我会在一秒钟后发布我的php。酒精和大麻可能也不会帮你的忙。;-)
function load()
{
global $conn;
$query = "SELECT * FROM sub_category WHERE main_category_id='1'";
$result = mysqli_query($conn,$query);
while($row = mysqli_fetch_assoc($result)){
$cat_id=$row['sub_category_id'];
echo '<li><a href="?id='.$row['sub_category_id'].'">'.$row['sub_category_name'].'</a>';
$query2 = "SELECT * FROM categories WHERE sub_category_id='$cat_id'";
$result2 = mysqli_query($conn,$query2);
echo '<ul class="sub">';
while($row2 = mysqli_fetch_assoc($result2))
{
echo '<li><a href="?id='.$row2['category_id'].'">'.$row2['category_name'].'</a></li>';
}
echo '</ul>';
echo '</li>';}
}
在这个示例中,使用了parent\u id列和包含引用的ul li列表构建-它只进行1次sql查询并使用资源化来呈现输出,可以根据您的需要简单地更改此代码