簡體   English   中英

PHP具有子類別的子類別

[英]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("&nbsp;", $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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM