【问题标题】:Making a HTML category list (PHP)制作 HTML 类别列表 (PHP)
【发布时间】:2014-01-30 22:03:50
【问题描述】:

我有一个名为 Category 的表,遵循以下模式:

标识 |姓名 | parent_id

所以,如果类别 x 是 y 的子类别,那么 x 的 parent_id 就是 y 的 id。

我还有一个函数,它返回一个包含每行所有列的数组。

它的返回格式是这样的:

returned_array[category_id1] = array([category_name], [category_parent_id] 返回数组[category_id2] = 数组([category_name], [category_parent_id]

等...负责将所有类别提取到一个数组中。

现在我想编写一个返回函数

<li>Category 1
    <li>Child 1</li>
    <li>Child 2
     <li>Child x</li>
    </li>
</li>
<li>Category 2
    <li>Child 1</li>
    // etc
</li>

我对此很头疼,但我就是想不出办法……

【问题讨论】:

  • 为什么不抓住父母,循环他们,在循环时,使用父母的id查询孩子
  • 与问题不直接相关,但您的标记不正确,您不能直接将&lt;li&gt; 嵌套在另一个&lt;li&gt; 中。您必须在父 &lt;li&gt; 中添加另一个列表(&lt;ul&gt;&lt;ol&gt;),然后将您的子 &lt;li&gt; 元素放入其中。

标签: php mysql html categories


【解决方案1】:

试试这个。如果有错误,我没有测试它,但想法就在这里

<?php

$aCats = array(
    1 = array(
        'name'=>'Category 1',
        'childs'=> array(
            2 = array(
                'name'=>'Category 1 - A',
                'childs'=> array();
            );  
        );
    );
);

function printParentChild($aCats)
{
    $sHtml = '';

    foreach($aCats as $aCat)
    {
        if(array_key_exists('childs', $aCat) && is_array($aCat['childs']) )
            $sHtml .= printParentChild($aCat['childs']);

        $sHtml .= '<li>'.$aCat.'</li>';
    }
    return '<ul>'.$sHtml.'</ul>';
}

echo $aCats;

【讨论】:

    【解决方案2】:

    在这种情况下,您需要 2 个数组来轻松处理它并且不复杂,第一个数组应该包含所有类别,例如)

    $catArr[categoryId] =  'categoryName';
    

    您的第二个数组应该只有父 ID 作为键,子数组作为值,例如)

    $subCatArr[parentId] = Array([0]=>firstChildId, [1]=> secondChildId ..etc)
    $subCatArr[parentId] = Array([0]=>firstChildId, [1]=> secondChildId ..etc)
    

    现在您可以循环遍历您的 $subCatArr 数组并再循环一次以生成子项并从 $catArr 数组中获取类别名称。

    这个方法你也可以用,也很方便,

    首先运行查询以获取类别名称和不同的父 ID 并循环遍历它,然后在循环内运行另一个查询以获取所有以父 ID 作为当前循环 ID 的记录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多