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


Еще один вопрос о вычислениях


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

#1 fmservis

    Участник

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

Отправлено 06 Февраль 2014 - 11:26

Добрый день!
Существуют три поля: Наличие, Резерв, Остаток. Прописано вычисление для поля Остаток - $line['остаток'] = $line['Наличие'] - $line['Резерв'];
Возможно ли прописать вычисление для поля Наличие, при таком условии: Наличие = Остаток если Резерв равен 0

#2 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 06 Февраль 2014 - 11:35

$line['Наличие'] =(!$line['Резерв'])?$line['Остаток']:$line['Наличие'];

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#3 fmservis

    Участник

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

Отправлено 06 Февраль 2014 - 13:40


Добрый день!

Извиняюсь за не знание, но не могли бы Вы объяснить словами, что означает данное условие.

Поскольку, при создании нового вычисления: $line['Наличие'] =(!$line['Резерв'])?$line['Остаток']:$line['Наличие']; перестает работать старое вычисление: $line['остаток'] = $line['Наличие'] - $line['Резерв'];

А при изменении поля резерв, система выдает ошибку:

Ошибка системы.


Error generated:

/home/fm-servis/public_html/include/functions1.php(283) : data_update()

/home/fm-servis/public_html/include/functions1.php(341) : form_event_recurs()

/home/fm-servis/public_html/include/functions1.php(611) : calc_line()

/home/fm-servis/public_html/view_line2.php(978) : popup_event()

Ошибка SQL запроса:
UPDATE `f_data501` SET `остаток`='71' WHERE `id`=2
Unknown column 'остаток' in 'field list'


#4 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 06 Февраль 2014 - 14:45

Просмотр сообщенияfmservis (06 Февраль 2014 - 13:40) писал:

Добрый день!
Извиняюсь за не знание, но не могли бы Вы объяснить словами, что означает данное условие.
Это упрощенный вариант условия if. По сути тоже, если бы Вы написали
if ($line['Резерв']=='0') $line['Наличие']=$line['Остаток']; // если поле Резерв равно нулю, то поле Наличие равно полю Остаток

Просмотр сообщенияfmservis (06 Февраль 2014 - 13:40) писал:

Ошибка SQL запроса:
UPDATE `f_data501` SET `остаток`='71' WHERE `id`=2
Unknown column 'остаток' in 'field list'
Ругается программа на то, что такого поля как остаток она не видит. Проверьте соответствие названия полей в таблице. Может опечатка где-нибудь.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#5 fmservis

    Участник

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

Отправлено 06 Февраль 2014 - 17:30

Извиняюсь еще раз, наверно не смог объяснить толком задачу.
Есть три поля: Наличие, Резерв, Остаток.
При данном условии: $line['остаток'] = $line['Наличие'] - $line['Резерв']; Наличие 10; Резерв 3; Остаток 7; Все работает отлично.
Но хотелось бы еще сделать так. чтобы когда Резерв 0; Наличие 7; Остаток 7
Что при условии: if($line['Резерв']=='0') $line['Наличие']=$line['Остаток']; Не работает, когда Резерв становится равен 0; Наличие 10; Остаток 10.
Может я что то делаю не так?
Создаю вычисление: $line['Остаток'] = $line['Наличие'] - $line['Резерв'];
Создаю второе вычисление: if ($line['Резерв']<='0') $line['Наличие']=$line['Остаток'];
Первое работает, второе нет.

#6 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 07 Февраль 2014 - 14:46

Просмотр сообщенияfmservis (06 Февраль 2014 - 17:30) писал:

Первое работает, второе нет.
По какому условию у Вас настроено срабатывание вычислений?

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#7 fmservis

    Участник

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

Отправлено 07 Февраль 2014 - 16:02

Все спасибо, сам доковырял, как то так..

if ($line['Резерв']<='0')
{
$line['Наличие']=$line['Остаток'];
}
elseif ($line['Резерв']>'0')
{
$line['Остаток'] = $line['Наличие'] - $line['Резерв'];
}

#8 fmservis

    Участник

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

Отправлено 07 Февраль 2014 - 16:09

Теперь есть еще один вопрос. есть 2 таблицы в первой строка с артикулом и полями Наличие, резерв, остаток. и вторая таблица в которой я вбиваю приход мне нужно чтоб при добавлении числового значения по определенному артикулу в таблице 2, менялось значение в 1й таблице поле Наличие = Наличие + приход

Сообщение отредактировал fmservis: 07 Февраль 2014 - 16:10


#9 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 07 Февраль 2014 - 17:55

Просмотр сообщенияfmservis (07 Февраль 2014 - 16:02) писал:

Все спасибо, сам доковырял, как то так..

if ($line['Резерв']<='0')
{
$line['Наличие']=$line['Остаток'];
}
elseif ($line['Резерв']>'0')
{
$line['Остаток'] = $line['Наличие'] - $line['Резерв'];
}
так проще
if ($line['Резерв']<='0') $line['Наличие']=$line['Остаток'];
else $line['Остаток'] = $line['Наличие'] - $line['Резерв'];

Просмотр сообщенияfmservis (07 Февраль 2014 - 16:09) писал:

Теперь есть еще один вопрос. есть 2 таблицы в первой строка с артикулом и полями Наличие, резерв, остаток. и вторая таблица в которой я вбиваю приход мне нужно чтоб при добавлении числового значения по определенному артикулу в таблице 2, менялось значение в 1й таблице поле Наличие = Наличие + приход
Это связанные таблицы? Главная и подчиненная или равноценные? Не совсем понял ТЗ.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения






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

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