Smarty и while

Name

Новичок
Smarty и while

А что если я из базы вытаскиваю, я их должен в массив загнать
чтоб в smarty пропарсить?

А если их многоооо ...
Или я что то непонимаю.

I hate smarty!
 

HEm

Сетевой бобер
если загадочных "их" много, то ты, наверное не все выводишь на одной странице-то?
 

Demiurg

Guest
Смарти не должен получать всю базу. Он должен получать только информацию относящуюся к конкретной странице. Конечно можно выводить не все, но не один процент же от всех данных.
 

sokol

Zavolga.Net
HEm
Вопрос вполне обоснованный и у меня он когда-то тоже возник. Спрашивается зачем по несколько раз крутить циклы
1 раз для получения массива значений из базы
2 раз для вывода в Smarty

Неэкономно получается.

Решается проблема написанием собственной insert функции, которой в параметре передается результат запроса
{insert name="section_db" loop=$result}

либо правкой Smarty для создания конструкции вида
{section_db loop=$result}...{/section_db}

Предпочтительней конечно второе. Только вот почему разработчики этого еще не сделали:-?
 

tony2001

TeaM PHPClub
>Предпочтительней конечно второе.
>Только вот почему разработчики этого еще не сделали:-?
потенциальные ошибки в *_fetch_* тоже Смарти должен обрабатывать?
и должен ли Смарти уметь доставить данные из dbf ? а из MSSQL ?
дальше продолжать? =)
 

Demiurg

Guest
sokol
что делает твой инсерт?

> Только вот почему разработчики этого еще не сделали:-?
потому, что если смарти будет знать о базах данных, то связаность резко повысится, и о разделинии логик можно забыть, так же как и о самом смарти.
 

sokol

Zavolga.Net
А причем тут БД если мы например юзаем унифицированный апи? Запихнули бы Smarty в PEAR и для работы конструкции
{section_db} обязали бы пользовать PEAR::DB...

Проблема тут одна и о ней сказал tony2001 "потенциальные ошибки в *_fetch_* "

Но мне кажется ради удобства можно было бы пренебречь обработкой ошибок в *_fetch_*, ИМХО хватит проверки на

!DB::isError($result) and $result->numRows()

для передачи $result на раскрутку Smarty.

-~{}~ 25.05.04 17:48:

Автор оригинала: Demiurg
sokol
что делает твой инсерт?
Скорее всего одним insert,ом не обойтись иначе логика будет зависеть от представления... Это только как вариант, причем неудачный.
 

Demiurg

Guest
>Запихнули бы Smarty в PEAR и для работы конструкции
>{section_db} обязали бы пользовать PEAR:DB...
я вот, например не люблю пользоваться "универсальными" абстракт леерами, но мне нравится смарти. Если меня обяжут, то я буду сильно растроен и скорее всего перестану пользоваться смарти. Может лучша наоборот, обязать всех, кто пользуется PEAR использовать смарти ? Или лучше объявить конфигурацию PHP + mysql + smarty единственной возможной и забыть про всё остальное ?
 

sokol

Zavolga.Net
Demiurg опять все преувиличиваешь...
на самом деле можно было только под самые распространенные DB Access API написать.

Ну а потеря времени на двойные циклы уже в расчет не берется?
 

HEm

Сетевой бобер
sokol, ты вызываешься сделать всю эту работу? сделать версию смарти, плотно сопряженную с PEAR?
Или, что гораздо более вероятно, поноешь тут пару недель и топик утухнет
 

tony2001

TeaM PHPClub
sokol
ты волен пропатчить и использовать.
другим такое не надо.
 

Demiurg

Guest
sokol
ты считал сколько теряется на двойных циклах ? Я нет. И не замечал я за смарти сильных тормозов. А если включить кэширование ? Еще раз повторяю, смарти должен получать данные а не ссылки на базы данных. Если мне захочется изменить всем базам данных и все хранить в файлах мне придется все шаблоны переписывать ?
 
Сверху