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


Доп. действие


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

#1 TelecomMedia

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

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

Отправлено 29 Апрель 2014 - 10:53

Подскажите в чем ошибка:

if ($line['Договор'] == '0' && $line['Сумма оплат'] == '0,00') {
	$line['Категория'] = 'Реквизиты';
}if ($line['Договор'] == '1' && $line['Сумма оплат'] == '0,00') {
	$line['Категория'] = 'Новый';
}if ($line['Сумма оплат'] != '0,00' && $line['Количество оплат'] != '0') {
	$line['Категория'] = 'Действующий';
}if ($line['Среднемесячное кол-во рассылок'] > '1') {
	$line['Категория'] = 'Активно работающий';
}if ($line['Сумма оплат'] > '50000' && $line['Среднемесячный трафик'] > '20000') {
	$line['Категория'] = 'VIP';
}

Доп действие должно присваивать Категорию в зависимости от условий. Но категория проставляется некорректно и практически всегда = "Действующий"
Прикладываю скрин

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

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

Сообщение отредактировал fabrika-r: 29 Апрель 2014 - 10:54


#2 CbCoder

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

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

Отправлено 29 Апрель 2014 - 14:29

Условия исключают друг друга? Тогда должны быть elseif, начиная со второй строки.

#3 TelecomMedia

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

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

Отправлено 29 Апрель 2014 - 14:58

Сделал с elseif. Все тоже самое получается.

#4 CbCoder

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

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

Отправлено 29 Апрель 2014 - 15:53

"0,00" - все данные внутри базы хранятся в международном формате (точнее американском, т.к. они законодатели в it-сфере), в частности в цифрах используется точка. Более, того, "0.00" равно просто нулю, поэтому можно и рекомендуется писать так:

$line['Сумма оплат'] == 0

Примечание: это все относится к полям с типом "число", в текстовых полях все хранится так как было записано, без преобразований.

#5 TelecomMedia

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

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

Отправлено 29 Апрель 2014 - 15:59

Да, спасибо, заработало.

#6 TelecomMedia

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

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

Отправлено 30 Апрель 2014 - 09:21

Не срабатывает вот эта часть кода:

}elseif ($line['Среднемесячное кол-во рассылок'] > '1') {
	$line['Категория'] = 'Активно работающий';
}elseif ($line['Сумма оплат'] > '50000' && $line['Среднемесячный трафик'] > '20000') {
	$line['Категория'] = 'VIP';
}

Хотя есть значения в записях, которые должны были перевести поле Категория в значения "Активно работающий" или "VIP"

Сообщение отредактировал fabrika-r: 30 Апрель 2014 - 09:22


#7 CbCoder

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

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

Отправлено 30 Апрель 2014 - 09:27

Уберите кавычки с чисел, если сравнения идут с полями типа число. В кавычках - это строки, а не числа, поэтому алгоритм сравнения может быть иной.

#8 TelecomMedia

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

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

Отправлено 30 Апрель 2014 - 09:57

Все кавычки с чисел убрал, не помогло.

#9 CbCoder

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

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

Отправлено 30 Апрель 2014 - 10:40

Тогда не знаю, в чем еще может может быть ошибка. Возможно, что ошибки как таковой и нет, а просто одновременно выполняются вышележащие условия, и соответственно до этих просто не доходит.

Например:

если яблоко зеленое, то крикнуть "ку" один раз
иначе если банан желтый, то махнуть рукой два раза

Так вот, если яблоко зеленое, то выполнится только "ку один раз", а до махания рукой дело не дойдет, даже если банан и в самом деле желтый.

#10 TelecomMedia

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

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

Отправлено 30 Апрель 2014 - 11:03

))))

Т.е., чтобы воторое условие сработало должно быть так:

если яблоко зеленое, то крикнуть "ку" один раз
иначе если банан желтый и яблоко зеленое, то махнуть рукой два раза


так?

#11 CbCoder

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

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

Отправлено 30 Апрель 2014 - 13:00

Не совсем. Речь о том, что если выполняется условие "если", то "иначе" в любом случае будет проигнорировано. Если нужно проверять оба условия независимо, то их нужно писать отдельно. В вашем случае будет:

если яблоко зеленое, то крикнуть "ку" один раз
если банан желтый и яблоко зеленое, то махнуть рукой два раза

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





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

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