如何使用PHP和CSS在选择下拉选项菜单中缩进文本? [REDUX]

问题描述 投票:1回答:2

我之前问了一个类似的问题,但我会以不同的方式再问一遍,因为我重新编写了一些代码。

我想知道如何使用PHP和CSS在选择下拉菜单中缩进类别和无限子类别?

这是我的PHP代码,用于显示选择下拉列表。

echo '<select name="parent_id">
      <option value="0">None</option>';

function make_list ($parent) {

    global $option;

    foreach ($parent as $id => $cat) {

        echo '<option value="' . $cat['id'] . '">' . $cat['category'] . '</option>';

        if (isset($option[$id])) { 

            make_list($option[$id]);

        }                       
    }       
}

$mysqli = mysqli_connect("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT * FROM categories ORDER BY parent_id, category ASC");

if (!$dbc) {
    print mysqli_error();
} 

$option = array();

while (list($id, $parent_id, $category) = mysqli_fetch_array($dbc, MYSQLI_NUM)) {

    $option[$parent_id][$id] =  array('category' => $category, 'id' => $id, 'parent_id' => $parent_id);

}

make_list($option[0]);

echo '</select>';

这是输出。

   1. Apple
   2. Arts & Entertainment
         1. Amusement
         2. Art
         3. Artists
               1. A
                     1. a1
                     2. a2
               2. B
               3. C
               4. D
   3. Automotive
   4. Network
   5. Server
   6. Web Design
         1. CSS
         2. HTML

这些数字可以更方便地查看类别和子类别。

php mysql css xhtml
2个回答
2
投票

我看到你已经有了递归的东西 - 尝试在你的make_list函数中传递一个“深度”参数 - 当你第一次调用它时,你将$depth设置为零。然后,当你递归地调用它时,你会说makelist($option[$id], $depth+1);

知道你所处的递归级别,你可以轻松地构造一个空格字符串。喜欢:

$whitespace = str_repeat('&nbsp;', $depth);

要获得更多缩进,请尝试str_repeat('&nbsp;', $depth * 2);或类似

然后只是用空格前置你的选项。


0
投票

你可以尝试这个,工作的例子。与 - 分开 -

  echo '<select name="parent_id">
          <option value="">Seçiniz</option>';
    function make_list ($parent,$depth) {
        global $option;
        foreach ($parent as $id => $cat) {

            $whitespace = str_repeat('-', $depth * 1);
            echo '<option value="' . $cat['id'] . '">'. $whitespace . $cat['category'] . '</option>';

            if (isset($option[$id])) {

                make_list($option[$id], $depth+1);

            }
        }
    }

    $dbc = mysqli_query($vt,"SELECT * FROM menus");
    $option = array();
    while (list($id, $parent_id, $category) = mysqli_fetch_array($dbc, MYSQLI_NUM)) {

        $option[$parent_id][$id] =  array('category' => $category, 'id' => $id, 'parent_id' => $parent_id);

    }
    make_list($option[0], $depth = 0);
    echo '</select>';
© www.soinside.com 2019 - 2024. All rights reserved.