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 :: выбор: многократные запросы к бд или один большой запрос?
Покинул форум
Сообщений всего: 52
Дата рег-ции: Янв. 2012 Откуда: Омск, Россия
Помог: 0 раз(а)
Вообщем суть в следующем. Мне нужно на странице вывести все данные из таблицы mysql.
Представим ее такой (categories):
поля: id, idParent, name, content
значения:
}//на выходе мы получаем массив, в котором содержатся все строки
//теперь мы формируем список, но уже не просимся к базе каждый раз
for($count=count($mass),$i=0;$i<$count;$i++)//повтор до тех пор, пока не переберем все категории
{
echo'<h1>'.$mass[0][$i]['name'].'</h1>';
for($count2=count($mass[$i]),$j=0;$j<$count2;$j++)//повтор до тех пор, пока не переберем все подкатегории
{
echo'<h2>'.$mass[$i][$j]['name'].'</h2>';
for($count3=count($mass[$j]),$k=0;$k<$count3;$k++)//повтор до тех пор, пока не переберем все подкатегории
{
echo'<h3>'.$mass[$j][$k]['name'].'</h3>';
//и так еще 1-2 раза
}
}
}
?>
В обоих случаях получится результат: (должен получиться, т.к. я не проверял данный код)
<h1>Категория1</h1>
<h2>категория3</h2>
<h1>Категория2</h1>
<h2>категория4</h2>
Думаю, что смысл работы скрипта я смог объяснить. Теперь к главному, вопрос: Какой из вариантов будет быстрее работать и меньше нагружать сервер?
Заранее благодарен за ответ
DeepVarvar
Отправлено: 05 Марта, 2012 - 19:17:50
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Все что вы написали - бред.
Вас спасут:
а) Процедуры на стороне сервера БД.
б) Рекурсия на стороне php.
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
kir55rus пишет:
//теперь мы формируем список, но уже не просимся к базе каждый раз
for($count=count($mass),$i=0; $i<$count; $i++) //повтор до тех пор, пока не переберем все категории
{
echo '<h1>'. $mass[0][$i]['name'] .'</h1>';
for($count2=count($mass[$i]),$j=0; $j<$count2; $j++) //повтор до тех пор, пока не переберем все подкатегории
{
echo '<h2>'. $mass[$i][$j]['name'] .'</h2>';
for($count3=count($mass[$j]),$k=0; $k<$count3; $k++) //повтор до тех пор, пока не переберем все подкатегории
{
echo '<h3>'. $mass[$j][$k]['name'] .'</h3>';
//и так еще 1-2 раза
}
}
Это что? построение дерева катагорий?
----- Чем больше узнаю, тем больше я не знаю.
DeepVarvar
Отправлено: 05 Марта, 2012 - 19:19:58
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Теперь вопрос в следующем. Как сделать так, чтобы в родительской категории показывались все посты с дочерних категорий?
т.е. есть сборник статей, в нем есть родительские категории и подкатегории. в родительских категориях статей просто нет. дак вот, нужно чтобы при просмотре родительской категории на страницу выводился список всех текстов в дочерних категориях, а сверху уже были ссылки на сами подкатегории дочерние. как такое сделать?
можно конечно просто забить в родительскую категорию копии всех текстов из дочерних, но это имхо не выход
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.