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


Не считает итог в шаблоне печати


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

#1 numenorec91

    Участник

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

Отправлено 15 Март 2013 - 11:49

Добрый день.
В шаблоне печати что бы посчитать итоговую сумму добавляю строчку:
{if $summa}{else}{SumFormat value ={$Summa}+{$Summa}{/if}
На что мне программа выдает ошибку:
Fatal error: Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template "string:" on line 54 "{if $summa}{else}{SumFormat value ={$Summa}+{$Summa}{/if}&lt;/p&gt;" - Unexpected "{/", expected one of: "}" , " "' in C:\Program Files\MSTL\ClientBase\www\include\Smarty\sysplugins\smarty_internal_templatecompilerbase.php:441 Stack trace: #0 C:\Program Files\MSTL\ClientBase\www\include\Smarty\sysplugins\smarty_internal_templateparser.php(2889): Smarty_Internal_TemplateCompilerBase->trigger_template_error() #1 C:\Program Files\MSTL\ClientBase\www\include\Smarty\sysplugins\smarty_internal_templateparser.php(2954): Smarty_Internal_Templateparser->yy_syntax_error(32, '{/') #2 C:\Program Files\MSTL\ClientBase\www\include\Smarty\sysplugins\smarty_internal_smartytemplatecompiler.php(51): Smarty_Internal_Templateparser->doParse(32, '{/') #3 C:\Program Files\MSTL\ClientBase\www\include\Smarty\sysplugins\smarty_internal_templatecompilerbase.php(82): Smarty_Internal_SmartyTemplateCompiler->doCompile('<p style="te in C:\Program Files\MSTL\ClientBase\www\include\Smarty\sysplugins\smarty_internal_templatecompilerbase.php on line 441

Что не правильно сделано?
Строку брал из базовой конфигурации шаблона для печати "счет"

#2 CbCoder

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

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

Отправлено 15 Март 2013 - 13:13

Скобку не закрыли у SumFormat. Если выходит "Syntax Error in template" - в первую очередь проверяйте свой код на опечатки.

#3 numenorec91

    Участник

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

Отправлено 15 Март 2013 - 13:26

Все равно ошибка :(
Parse error: syntax error, unexpected ';' in C:\Program Files\MSTL\ClientBase\www\include\smarty_function.php(32) : eval()'d code on line 1
0 value = 12 775+12 775

Вот такой код получился:

{if $summa}{else}{SumFormat} value = {$subtable.Summa}+{$subtable.Summa}{/if}

В поле Сумма:
{$subtable.Summa}

#4 CbCoder

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

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

Отправлено 15 Март 2013 - 13:54

Ну так вы не там скобку поставили. У вас "value=" теперь ни к чему не относится, хотя это параметр функции SumFormat.

Вот как надо было:
{if $summa}{else}{SumFormat value ={$Summa}+{$Summa}}{/if}

Красным пометил пропущенную скобку, синим - то что она закрывает.

#5 numenorec91

    Участник

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

Отправлено 15 Март 2013 - 14:18

{foreach from=$Pozicii_zayavki item=subtable name=Pozicii_zayavki}{$smarty.foreach.Pozicii_zayavki.iteration}
{$subtable.Zayavka} {$subtable.Oborudovanie} {$subtable.Kolichestvo} {$subtable.Cena_za_ed} {$subtable.Summa}
{/foreach}

Итого: {if $Summa}{else}{SumFormat value = {$Summa}+{$Summa}}{/if}

В поле итого считает: 0

#6 CbCoder

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

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

Отправлено 15 Март 2013 - 14:49

Ну все правильно. Расшифровываю ваше выражение: "если есть $Summa - ничего не выводим, иначе выводим $Summa+$Summa". Т.е. у вас в любом случае выйдет либо пусто, либо ноль.

Может, на самом деле вы хотели написать:

{if $Summa}{SumFormat value = {$Summa}+{$Summa}}{/if}

?

#7 numenorec91

    Участник

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

Отправлено 15 Март 2013 - 15:11

{if $Summa}{SumFormat value = {$subtable.Summa}+{$subtable.Summa}}{/if} - считает "24" (в полях суммы числа "2 637 000" и "12 775")
{if $Summa}{SumFormat value = {$Summa}+{$Summa}}{/if} - не считает
{if $subtable.Summa}{SumFormat value = {$Summa}+{$Summa}}{/if} - считает "0"
{if $subtable.Summa}{SumFormat value = {$subtable.Summa}+{$subtable.Summa}}{/if} - не считает

#8 CbCoder

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

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

Отправлено 15 Март 2013 - 16:24

Цитата

{SumFormat value = {$subtable.Summa}+{$subtable.Summa}} - считает "24" (в полях суммы числа "2 637 000" и "12 775")

Значение value необходимо задавать строго в кавычках: {SumFormat value = "{$subtable.Summa}+{$subtable.Summa}"}

#9 numenorec91

    Участник

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

Отправлено 18 Март 2013 - 09:10

{SumFormat value = "{$subtable.Summa}+{$subtable.Summa}"} - такой код приводит к тому что складывается колличество двух чисел последней строки. Все равно не добился нужного результата.

Пошел другим путем, добавил строку Итого в главную таблицу. Задал вычесление:


$sqlQuery = "SELECT sum(f1861*f1871) as summa FROM ".DATA_TABLE."16 WHERE status=0 AND f1791=$ID";
$res = mysql_query($sqlQuery);
$row = mysql_fetch_array($res);
$line['Сумма'] = $row['summa'];

Выдается ошибка:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\MSTL\ClientBase\www\include\functions1.php(264) : eval()'d code on line 3

#10 CbCoder

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

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

Отправлено 18 Март 2013 - 12:15

Так вам что нужно то было в итоге? Выдать сумму строк подтаблицы? Тогда {$subtable.Summa}+{$subtable.Summa} разумеется заведомо неверный код. Что же касается вычисления, то ошибка у вас в запросе очевидно, чтобы узнать где именно, поменяйте строку mysql_query($sqlQuery) на mysql_query($sqlQuery) or die(mysql_error()). Скорее всего id одного из полей неверный, т.к. на первый взгляд явных ошибок синтаксиса нет.

#11 numenorec91

    Участник

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

Отправлено 18 Март 2013 - 12:53

Да в итоге нужно посчитать сумму строк подтаблицы.

Поменял строку, ошибка:

Unknown column 'f1761' in 'field list'

#12 CbCoder

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

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

Отправлено 18 Март 2013 - 13:16

Ну все верно, как я и предполагал, поля f1761 не существует. Т.е. вы ошиблись с id поля связи подчиненной таблицы.

#13 numenorec91

    Участник

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

Отправлено 18 Март 2013 - 13:34

"SELECT sum(f1761*f1771) as summa FROM ".DATA_TABLE."31 WHERE status=0 AND f2341=$ID"
f1761 - поле колличество (в подчиненной таблице).
f1771 - поле сумма (в подчиненной таблице).
TABLE."31 - подчиненная таблица.
f2341 - поле ID подчиненной таблицы.
Все верно?

#14 numenorec91

    Участник

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

Отправлено 18 Март 2013 - 14:03

Вот такой код:
$sqlQuery = "SELECT sum(f1761*f1851) as summa FROM ".DATA_TABLE."31 WHERE status=0 AND f1741=$ID";
$res = mysql_query($sqlQuery) or die(mysql_error());
$row = mysql_fetch_array($res);
$line['Сумма'] = $row['summa'];

Вот ошибка:
Unknown column 'f1761' in 'field list'

Хотя поле 1761 - колличество оборудования. (/edit_field.php?table=151&field=1761) Из за чего ошибка.
Вернул фразу mysql_query($sqlQuery) на место, ошибка на верху экрана (Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\MSTL\ClientBase\www\include\functions1.php(264) : eval()'d codeon line 3) ,и все равно ни чего не считает (при выводе на печать "0" и в таблице в строке пусто).

Сообщение отредактировал numenorec91: 18 Март 2013 - 14:25


#15 CbCoder

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

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

Отправлено 18 Март 2013 - 14:57

MySQL вам говорит, что в таблице с id=31 поля с id=1761 не существует. Вы уверены, что не ошиблись с id полей или таблицы?

Цитата

edit_field.php?table=151&field=1761

По этой ссылке id таблицы - 151. А у вас в запросе - 31. Почему? Разумеется будет ошибка.

#16 numenorec91

    Участник

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

Отправлено 18 Март 2013 - 15:18

31 - онсновная таблица
151 - подчиненная
сейчас на 151 поменял вот что получилось:

SQL error in
UPDATE `f_data31` SET `Сумма`='2649783' WHERE `id`=46

Unknown column 'Сумма' in 'field list'

In function:

C:\Program Files\MSTL\ClientBase\www\view_line2.php(1413) : calc_line()

C:\Program Files\MSTL\ClientBase\www\include\functions1.php(266) : form_event_recurs()

C:\Program Files\MSTL\ClientBase\www\include\functions1.php(225) : data_update()


#17 CbCoder

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

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

Отправлено 18 Март 2013 - 16:59

Цитата

31 - онсновная таблица
151 - подчиненная

Вы считаете сумму по подчиненной таблице, соответственно и в запросе у вас должен быть id подчиненной таблицы, а не основной, т.е. 151.


Цитата

SQL error in
UPDATE `f_data31` SET `Сумма`='2649783' WHERE `id`=46
Unknown column 'Сумма' in 'field list'

Тоже самое - теперь отсутствует поле Сумма в основной таблице (прописано у вас в коде в переменной $line).

Либо вы действительно не добавили это поле, либо опечатка, к примеру буква С латинская.

#18 numenorec91

    Участник

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

Отправлено 19 Март 2013 - 08:02

Да моя ошибка была с правильным названием поля.
Но все равно считает еренду.

Прикрепленные изображения

  • Прикрепленное изображение: 12.JPG


#19 CbCoder

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

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

Отправлено 19 Март 2013 - 17:46

Отправьте заявку в техподдержку в бэкапом.

#20 CbCoder

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

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

Отправлено 21 Март 2013 - 18:14

Посмотрел ваш бэкап. У вас поле "Цена" не числовое, а является полем связи (непонятно по какой причине). Естественно ни о какой корректной сумме говорить в этом случае не приходится - в поле связи хранится id связанной записи, а не нужная вам цена.

Кстати, тоже самое касается и поля "маркировка", про которое вы заодно спросили.





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

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