Я задал подобный вопрос ранее, но я спрошу это снова по-другому, потому что я переделал код немного.
Я задавался вопросом, как я могу расположить с отступом категории и бесконечные 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 легче категории.
Я вижу, что у вас уже есть функция рекурсии - попробуйте передать параметр «глубины» в свою функцию make_list
- когда вы ее впервые вызываете, вы 'установил $ depth
в ноль. Затем, когда вы вызываете его рекурсивно, вы бы сказали makelist ($ option [$ id], $ depth + 1);
зная, на каком уровне рекурсии вы находитесь, вы можете легко построить строку пробелов . Например:
$whitespace = str_repeat(' ', $depth);
для большего отступа, попробуйте str_repeat ('', $ depth * 2);
или аналогичный
, а затем просто добавьте свой вариант с пробелом.