SELECT id, `product`.title, `product`.typeID, `type`.title,
type`.typeID type_typeID, type`.title type_ttitle
FROM `product`
LEFT JOIN `type`
on `product`.typeID=`type`.typeID
where `product`.typeID=1
request или request_onceэто чаво вообще?
сессии или кукине надо путать теплое с мягким. Сессия это механизм использующий куки для привязки клиента к серверным данным, куки это локальное клиентсайд хранилище, доступное для чтения серверсайдом. Исходя из текущей необходимости и здравого смысла выбирают соответствующий механизм хранения данных.
Пока что я вижу такой вариант: в контроллере получаю данные модели, создаю объект класса View(там же в методе контроллера) и с его помощью подключаю необходимый шаблон
$this->view->renderView();
и в шаблон по умолчанию в определенном месте рендерится вьюха из нужной папки с нужным именем(например /engine/view/index/index.tpl для индекс контроллера + индекс экшна). Это как вариант. session_destroy() уничтожает все данные, связанные с текущей сессией. Данная функция не удаляет какие-либо глобальные переменные, связанные с сессией и не удаляет сессионные cookie. Чтобы вновь использовать переменные сессии, следует вызвать session_start().
Замечание: Нет необходимости вызывать session_destroy() в обычном коде. Очищайте массив $_SESSION вместо удаления данных сессии.
Чтобы полностью удалить сессию, также необходимо удалить и её идентификатор. Если для передачи идентификатора сессии используются cookie (поведение по умолчанию), то сессионные cookie также должны быть удалены. Для этого можно использовать setcookie().
При включённой опции session.use_strict_mode, вам не нужно удалять устаревшие cookie идентификатора сессии. В этом нет необходимости, потому что модуль сессии не примет cookie идентификатора сессии, если с этим идентификатором сессии нет связанных данных, и модуль сессии установит новый cookie идентификатора сессии. Рекомендуется включать опцию session.use_strict_mode для всех сайтов.