Добрый день всем!
Возникла проблема. Раньше создавал шаблоны печати в .docx и хватало.
Теперь возникла необходимость создавать произвольные таблицы отчетов по клиентам, где заранее не знаешь, сколько строк будет. Я так понял, в Word и Excel нет четких команд по созданию строки в таблице. Остается html, но и тут все оказалось грустно. В Smarty отключена обработка php- кода, я правильно понял? А как же тогда сделать пару SQL-запросов, вычислить переменные и набить массивы данными, прежде чем выводить это в Smarty? Или в Smarty тоже все это возможно?
Помогите пожалуйста разобраться.
Создание таблицы в шаблоне
Автор Rapman, 11 февр. 2017 02:26
Сообщений в теме: 4
#1
Отправлено 11 Февраль 2017 - 02:26
#2
Отправлено 11 Февраль 2017 - 14:57
Если вам нужен произвольный отчет, создавайте его как отчет. Там у вас будет прекрасная возможность сделать сколько угодно SQL-запросов, задать любые переменные и массивы и т.д.
Шаблоны печати не предназначены для создания отчетов, они для того, что прописано в их названии - т.е. для вывода на печать уже готовых данных.
Шаблоны печати не предназначены для создания отчетов, они для того, что прописано в их названии - т.е. для вывода на печать уже готовых данных.
#3
Отправлено 11 Февраль 2017 - 15:51
Ясно, благодарю. К этому склонялся, но решил уточнить.
#4
Отправлено 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> </td>
<td> </td>
<td> </td>
</tr>
</table>
#5
Отправлено 13 Февраль 2017 - 14:05
Как вариант, можете заполнять данными таблицу и уже оттуда формировать файл через шаблоны печати.
Количество пользователей, читающих эту тему: 2
0 пользователей, 2 гостей, 0 анонимных













