Смарти и реазлицация таблицы с двумя столбиками...

Сенсей

Новичок
Смарти и реазлицация таблицы с двумя столбиками...

на зрз делаю так:

PHP:
echo '<table border="0" cellspacing="10" cellpadding="0" align="center"><tr>';
    $res = sql_query("select * from ".$prefix."_announcements_cats order by announcements_cat_title DESC", $dbi);
    $count = 0;
    while(list($ann_cat_id, $ann_cat_title, $ann_cat_counter) = sql_fetch_row($res))
    {
	    echo '<td>» <a href="mod.php?name='.$mod_name.'&amp;act=show_cat&amp;cat_id='.$ann_cat_id.'"><b>'.$ann_cat_title.'</b></a> ['.$ann_cat_counter.']';
		if ($count < 1)
		{
		    echo "</td>";
		    $dum = 1;
		}
		$count++;
		if ($count == 2)
		{
		    echo '</td></tr><tr>';
		    $count = 0;
		    $dum = 0;
		}
    }
    if ($dum == 1)
    {
		echo '</tr></table>';
    }
    else if ($dum == 0)
    {
		echo '<td></td></tr></table>';
    }
Как реализовать такое в смарти?

Ну допустим делать

$smarty->append('cat_id', $ann_cat_id);
$smarty->append('cat_title', $ann_cat_title);
$smarty->append('cat_counter', $ann_cat_counter);

Я умею... но как дальше там упорядочить данные в два столбца...
Или может есть специальные приеым какие то в смарти?
 

zerkms

TDD infected
Команда форума
Код:
{foreach ... key=key}
    {if $key is div by 2}</tr><tr>{/if}
{/foreach}
 

matross

Новичок
Re: Смарти и реазлицация таблицы с двумя столбиками...

Ты, для начала, без Smarty научись это нормально реализовывать! ;)
 

Сенсей

Новичок
matross
Да это старый код...

Конечно легче что то вроде этого:

echo '<td></td>';
if ($i/2 != float ) echo '</tr><tr>';
$i++;

Но не в этом дело...

zerkms
tnx, попробую...

-~{}~ 01.06.06 15:19:

Нифига не получается...

Не могу я добраться до данных..

$smarty->append('cat_id', $ann_cat_id);
$smarty->append('cat_title', $ann_cat_title);
$smarty->append('cat_counter', $ann_cat_counter);

{foreach from=$cat_id item=item key=key}
{$cat_id[key][item]} - здесь бред какой то...
 

zerkms

TDD infected
Команда форума
Сенсей
{debug}

ps: smarty.php.net/manual/ru/ - читать об используемых функциях непосредственно перед использованием
 

Сенсей

Новичок
zerkms
Там умными словами написано...

в шаблоне пишу {debug} - Warning: Smarty error: unable to read resource:

тут методом тыка надыбал ))

{foreach from=$cat_id item=item key=key}
<td>{$cat_title[$key]} - {$cat_id[$key]} - {$cat_counter[$key]}</td>
{if $key is div by 2}</tr><tr>{/if}
{/foreach}

но вот с теоретической точки зрения - все правильно?
 

Фанат

oncle terrible
Команда форума
а ты, типа, точно скопировал код, который написал zerkms?
 

Сенсей

Новичок
Тестю щас - что то тут не то... слева колонок на 2 больше чем справа....
 

zerkms

TDD infected
Команда форума
{foreach from=$cat_id item=item key=key}
<td>{$cat_title[$key]} - {$cat_id[$key]} - {$cat_counter[$key]}</td>
{if $key is div by 2}</tr><tr>{/if}
{/foreach}

но вот с теоретической точки зрения - все правильно?
нет, в коде логики - ноль
ты обходишь массив $cat_id получая значение текущего элемента в $item но при этом $item собственно не юзаешь, в противопоставление $cat_id[$key]

ps: совет по поводу "почитать мануал" ещё в силе, угу
 

Сенсей

Новичок
zerkms
Ну сделал я так:

Код:
<table cellspacing="1" class="cats" align="center"><tr>
<tr>
{foreach from=$cat_id item=item key=key}
<td><a title="{$cat_title[$key]}" href="{$item}">{$cat_title[$key]}</a> [{$cat_counter[$key]}]</td>
{if $key is div by 3}
</tr>
<tr>{/if}
{/foreach}
</tr>
</table>
Ну очитал я http://smarty.php.net/manual/ru/api.append.php

Там нет ответа на вопрос праивльно ли я делаю...
 

Сенсей

Новичок
realman
в сообщении выше я заюзал {$item}

в нем значение cat_id
А понту с этого...

К критике прислушиваюсь - только я ее здесь не вижу... здесь посылают как всегда читать фак... а там нет нормальных примеров.. там лиш описание функций...

-~{}~ 01.06.06 16:20:

Короче запарился я.. заюзал section

Код:
<table>
<tr>
{section name=co loop=$cat_id}
{if $smarty.section.co.iteration % 2 == 1}
</tr>
<tr>
{/if}
<td><a href="{$cat_id[co]}">{$cat_title[co]}<a> [{$cat_counter[co]}]</td>
{/section}
<tr>
</table>
Можете просто сказать - правильная это реализация или нет? И почему? Не посылая никуда?
 

zerkms

TDD infected
Команда форума
здесь посылают как всегда читать фак... а там нет нормальных примеров.. там лиш описание функций...
ты хотел сказать - в факе нет решения конкретно твоих проблем. верно?
если так - то может программирование не твоя стихия, а намного дешевле и качественнее будет заказать написать код тому, кто этим занимается с пониманием того что делает?

Можете просто сказать - правильная это реализация или нет? И почему? Не посылая никуда?
нет не можем. не бывает идеально правильного и безобразно неправильного варианта. если он работает и персонально тебе нравится - то супер, можешь купить пива.

(однако не стоит забывать, что можно сравнить 2 варианта относительно некоторого выбранного критерия. и относительно этого критерия говорить - этот код лучше и например качественно оценить, на сколько лучше)
 

Сенсей

Новичок
zerkms
Ладно... толку здесь мало... работает - ну и хрен с ним... твои красивые слова мне мало чем помогают...

Спасибо и на этом...
 
Сверху