我想在选择列表(下拉列表)中显示类别,子类别和子子类别,就像WordPress在其管理面板中显示的方式一样.首先看看我的数据库表(tb_categories) -

我想要HTML格式的以下输出 -

"无"和"未分类"这两个项目在代码中是硬编码的.我想知道如何使用选择列表选项按层次顺序显示类别及其子类别.
我正在尝试使用以下sql查询,其中我使用自联接.这里是 -
SELECT
    `cat`.`category_name` AS 'category name',
    `cat2`.`category_name` AS 'parent category'
FROM
    `tb_categories` AS `cat`
LEFT JOIN `tb_categories` AS `cat2` ON `cat`.`category_parent` = `cat2`.`category_id`
ORDER BY
    'parent category'
Run Code Online (Sandbox Code Playgroud)
它给出的输出是 -
Array
(
    [0] => Array
        (
            [0] => My Parent Category
            [category name] => My Parent Category
            [1] => 
            [parent category] => 
        )
    [1] => Array
        (
            [0] => Parent Category 2
            [category name] => Parent Category 2
            [1] => 
            [parent category] => 
        )
    [2] …Run Code Online (Sandbox Code Playgroud) 我在div框中显示最新新闻,其中每个新闻都由边框底分隔符分隔。请注意,在HTML中,我没有使用任何功能。而不是我只是使用div。问题是最后一个新闻div也显示边框底部分隔符。即使我已经尝试过:last-child选择器,我也不知道如何删除它,但是它不起作用。我知道使用ul li可以通过:last-child解决问题,但是我不想更改HTML。这是一个快照主机:

HTML代码:
<div class="float_left_div posts">
    <h3>Latest News</h3>
    <div class="news_wrapper">
        <div class="news_txt">
            <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy. <span>more+</span></p>
        </div>
        <div class="div_separator"></div>
    </div>
    <div class="news_wrapper">
        <div class="news_txt">
            <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy. <span>more+</span></p>
        </div>
        <div class="div_separator"></div>
    </div>
    <div class="news_wrapper">
        <div class="news_txt">
            <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy. <span>more+</span></p>
        </div>
        <div class="div_separator"></div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)
该演示位于:
因此,通过保留相同的HTML,我们如何删除分隔符的最后一个边框?
看到我的函数在AJAX请求中未定义,我真的很惊讶.我想知道AJAX文件中的函数顺序是否重要?以下代码将向您显示我的问题 -
这是ajax.php文件,由index.php中的jquery/ajax请求调用.它应该只是打印名称 -
<?php
if(isset($_POST))
    {
        $name = 'admin';
        echo display_name($name);
        function display_name($name)
        {
            return $name;
        }
    }
?>
Run Code Online (Sandbox Code Playgroud)
但是当这个文件被调用时,我得到 -
Fatal error: Call to undefined function display_name() 
Run Code Online (Sandbox Code Playgroud)
但是,当我改变代码的顺序,即像这样的功能 -
<?php
if(isset($_POST))
    {
        $name = 'admin';
        function display_name($name)
        {
            return $name;
        }
        echo display_name($name);
    }
?>
Run Code Online (Sandbox Code Playgroud)
然后显示 -
admin
Run Code Online (Sandbox Code Playgroud)
多奇怪啊!
因此,如果真正的功能可用性顺序很重要,那么以下代码如何工
它是简单的文件,不是由AJAX请求调用的.我只是加载文件,无论函数写在哪里都无关紧要.所有人都使用任何行代码订单 -
<?php
$name = 'admin';
echo display_name($name);
function display_name($name)
{
    return $name;
}
?>
Run Code Online (Sandbox Code Playgroud)
以下代码片段也在运作 -
<?php
$name = 'admin';
function display_name($name)
{
    return $name;
}
echo …Run Code Online (Sandbox Code Playgroud)