Все данные таблицы отражать в отчетах
#1
Отправлено 25 Июнь 2015 - 10:18
Как перенести, те отражать в отчетах все данные таблицы?
#2
Отправлено 25 Июнь 2015 - 10:23
#3
Отправлено 25 Июнь 2015 - 10:34
// Здесь подготовливаем данные для вывода в отчете
$sqlQuery="SELECT sum(f290) as sum FROM ".DATA_TABLE."300 WHERE f280='Процессор'";
$result = mysql_query($sqlQuery);
$row = mysql_fetch_array($result);
$data['sum'] = $row['sum'];
$data['ozu'] = $row['f260'];
$data['name'] = $row['f270'];
// Переносим переменные в отображение;
$smarty->assign("data", $data['sum']);
$smarty->assign("data", $data['ozu']);
$smarty->assign("data", $data['name']);
#4
Отправлено 25 Июнь 2015 - 10:39
<tr>
<td>
Сумма</td>
<td>
ОЗУ</td>
<td>
Наименование</td>
</tr>
<tr>
<td>
{$data.sum}</td>
<td>
{$data.ozu}</td>
<td>
{$data.name}</td>
</tr>
</table>
На выходе пустой отчет.
#5
Отправлено 25 Июнь 2015 - 11:03
$sqlQuery = "SELECT * FROM ".DATA_TABLE."200";
$res = sql_query($sqlQuery);
$row = sql_fetch_array($res);
$data1 = $row['f210'];
$data2 = $row['f220'];
$data3 = $row['f230'];
$data4 = $row['f240'];
$smarty->assign("date1", $date1);
$smarty->assign("date2", $date2);
$smarty->assign("date3", $date3);
$smarty->assign("data4", $data7);
Отображение:
<table class="mainTable" align="center" cellspacing="0" cellpadding="0" style="width:70%; background-color:#F0F0F0;">
<tr>
<td>
Наименование</td>
<td>
Процессор</td>
<td>
ОЗУ</td>
<td>
Сумма</td>
</tr>
<tr>
<td>
{$data1}</td>
<td>
{$data2}</td>
<td>
{$data3}</td>
<td>
{$data4}</td>
</tr>
</table>
Показывает данные первого строка, причем только суммы.
#6
Отправлено 25 Июнь 2015 - 11:16
#7
Отправлено 25 Июнь 2015 - 11:17
Цитата
Так потому что у вас в подготовке данных из запроса берется только первая строка, и она же единственная передается в отображение. Если необходимо вывести несколько строк, используйте цикл по записям, вначале в подготовке, для формирования массива записей:
$sqlQuery = "SELECT * FROM ".DATA_TABLE."200"; $result = sql_query($sqlQuery); while ($row = sql_fetch_array($result)) { $lines[] = $row; } $smarty->assign("lines", $lines);
а затем при выводе, в отображении данных:
<table class="mainTable" align="center" cellspacing="0" cellpadding="0" style="width:70%; background-color:#F0F0F0;"> <tr> <td>Наименование</td> <td>Процессор</td> <td>ОЗУ</td> <td>Сумма</td> </tr> {foreach from=$lines item=data} <tr> <td>{$data.f210}</td> <td>{$data.f220}</td> <td>{$data.f230}</td> <td>{$data.f240}</td> </tr> {/foreach} </table>
#8
Отправлено 25 Июнь 2015 - 11:25
#9
Отправлено 25 Июнь 2015 - 11:47
только где ОЗУ в свойстве указан как текст, но там значение в мегабайт числовые данные, в отображениях какие то левые данные выводит?
#10
Отправлено 25 Июнь 2015 - 12:17
#11
Отправлено 25 Июнь 2015 - 12:28
#12
Отправлено 25 Июнь 2015 - 14:27
Цитата
Так вы же сами выше написали что это "текст". Для полей связи это нормально, там хранится id связанной записи, т.е. чтобы вытащить нужное значение, необходим запрос к связанной таблице.
#13
Отправлено 25 Июнь 2015 - 14:32
#14
Отправлено 25 Июнь 2015 - 14:51
$sqlQuery = "SELECT * FROM ".DATA_TABLE."200"; $result = sql_query($sqlQuery); while ($row = sql_fetch_array($result)) { $sqlQuery = "SELECT * FROM ".DATA_TABLE."111 WHERE id=".$row['f230']; // вместо 111 подставляете id связанной таблицы $result2 = sql_query($sqlQuery); $row2 = sql_fetch_array($result2); $row['f230'] = $row2['f222']; // вместо 222 подставляете id нужного поля из связанной таблицы $lines[] = $row; } $smarty->assign("lines", $lines);
#15
Отправлено 26 Июнь 2015 - 05:50
Дай Вам Бог Здоровье, Удачи!
#16
Отправлено 26 Июнь 2015 - 06:43
#17
Отправлено 26 Июнь 2015 - 09:28
$sqlQuery = "SELECT * FROM ".DATA_TABLE."200 WHERE status=0";
#18
Отправлено 26 Июнь 2015 - 12:03
Количество пользователей, читающих эту тему: 2
0 пользователей, 2 гостей, 0 анонимных