Php 递归函数类别数据库
我希望创建一个递归函数,但我还没有想法 这是我从数据库中获取类别的代码Php 递归函数类别数据库,php,mysql,hierarchical-data,Php,Mysql,Hierarchical Data,我希望创建一个递归函数,但我还没有想法 这是我从数据库中获取类别的代码 <?php $sql = mysql_query("SELECT * FROM categories WHERE category_parent = '1' ORDER BY lft ASC"); while($row = mysql_fetch_array($sql)) { echo "<li><a href='/{$row['category_safe_name']}/'>{
<?php
$sql = mysql_query("SELECT * FROM categories WHERE category_parent = '1' ORDER BY lft ASC");
while($row = mysql_fetch_array($sql)) {
echo "<li><a href='/{$row['category_safe_name']}/'>{$row['category_name']}</a>";
$sql2 = mysql_query("SELECT * FROM categories WHERE category_parent = '{$row['category_id']}'");
if(mysql_num_rows($sql2) > 0)
echo "<ul>";
while($row2 = mysql_fetch_array($sql2)) {
echo "<li><a href='/{$row2['category_safe_name']}/'>{$row2['category_name']}</a><li>";
}
if(mysql_num_rows($sql2) > 0)
echo "</ul>";
echo "</li>";
}
?>
我的代码适用于类别和子类别。我计划做的是使我的代码支持无限的子类别
欢迎任何帮助和建议
谢谢你你应该看看
它很好地概述了在MySQL中使用分层数据的一些方法。类似的内容
function getCategories($mid, $categoryParent = 1)
{
$return = '';
$results = mysql_query("SELECT * FROM categories WHERE category_parent = '$categoryParent' ORDER BY lft ASC", $mid);
while($row = mysql_fetch_array($results)) {
$return .= "<li><a href='/{$row['category_safe_name']}/'>{$row['category_name']}</a></li>";
$subs = getCategories($mid, $row['category_id']);
if (!empty($subs)) {
$return .= '<ul>';
$return .= $subs;
$return .= '<ul>';
}
}
return $return;
}
$mid = mysql_connect($host, $user, $pass);
echo getCategories($mid);
函数getCategories($mid,$categoryParent=1)
{
$return='';
$results=mysql_query(“从类别中选择*,其中类别_parent='$categoryParent'按lft ASC排序,$mid”);
while($row=mysql\u fetch\u数组($results)){
$return.=“”;
$subs=getCategories($mid,$row['category_id']);
如果(!空($subs)){
$return.='- ';
$return.=$subs;
$return.='
- ';
}
}
return$return;
}
$mid=mysql\u connect($host、$user、$pass);
回音分类($中);
会打印出所有类别,当然会按照您想要的方式进行修复,但这会让您了解递归函数的工作方式我会这样做:
<?php
function getChildren($id=1) {
$sql = mysql_query("SELECT * FROM categories WHERE category_parent = '$id' ORDER BY lft ASC");
echo "<ul>";
while($row = mysql_fetch_array($sql)) {
echo "<li><a href='/{$row['category_safe_name']}/'>{$row['category_name']}</a>";
getChildren($row['category_id']);
echo "</li>";
}
echo "</ul>";
}
getChildren();
?>
您需要做的是构建一个递归函数。也就是说,一个在内部调用自身的函数。例如:
function getCategories($parent=0) {
$res = mysql_query("SELECT * FROM categories WHERE category_parent = '$id' ORDER BY left ASC");
if (mysql_num_rows($res) > 0) {
$category = mysql_fetch_object();
echo '<ul>';
echo '<li><a href="' . $category->category_safe_name . '">' . $category->category_name . '</a>';
getCategories($category->category_id);
echo '</li>';
}
}
函数getCategories($parent=0){
$res=mysql_query(“从类别中选择*,其中类别_父项='$id'按左ASC排序”);
如果(mysql_num_rows($res)>0){
$category=mysql_fetch_object();
回声“- ”;
回音“
- ”; 获取类别($category->category\u id); 回音“ ”; } }
如果我在表名和列名方面有任何输入错误,那么很明显,我会将它们替换为正确的值。我使用的是名为pligg的开源应用程序,这是否意味着您无法控制模型?或你在说什么?
function getCategories($parent=0) {
$res = mysql_query("SELECT * FROM categories WHERE category_parent = '$id' ORDER BY left ASC");
if (mysql_num_rows($res) > 0) {
$category = mysql_fetch_object();
echo '<ul>';
echo '<li><a href="' . $category->category_safe_name . '">' . $category->category_name . '</a>';
getCategories($category->category_id);
echo '</li>';
}
}