Ответ
G_Z 04.09.2011 20:24
/ 04.09.2011 20:26
Не совсем про навигацию, но: @show_tovar (б-р-р название) можно переписать так, чтобы он учитывал тип переданного параметра и ожидал объект или строку/число.
Тогда ^show_tovar(123) сходит в базу и достанет товар по ID, а ^show_tovar[$table.fields] для строки уже имеющейся таблицы просто выведет значения.
Это универсальный, но не красивый подход.
Лучше так:
@getGoods[…] — выбирает список товаров, возвращает таблицу;
@getOneOfGoods[ID] — выбирает товар по ID, возвращает хэш;
@printOneOfGoods[hash] — выводит поля товара.
Таким образом будут разделены данные и их представление, и метод вывода полей не будет ходить в базу, а заниматься строго своими обязанностями, понятия не имея о том, где и как хранятся товары.
Ровно как и методы выборки не будут ничего знать о том, как данные форматируются и куда выводятся.
Посмотрите на код, если вперемешку идут запросы к базе (написанные снова и снова для одних и тех же действий), постобработка и вывод — это сигнал о том, что стоит навести порядок.