Как расположить текст с отступом в избранном выпадающем использовании меню опций PHP & CSS? [ВОЗВРАЩЕНИЕ]

Я задал подобный вопрос ранее, но я спрошу это снова по-другому, потому что я переделал код немного.

Я задавался вопросом, как я могу расположить с отступом категории и бесконечные sub категории, что у меня есть в избранном использовании выпадающего меню 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

Числа должны просто там видеть категории и sub легче категории.

1
задан mudFLAP 14 August 2010 в 08:03
поделиться

1 ответ

Я вижу, что у вас уже есть функция рекурсии - попробуйте передать параметр «глубины» в свою функцию make_list - когда вы ее впервые вызываете, вы 'установил $ depth в ноль. Затем, когда вы вызываете его рекурсивно, вы бы сказали makelist ($ option [$ id], $ depth + 1);

зная, на каком уровне рекурсии вы находитесь, вы можете легко построить строку пробелов . Например:

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

для большего отступа, попробуйте str_repeat ('', $ depth * 2); или аналогичный

, а затем просто добавьте свой вариант с пробелом.

2
ответ дан 2 September 2019 в 22:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: