[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблемы при создании двухуровневого меню
Hardander
Есть две таблицы в базе - section и subsection. Первая таблица - названия пунктов меню со столбцами id, title_section. Вторая таблица - названия пунктов подменю со столбцами id, title_subsection, id_section (где id_section - соответствует значениям столбца id из первой таблицы).
Теперь из этих таблиц я делю 2 запроса. Первый образует массив с пунктами меню, второй - образует массив с пунктами подменю:

$query_section = "SELECT * FROM section";
$result_query_section = mysql_query($query_section);
$array_section = mysql_fetch_array($result_query_section);

$id_subsec = $array_section["id"];
$query_subsection = "SELECT * FROM subsection WHERE id_section='$id_subsec'";
$result_query_subsection = mysql_query($query_subsection);
$array_subsection = mysql_fetch_array($result_query_subsection);

Теперь делаю цикл в цикле

do
{
echo "<div>".$array_section["title_section"]."</div>";

if(!empty($array_subsection))
{
do
{
echo "<div style=\"font-size: 10px;\">".$array_subsection["title_subsection"]."</div>";
}
while($array_subsection = mysql_fetch_array($result_query_subsection));
}
}
while($array_section = mysql_fetch_array($result_query_section));

и результат получаю:

Животные
.....Собаки
.....Кошки
.....Птицы
Транспорт
Работа
Бытовая техника

А теперь, собственно вопрос: почему не выводятся остальные подпункты меню, в чем прокол???
Valick
Цитата
в чем прокол?

В том что в "учителя" себе выбрали Е. Попова.
тут выборка одним запросом напрашивается


_____________
Стимулятор ~yoomoney - 41001303250491
Valick
SELECT id, title_subsection, title_section FROM subsection JOIN section ON id_section=id

и не нужны никакие цыкл в цыкле, тем более do{} while() который в принципе используется в достаточно редких ситуациях

_____________
Стимулятор ~yoomoney - 41001303250491
Arh
$query = mysql_query("SELECT s.`id`,s.`title_section`,sub.`title_subsection` FROM `section` s LEFT JOIN `subsection` sub ON sub.`id_section` = s.`id");
while ($row = mysql_fetch_array($query)) {
if(empty($array[$row['id']])) {
$array[$row['id']] = "<div>".$row["title_section"]."</div>";
$array[$row['id']] .= "<div style=\"font-size: 10px;\">---".$row["title_subsection"]."</div>";
} else {
$array[$row['id']] .= "<div style=\"font-size: 10px;\">---".$row["title_subsection"]."</div>";
}


}


print_r($array);


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Hardander
Цитата (Valick @ 27.11.2012 - 11:29)
SELECT id, title_subsection, title_section FROM subsection JOIN section ON id_section=id

и не нужны никакие цыкл в цыкле, тем более do{} while() который в принципе используется в достаточно редких ситуациях

Ок... пробовал начать с цикла while(){}, но выводить массив начинает не с 0 ключа, а почему то с 1.
Valick
Hardander, потому что Попова голыми руками не возьмешь smile.gif
строку с mysql_fetch_array который сам по себе до цикла уберите

_____________
Стимулятор ~yoomoney - 41001303250491
Hardander
Цитата (Valick @ 27.11.2012 - 12:14)
Hardander, потому что Попова голыми руками не возьмешь smile.gif
строку с mysql_fetch_array который сам по себе до цикла уберите

Valick, а вот фрагмент кода из документации по php о использовании цикла while (вроде точно не Попов):

<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Ошибка соединения: " . mysql_error());
mysql_select_db("mydb");

$result = mysql_query("SELECT id, name FROM mytable");

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
printf("ID: %s Имя: %s", $row[0], $row[1]);
}

mysql_free_result($result);
?>

и ведь тоже выводится не с 0 ключа... где именно какая лишняя строчка?
Arh
А PDO не пробовали? Там как то всё посимпатичней =)

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Hardander
Цитата (Arh @ 27.11.2012 - 13:11)
А PDO не пробовали? Там как то всё посимпатичней =)

Если речь про PHP Data Objects - то только сейчас от вас про это услышал... вечер мануалов сегодня обеспечен
Arh
недавно писал о пдо
http://phpforum.ru/index.php?showtopic=66952

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Valick
Цитата
и ведь тоже выводится не с 0 ключа

Он и не должен выводиться с нуля, он должен выбрать все id и name, без разницы с чего и как они начинаются и чем заканчиваются.
Значит посмотрите в базу (через phpmyadmin), скорее всего там нет идентификатора 0


_____________
Стимулятор ~yoomoney - 41001303250491
Hardander
Цитата (Valick @ 27.11.2012 - 13:33)
Цитата
и ведь тоже выводится не с 0 ключа

Он и не должен выводиться с нуля, он должен выбрать все id и name, без разницы с чего и как они начинаются и чем заканчиваются.
Значит посмотрите в базу (через phpmyadmin), скорее всего там нет идентификатора 0

вообщем, в базе у меня 5 строк... а выводится 4... куда девается первая строка - для меня загадка
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.