Hardander
27.11.2012 - 14:44
Есть две таблицы в базе - 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
27.11.2012 - 15:23
В том что в "учителя" себе выбрали Е. Попова.
тут выборка одним запросом напрашивается
_____________
Стимулятор ~yoomoney - 41001303250491
Valick
27.11.2012 - 15:29
SELECT id, title_subsection, title_section FROM subsection JOIN section ON id_section=id
и не нужны никакие цыкл в цыкле, тем более do{} while() который в принципе используется в достаточно редких ситуациях
_____________
Стимулятор ~yoomoney - 41001303250491
$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
27.11.2012 - 16:00
Цитата (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
27.11.2012 - 16:14
Hardander, потому что Попова голыми руками не возьмешь

строку с mysql_fetch_array который сам по себе до цикла уберите
_____________
Стимулятор ~yoomoney - 41001303250491
Hardander
27.11.2012 - 17:07
Цитата (Valick @ 27.11.2012 - 12:14) |
Hardander, потому что Попова голыми руками не возьмешь  строку с 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 ключа... где именно какая лишняя строчка?
А PDO не пробовали? Там как то всё посимпатичней =)
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Hardander
27.11.2012 - 17:25
Цитата (Arh @ 27.11.2012 - 13:11) |
А PDO не пробовали? Там как то всё посимпатичней =) |
Если речь про PHP Data Objects - то только сейчас от вас про это услышал... вечер мануалов сегодня обеспечен
недавно писал о пдо
http://phpforum.ru/index.php?showtopic=66952
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Valick
27.11.2012 - 17:33
Цитата |
и ведь тоже выводится не с 0 ключа |
Он и не должен выводиться с нуля, он должен выбрать все id и name, без разницы с чего и как они начинаются и чем заканчиваются.
Значит посмотрите в базу (через
phpmyadmin), скорее всего там нет идентификатора 0
_____________
Стимулятор ~yoomoney - 41001303250491
Hardander
27.11.2012 - 17:38
Цитата (Valick @ 27.11.2012 - 13:33) |
Цитата | и ведь тоже выводится не с 0 ключа |
Он и не должен выводиться с нуля, он должен выбрать все id и name, без разницы с чего и как они начинаются и чем заканчиваются. Значит посмотрите в базу (через phpmyadmin), скорее всего там нет идентификатора 0
|
вообщем, в базе у меня 5 строк... а выводится 4... куда девается первая строка - для меня загадка
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.