Smarty и итерации

Mirovan

Новичок
Smarty и итерации

Использую смарти, для выборки данных из базы и последующего вывода

В php файле есть код где объявляется массив для смарти:

PHP:
$data = array(array());
$i = 0;
while ($row = $sql->fetch_array($result)) {
	$data[$i] = array("name" => $row["name"], "year" => $row["year"]);
	$i++;
}
$smarty->assign("DATA", $data);

В шаблоне использую вывод с помощью section
PHP:
<table>

{section name=group loop=$DATA}
	<tr>
		<td>???</td>
		<td>{$DATA[group].name}-{$DATA[group].year}</td>
	</tr>
{/section}

</table>

Есть ли способ с помощью встроенной функции section (или вообще другой подход) вывести номер итерации, т.е. вместо "???" был бы номер элемента массива ?
 

Mirovan

Новичок
Кажется нашел выход (случайно пролистнул страницу документации)

PHP:
{section name=group loop=$DATA}
	<tr>
		<td>{$smarty.section.group.index}</td>
		<td>{$DATA[group].name}-{$DATA[group].year}</td>
	</tr>
{/section}
-~{}~ 10.01.08 11:29:

И еще вопросик - правильный ли я способ выбрал для отображения, может есть способ легче (через foreach почему то не смог реализовать) ???
 

zuzmic

Новичок
{foreach from=$DATA item=person key=foo}
<tr>
<td>{$foo}</td>
<td>{$person.name}-{$person.year}</td>
</tr>
{/foreachelse}
<tr>
<td colspan="2"> Empty list </td>
</tr>
{/foreach}

Только, по моему, если массив не ассоциативный первый подход правильнее.
 

AmdY

Пью пиво
Команда форума
Мне foreach борльше нравится, тем более он так же выполнит данную задачу.
а зачем ты делаешь столько лишних движений.
PHP:
$data = array(); 
while ($row = $sql->fetch_assoc($result)) { 
    $data[] = $row; 
}
и что это за обёртка в которую нужно передавать $result
 

Mirovan

Новичок
Эта обертка - класс SQL, я сделал для того чтобы можно использовать разные типы БД.
 

AmdY

Пью пиво
Команда форума
твой клас должен работать примерно так
$db->query('you sql');
$rez[] = $db->fetch_row(); а лучше $rez = $db->fetch_assoc_all();

а уже в самом классе $this->result =....;
 
Сверху