Я с KM - вы отображаете одну страницу, и с вашими циклами у вас происходит МНОГИЕ запросы, что происходит одновременно - что, если на эту страницу одновременно заходит 1000 человек? Уч ...
Возможно, рассмотрите более крупный запрос (с некоторыми повторяющимися данными) и выполните его один раз?
Например:
SELECT
section_name,
category_name,
result_level,
url,
winner
FROM 2009_RKR_bestof
INNER JOIN categories ON 2009_RKR_bestof.category = categories.id
INNER JOIN sections ON 2009_RKR_bestof.section = sections.id
ORDER BY section_name,category_name ASC
В вашем цикле вы можете выполнять проверки, чтобы определить, находитесь ли вы в новом разделе (категория / что угодно):
//pseudo-code
$current_section = "";
while($stuff = mysql_fetch_array($sql))
{
if ($current_section == "")
{
$current_section = $stuff["section_name"];
}
if ($current_section == $stuff["section_name"])
{
//keep going in your loop
}
else
{
//we've gotten to a new section - so close your html and start a new section
}
}
Вы поняли идею ..