Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема со Smarty. Проблема со сложными циклами. 
:(
    Опции темы
BuShaRt
Дата 7.5.2007, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Возникла проблема, пре использование Smarty. 
Суть: данные на выводе дублируються.
Вот примеры PHP и тимплета.
Код

$result1 = $db->query("SELECT id, title FROM title_two WHERE id_one=".$id);    
        while ($val1 = mysql_fetch_array($result1)) {
            $smarty->append (array ('id1'=>$val1['id'],
                                    'title1'=>$val1['title']));
            $result2 = $db->query("SELECT id, title FROM title_theer WHERE id_two=".$val1['id']);
            while ($val2 = mysql_fetch_array($result2)) {
                $smarty->append (array ('id2'=>$val2['id'],
                                        'title2'=>$val2['title']));
                $result3 = $db->query("SELECT id, text, price FROM pricelist WHERE id_theer=".$val2['id']);
                while ($val3 = mysql_fetch_array($result3)) {
                    $smarty->append (array ('id3'=>$val3['id'],
                                            'text'=>$val3['text'],
                                            'price'=>$val3['price']));            
                }
            }    
        }
        $smarty->display("title_two.tpl"); exit;


Код

{section name=art1 loop=$id1}
                            <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#848282">    
                                <tr bgcolor="#ffffff">
                                    <td colspan="2" class="sp1"><a onclick= "javascript:if(l{$id1[art1]}.style.display=='none')l{$id1[art1]}.style.display='';else l{$id1[art1]}.style.display='none';"href="javascript:{literal}{}{/literal}">{$title1[art1]}</a></td>
                                </tr>
                            </table>    
                            <div id="l{$id1[art1]}" style="DISPLAY: none">
                                <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#848282">
                                    {section name=art2 loop=$id2}
                                        <tr bgcolor="#ffffff">
                                            <td colspan="2" class="sp2">{$title2[art2]}</td>
                                        </tr>
                                        {section name=art3 loop=$id3}
                                            <tr bgcolor="#ffffff">
                                                <td class="sp3">{$text[art3]}</td>
                                                <td width="60" class="sp3">{$price[art3]} у.е.</td>
                                            </tr>
                                        {/section}    
                                    {/section}
                                </table>
                            </div><br>
                            <br>    
                        {/section}        


на сколько я понимаю, проблема в том, что данные выводяться не упорядоченно, как это могло бы быть без использования шаблонизатора, а идут всем скопом и от того проблема.

оптимальное решение по моему было бы каким либо образом обозначить, что мол вот эти данные надо сохранить для вывода и начинать новое заполнение массивов. Это реально организовать?
PM MAIL   Вверх
xolod
Дата 8.5.2007, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 24.5.2005
Где: Когда: Что:

Репутация: 4
Всего: 13



1. Ну прочтите вы уже документацию, это есть изощренная форма издевательства над смарти (что указываете в loop и откуда потом получаете?):
Код

{section name=art2 loop=$id2}
<tr bgcolor="#ffffff">
  <td colspan="2" class="sp2">{$title2[art2]}</td>
</tr>
{section name=art3 loop=$id3}
<tr bgcolor="#ffffff">
  <td class="sp3">{$text[art3]}</td>
  <td width="60" class="sp3">{$price[art3]} у.е.</td>
</tr>
{/section}
{/section}

2. Вам хватит и {foreach};
3. append гораздо медленней assign, серьезно;
4. Код плачет по рефакторингу, огромными такими слезами.
PM MAIL   Вверх
BuShaRt
Дата 8.5.2007, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



xolod, 
По первым трем пунктам попросил бы примеры, судя по всему вы очень хорошо понимаете тему и могли бы привести дельные примеры.

Четвертый пункт я считаю слишком надуман т.к. вы не знакомы с задачей. А именно парсинг прайс-листа на xml, с паралельным разбиением на каталоги по 3-ем уровням. тут код как не крути будет замудренный.
PM MAIL   Вверх
-=Ustas=-
Дата 8.5.2007, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



Цитата(BuShaRt @  8.5.2007,  23:38 Найти цитируемый пост)
Четвертый пункт я считаю слишком надуман т.к. вы не знакомы с задачей.

Надо было в первом посте эту задачу описывать, телепатов здесь нет.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
BuShaRt
Дата 9.5.2007, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



-=Ustas=-, 
xolod высказал свое пренебрежение к моему коду и программной реализации, которые зависят от задачи модуля...
Вопрос поставленный в теме, от задачи модуля не зависит.
PM MAIL   Вверх
xolod
Дата 10.5.2007, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 24.5.2005
Где: Когда: Что:

Репутация: 4
Всего: 13



Не пренебрежение, а свою точку зрения. К вам, вашему коду и стилю написания она имеет косвенное отношение и лишь отчасти.

Напишите структуру собранного массива данных. Как если бы вы не выводили что-то куда-то, а просто формировали хеш для работы.
"Стотыщ" элементов не надо, просто чтобы представить себе общую картину.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0478 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.