Помогите кто знает!!!Есть таблица в базе: categories в ней поля: id, categories, parent_category. Мне нужно вывести на экран меню массивом из базы данных т.е. что бы выводились родительские категории а в них подпунктами дочерние категории и что бы они были ссылками. Не могу соорудить правильно массив. Вот код PHP: <?php include "connectdb.php"; class menu{ private $mysqli; function left_menu(){ $this->mysqli = connectdb::getInstance(); $mysqli = connectdb::getInstance(); $mysqli->query("set names 'utf8'") or die(mysqli_error($mysqli)); $result = $mysqli->query('select category from categories where parent_category = 0'); $result_child = $mysqli->query('select category from categories where parent_category != 0'); $results = array(); $i = 0; $j = 0; while ($row = $result->fetch_array(MYSQLI_NUM)){ $results[$i] = $row; while($rows = $result_child->fetch_array(MYSQL_NUM)){ $results[$i][$j] = $rows; $j++; } $i++; } echo "<pre>"; print_r($results); } } $menu = new menu(); $menu->left_menu(); целый день долбаюсь ничего не выходит.
категории только двухуровневые? сделай всё одним запросом: PHP: select zero.id as zero_id, zero.categories as zero_categories , zero.parent_category as zero_parent_category, first.id as first_id, first.categories as first_categories, first.parent_category as first_parent_category from categories zero left join categories first on zero.id=first.parent_category where zero.parent_category = 0 order by zero_id asc, first_id asc - что-то вроде этого в итоге при выборке из базы будет массив вида zero_id,zero_categories,zero_parent_category,first_id,first_categories, first_parent_category хотя, zero_parent_category можно даже не вытаскивать
Спасибо я уже нашел решение PHP: <?php include "connectdb.php"; class menu { private $mysqli; function left_menu($parent_category, $lvl) { $this->mysqli = connectdb::getInstance(); $this->mysqli->query("set names 'utf8'") or die(mysqli_error($this->mysqli)); $query = "select * from categories where parent_category = " . $parent_category . " order by category"; $result = $this->mysqli->query($query); if (mysqli_num_rows($result) > 0) { echo "<ul\n>"; while ($row = mysqli_fetch_array($result)) { $id1 = $row["id"]; echo "<li\n>"; echo("<a href=\"" . "?id=" . $id1 . "\">" . $row["category"] . "</a>" . " \n"); echo "</li\n>"; $this->left_menu($id1, $lvl); $lvl--; } echo "</ul\n>"; } } } $menu = new menu(); $menu->left_menu(0, 0);