@pofeg

Как правильно использовать implode при выборе нескольких значений в одном name поле?

elseif( preg_match( "#^cat-(.+)#is", $kluch, $znachenie) ) {
	if ( trim($value) != '' ) {
		if ($config['allow_multi_category']) {
			$parametor[] = "category REGEXP '[[:<:]](" . str_replace(',', '|', $value) . ")[[:>:]]'";
		} else {
			$parametor[] = "category IN('" . str_replace(',', "','", $value) . "')";
		}
	}
}


Для выборки новостей по определенным категориям, использую условие выше, всё работает пока не подключаю значение multiple в списке select и не выбираю несколько категорий, то есть select уже передает значения типа: 4,7,6 и тд
Как только я выбрал больше одной категории всё ломается.

И в ответ в консоль значение поля cat-name просто дублируется:
Консоль: viborka: cat-category=9&cat-category=10
А нужно чтобы было: viborka: cat-category=9,10

Как правильно объеденить их?
Заранее спасибо!
(P.S переменная $parametor вставляется в mysql запрос после WHERE. А переменная $value это то что получаем в select)
Заранее спасибо!
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ответы на вопрос 1
@harasaev
elseif( preg_match( "#^cat-(.+)#is", $kluch, $znachenie) ) {
  if ( trim($value) != '' ) {
    if ($config['allow_multi_category']) {
      $parametor[] = "category REGEXP '[[:<:]](" . str_replace(',', '|', $value) . ")[[:>:]]'";
    } else {
$value = array_map(function ($id) {
    return "'{$id}'";
}, $value);
$value = implode(',', $value);
      $parametor[] = "category IN($value)";
    }
  }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы