Доброе время суток.
Занимаюсь небольшим проектом на php, разделяя код и дизайн дошел до следующего:
<? foreach($categories as $cat): ?>
<li><p class="categories"><?=$cat['title']?></p>
<foreach(getSubCat($cat['cat_id']) as $subcat): ?>
<p class="subcats"><?=$subcat['title']?></p>
<? endforeach ?>
</li>
<? endforeach ?>
Смысл выше изложенного шаблона, первый массив категорий формируется в скрипте, и при выводе мы уже просто работаем с переменной, но вот второй... его содержимое для каждой категории свое, и мы получаем его функцией getSubCat с параметром в виде текущей категории (и для нее выбираем под категории), в функции происходит обычный sql запрос и возврат массива с результатами.
И вся беда в том, что один и тот же унылый запрос-функцию придется выполнять N количество раз (в зависимости от количества под категорий). Есть идея хранить айди категории (который передается функции) в сессии пользователя, но как хранить результат работы функции - в глобальном массиве?
Должны быть какие то другие решения которые я еще не осмыслил, smarty и остальные решения шаблонизаторы можно рассмотреть только как пример кода, задача обойтись нативным php без их внедрения в проект, перенос вывода в переменную скрипта тоже не решение - нарушается гармония кода и дизайна.