Добрый день всем!
Возникла проблема. Раньше создавал шаблоны печати в .docx и хватало.
Теперь возникла необходимость создавать произвольные таблицы отчетов по клиентам, где заранее не знаешь, сколько строк будет. Я так понял, в Word и Excel нет четких команд по созданию строки в таблице. Остается html, но и тут все оказалось грустно. В Smarty отключена обработка php- кода, я правильно понял? А как же тогда сделать пару SQL-запросов, вычислить переменные и набить массивы данными, прежде чем выводить это в Smarty? Или в Smarty тоже все это возможно?
Помогите пожалуйста разобраться.
1
Создание таблицы в шаблоне
Автор 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
Как вариант, можете заполнять данными таблицу и уже оттуда формировать файл через шаблоны печати.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных