Перейти к содержимому


Создание таблицы в шаблоне


Сообщений в теме: 4

#1 Rapman

    Участник

  • Пользователи
  • PipPip
  • 12 сообщений

Отправлено 11 Февраль 2017 - 02:26

Добрый день всем!
Возникла проблема. Раньше создавал шаблоны печати в .docx и хватало.
Теперь возникла необходимость создавать произвольные таблицы отчетов по клиентам, где заранее не знаешь, сколько строк будет. Я так понял, в Word и Excel нет четких команд по созданию строки в таблице. Остается html, но и тут все оказалось грустно. В Smarty отключена обработка php- кода, я правильно понял? А как же тогда сделать пару SQL-запросов, вычислить переменные и набить массивы данными, прежде чем выводить это в Smarty? Или в Smarty тоже все это возможно?
Помогите пожалуйста разобраться.

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 11 Февраль 2017 - 14:57

Если вам нужен произвольный отчет, создавайте его как отчет. Там у вас будет прекрасная возможность сделать сколько угодно SQL-запросов, задать любые переменные и массивы и т.д.

Шаблоны печати не предназначены для создания отчетов, они для того, что прописано в их названии - т.е. для вывода на печать уже готовых данных.

#3 Rapman

    Участник

  • Пользователи
  • PipPip
  • 12 сообщений

Отправлено 11 Февраль 2017 - 15:51

Ясно, благодарю. К этому склонялся, но решил уточнить.

#4 Rapman

    Участник

  • Пользователи
  • PipPip
  • 12 сообщений

Отправлено 13 Февраль 2017 - 07:31

Просмотр сообщенияCbCoder (11 Февраль 2017 - 14:57) писал:

Там у вас будет прекрасная возможность
Снова вопрос, подскажите пожалуйста. Набросал тестовый отчет, все прекрасно.
А как теперь реализовать вывод в файл этого отчета? Кнопку "Печать" я с горем пополам вытащил и прикрутил, но это не то.
Как можно его вывести в PDF, doc, rtf - да хоть во что-нибудь? Видел, в других отчетах есть импорт в xls- уже неплохо, но это я не осилил. Какие для этого есть модули или функции или инструменты и где об этом почитать?

Вот мой тестовый отчет:
Подготовка данных:
$sql_order = "SELECT f_data311.`f5341`, f_data311.`id` FROM ".DATA_TABLE."311, f_data331
WHERE
f_data311.`id` = f_data331.`f5831`
ORDER BY f_data311.`f5341`
";
$i=1;
$res_order = sql_query($sql_order);
while($row_order=sql_fetch_assoc($res_order)) {
$order_date_arr[$i]['id'] = $row_order['id'];
$order_date_arr[$i]['f5341'] = $row_order['f5341'];
$order_date_names[] = $row_order['f5341'];
$i=$i+1;
}
$order_date_str = implode(" ", $order_date_arr[1]);
$t = array_count_values($order_date_names);
foreach($t as $key => $value){
for ($i = 1; $i <= count($order_date_arr); $i++){
if ($order_date_arr[$i]['f5341'] ==$key)
$order_date_arr[$i]['kolvo'] = $value;
}
}
$order_date_arr= array_map("unserialize", array_unique( array_map("serialize", $order_date_arr) ));
$smarty->assign('tablecontent', $order_date_arr);

Отображение:
<span class="no_print">
<a href="javascript:window.print()"><img src="images/print.gif" class="img_print">Печать отчёта</a>
</span>
<table width="70%" border="1">
  <tr>
	<td>Идентификатор</td>
	<td>ФИО</td>
	<td>Кол-во поездок</td>
  </tr>
  {foreach item=poluchatel from=$tablecontent}
  <tr>
  {foreach item=item from=$poluchatel}
	<td>{$item}</td>
  {/foreach}
  </tr>
{/foreach}
  <tr>
	<td>&nbsp;</td>
	<td>&nbsp;</td>
	<td>&nbsp;</td>
  </tr>
</table>


#5 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 13 Февраль 2017 - 14:05

Как вариант, можете заполнять данными таблицу и уже оттуда формировать файл через шаблоны печати.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных