Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Запросы к БД и рекурсия
Покинул форум
Сообщений всего: 645
Дата рег-ции: Янв. 2012 Откуда: Армавир, Краснодарский край
Помог: 15 раз(а)
Доброго времени. Пишу рекурсивную функцию вывода древовидного меню, много читал по этой теме на разных форумах. Хотя задача достаточно тривиальна, возникли трудности с алгоритмом. Многие пишут, что менее ресурсоёмкой была бы реализация такой функции, в которой идет перебор массива (в который выбрана таблица БД), нежели внутри функции обращаться к БД. Либо я неправильно понял, либо предлагают всю таблицу разом выбрать в массив, а потом уже разбирать его внутри функции.
Хорошо, как тогда выбрать всю таблицу в массив? Лично мне на ум приходит только цикл. Т.е., в каждой итерации цикла в массив добавляется следующая строка таблицы, пока не закончатся строки. Т.е., при каждой итерации будет запрос к БД. Чем функция хуже? Ведь по сути, то же самое. 50 страниц - 50 запросов к БД и в том и в другом случае.
Проясните пожалуйста новичку, может я чего не знаю?
Покинул форум
Сообщений всего: 645
Дата рег-ции: Янв. 2012 Откуда: Армавир, Краснодарский край
Помог: 15 раз(а)
DlTA пишет:
тут пример
http://php.su/functions/?mysql-fetch-assoc
Ну я же так и описывал:
Vinyl пишет:
Т.е., в каждой итерации цикла в массив добавляется следующая строка таблицы, пока не закончатся строки
Т.е. запросом считается непосредственно SELECT, так? И если while пройдет по 50 записям в таблице, то это сожрет меньше ресурсов, чем 50 SELECT`ов, так?
Покинул форум
Сообщений всего: 645
Дата рег-ции: Янв. 2012 Откуда: Армавир, Краснодарский край
Помог: 15 раз(а)
Огромное спасибо! ("спасибо" нажать не могу, у меня сообщений недостаточно). (Добавление)
Вот я не могу понять, $row = mysql_fetch_assoc($result) и $row = mysql_fetch_array($result, MYSQL_ASSOC) это одно и тоже? Если да, то в чем приоритет mysql_fetch_assoc? Более компактный код?
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.