Вывод в две колонки на Smarty

DenVeroid

Новичок
Вывод в две колонки на Smarty

Как можно сделать вывод данных в две колонки

я делаю так:

сам шаблон

<center>
<table><tr>

{foreach from=$results item=i}

{$i.cat_row}

{/foreach}

</tr></table>
</center>




PHP:
require_once('global.php');
$results = Array();
$i=0;
$cols = 2;
$res = mysql_query("select * from category where status=1");
        while($row=mysql_fetch_array($res)) {
$cat_row = "<td bgcolor=F4F4F4>".$row["name"]."</td>".(isset($divider)?"<td>".$divider."</td>":"").((++$i%($cols)==0&&$i!=0)?"</tr><tr>":"");
           $tmp = array(
                'cat_id' => $row['parentcategoryid'],
                'cat_name' => $row['name'],
                'cat_row' => $cat_row,
                      );
            $results[$i++] = $tmp;
    }
$smarty->assign('results', $results);
$smarty->display('category_center.tpl');
но почемуто выводиться в одну строчку, если делаю вообще без смарти то всё нормально
Да может есть другой способ?
 

csa

Guest
"да вас, батенька, в детстве не роняли, а швыряли"

зачем пихать html в php и при этом использовать смарти?

результирующий html какой?
 

DenVeroid

Новичок
tony2001, я может чёт не так понял, вроде сделал как ты сказал, но почемуто выводит в одну строчку и в том месте где стоит {counter start=0 skip=2} показывает нули столько раз сколько в базе записей.

<center>
<table><tr>

{foreach from=$results item=i}

{counter start=0 skip=2}

{if $i%2}
<td>{$i.cat_name}</td>
{/if}

{/foreach}

</tr></table>
</center>
 

tony2001

TeaM PHPClub
Код:
<center>
<table>
{counter print=0 advance=false}
{foreach from=$results item=result}
{counter print=false assign=i}
{if !$i%2}
<tr>
{/if}
<td>{$result.cat_name}</td>
{if $i%2}
</tr>
{/if}
{/foreach}
</table>
</center>
либо можно не использовать foreach & counter, а использовать section, где уже есть свой "счетчик".
 

DenVeroid

Новичок
tony2001 спасибо, именно то что надо,
кстати, если мне нужно будет разбить не на две а на три колонки, то я должен заменить два на три, но почемуто неразбивается, вообще это редко применяется, восновном делется на две, ну это так

да и ещё, в какой-то теме ты давал ссылку на русский мануал по смарти, немобы дать здесь, ато немогу найти
 

tony2001

TeaM PHPClub
сделай общий случай (здесь вместо 2-х можно подставить любое число, по идее):
Код:
<table>
{foreach from=$records item=record}
	{counter assign=i}
	{if $i == 0}
	<tr>
		<td>
		...
		</td>
	{elseif $i % 2 == 0}
		<td>
		...
		</td>
	</tr>
	<tr>
	{else}
		<td>
		...
		</td>
	{/if}
{/foreach}
{if $i % 2 > 0}
	{math equation="2-($i%2)" assign=add}
	{section name="dummy" loop=$add}
		<td class="lightbluesmall">&nbsp;</td>
	{/section}
	</tr>
{/if}
</table>
 

DenVeroid

Новичок
неплохо, спасибо :)
кстати, по поводу двух колонок, иногда бывает так когда вывожу в две колонки допустим шесть записей, поидее должно быть по три записи на каждую калонку, но почему-то в первой четыри записи а во второй две, причём первая запись во второй колонке выводиться напротив второй записи первой колонки, немного сьезжает, почему так происходит?
 
Сверху