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


Урок №5 помогите разобраться!


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

#1 star

    Новичок

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

Отправлено 21 Март 2013 - 22:57

Создал всё, как написано в уроке.
Добавил вычисление:
if ($line['Сумма'])
{
$sqlQ = "SELECT SUM(`f1207`) AS sum FROM ".DATA_TABLE."95 WHERE `f1195`=".$line['Номер']['raw']." and status=0 and `id`<>".$ID;
$pre = sql_query($sqlQ) or die(mysql_error());
$row = mysql_fetch_assoc($pre);
if ($row['sum']===NULL) { $line['Номер']['Сумма']=$line['Сумма']; }

else { $line['Номер']['Сумма']=$row['sum']+$line['Сумма']; }
}
Помогите разобраться:
1) вычисление никак не работает, пока не уберешь if ($line['Сумма'])
2) если убрать, работает, но только при нажатии на добавление новой записи. При изменении количества товара в любой из записей считает сумму по всем, кроме той, в которой меняешь
3) что проверяет $row['sum']===NULL
4) что в строке ".$line['Номер']['raw']." означает raw? Номер - это массив, а raw?
5) зачем нужно условие `id`<>".$ID
Прежде чем писать вопрос, несколько вечеров потратил на изучение форума, несколько часов пробовал различные комбинации и варианты - никак не могу разобраться. Прошу помощи! Спасибо!

#2 CbCoder

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

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

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

Данный пример - по сути копия вычисления Суммы счета из таблицы Позиция счетов стандартной конфигурации. Можете проверить его работу там. Вы не написали, где именно вы применяли данный пример, возможно какие-то поля в вашей таблице не совпадают с примером.

По вашим вопросам:
1. Это условие проверяет, не является ли поле Сумма в подтаблице (в которой собственно и выполняется вычисление) пустым. Честно говоря сам не понял, зачем, но вычисление в любом случае должно работать, с ним или без него.
2. Опять же, в Позициях счета все работает, скорее всего у вас id полей не такие, как в примере.
3. Проверяет, возвратил ли запрос хотя бы одну строку или нет. См. также пункт 5 (других записей может не быть).
4. 'raw' - это значение поля связи в БД, т.е. id связанной записи.
5. Чтобы отобрать все подчиненные записи, кроме текущей. В текущей записи хранится старое значение суммы, новое берется из $line['Сумма'] - т.к. оно могло изменится (собственно по его изменению вычисление и срабатывает)

#3 Александр Пономарев

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

  • Пользователи
  • PipPipPip
  • 434 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 16 Апрель 2013 - 21:59

if ($line['Сумма']) - отсутствует условие, чему должна равняться сумма (значение поля). Не должно оно работать

#4 CbCoder

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

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

Отправлено 17 Апрель 2013 - 10:21

Просмотр сообщенияАлександр Пономарев (16 Апрель 2013 - 21:59) писал:

if ($line['Сумма']) - отсутствует условие, чему должна равняться сумма (значение поля). Не должно оно работать

Тут условие чисто логическое, на заполненность поля. Эквивалентно $line['Сумма']!=''





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

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