[英]PHP Categories with Sub Categories with sub sub
我試圖使類別樹系統顯示無盡的類別。 數據庫的設置如下:
ID PARENT_ID CATEGORY_NAME
PHP代碼:
$cat_array = array();
$subcat_array = array();
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = mysqli_query($con, "SELECT * FROM `documents_category` WHERE ISNULL(parent_id) ");
while($row = mysqli_fetch_array($sql))
{ $cat_array[] = $row;
//echo $row['category_name'];
}
// print_r($cat_array);
$sql2 = mysqli_query($con, "SELECT * FROM `documents_category`
WHERE parent_id IS NOT NULL ");
while($row2 = mysqli_fetch_array($sql2))
{ $subcat_array[] = $row2;
}
foreach ($cat_array as $value)
{
echo "{$value['category_name']}<br/>";
foreach ($subcat_array as $value2)
{
if($value2['parent_id'] == $value['id'])
{
echo "{$value2['category_name']}<br/>";
}
}
}
子類別僅使用父母ID。 我可以將這個工作提高到一個父級和一個子級,但是之后什么都沒有出現。 我嘗試了幾種不同的方法,但是沒有運氣。 有什么建議嗎?
您需要使用遞歸。 通常我使用PDO,但是我嘗試給出一個可行的示例:
<?php
$cat_array = array();
$subcat_array = array();
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
function GetCategories($parent_id, $counter = 0)
{
$sql = mysqli_query($con, "SELECT * FROM `documents_category` WHERE parent_id = " . (int)$parent_id);
while($row = mysqli_fetch_array($sql))
{
echo str_repeat(" ", $counter) . $row["id"] . " - " . $row["parent_id"] . " - " . $row["category_name"];
$sub_category = mysqli_query($con, "SELECT * FROM `documents_category` WHERE parent_id = " . (int)$row["id"]);
$counter++;
if(count($sub_category) > 0)
GetCategories($row["id"], $counter);
}
}
$parent_categories = GetCategories(0);
?>
如您所見,我通過調用函數來選擇“ root”。 它將回顯類別。 然后,它檢查它在當前ID上是否具有子類別,如果找到,則再次調用該函數,但現在使用當前行的parent_id。 如果找不到,它將走得更遠...您可以使用計數器添加空格或其他東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.