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


Выбор параметра из поля со множественным выбором


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

#1 TelecomMedia

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

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

Отправлено 21 Сентябрь 2015 - 11:48

Есть поле "Этапы" типа список со множественным выбором со значениями:
- Этап 1
- Этап 2
- Этап 3

Если в выбранных значениях присутствует "Этап 3", то необходимо в поле "Статус" (тип список, расположенной в связанной таблице) записать значение "Готово"

$values = explode("\r\n", $line['Этапы']); // извлекаем уже имеющиеся значения из поля в массив
if (!in_array('Этап 3', $values)) $values[] = 'Этап 3'; // если 'Этап 3' еще нет среди них, добавляем к массиву
$line['Заявка']['Статус'] = implode("\r\n", $values); // заносим значение в поле Статус

Вообщем записывается все не совсем корректно.
Что я делаю не так?

#2 CbCoder

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

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

Отправлено 21 Сентябрь 2015 - 12:45

А где у вас тут "Готово" то записывается? Я вижу только добавление "Этап 3" к списку значений, если его там не было. В комментариях кстати об этом и говорится.

#3 TelecomMedia

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

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

Отправлено 21 Сентябрь 2015 - 14:09

$values = explode("\r\n", $line['Этапы']); // извлекаем уже имеющиеся значения из поля в массив
if (!in_array('Этап 3', $values)) $values[] = 'Этап 3'; // если 'Этап 3' еще нет среди них, добавляем к массиву
if ($values[] == 'Этап 3') $line['Заявка']['Статус'] = 'Готово';


Ошибка: Cannot use [] for reading

#4 CbCoder

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

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

Отправлено 21 Сентябрь 2015 - 15:01

У нас в документации есть предупреждение, что вычисления можно писать только людям, знакомым хотя бы с базовыми основами PHP. Иначе у вас постоянно будут ошибки синтаксиса, вроде этой.

$values[] - это не переменная, а конструкция для создания нового элемента в массиве. Ее надо либо заменить на просто переменную (причем не $values, которая уже занята для другого, а например на $status), либо вообще обойтись без промежуточной переменной, которая здесь явно излишняя, и сразу заполнять поле Статус.

#5 CbCoder

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

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

Отправлено 21 Сентябрь 2015 - 15:06

Да, и кстати во второй строке идет проверка не на наличие "Этап 3" среди значений, а на его отсутствие наоборот.

#6 TelecomMedia

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

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

Отправлено 22 Сентябрь 2015 - 12:24

Спасибо, разобрался. все работает





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

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