2016-05-24 3 views
0

У меня есть поле выбора, в котором я передаю значение через ajax в оператор mysql. мне нужно, чтобы сделать его более умным, так что я не должен жёстко все значения из выпадающего поляПолучить значение из окна выбора через ajax для mysql

поле выбора HTML является:

<select> 
    <option value="value1">something</option> 
    <option value="value2">somethingElse</option> 
</select> 

Я передать значение через AJAX с:

var opts = []; 
$selectboxes.each(function(){ 
    opts.push($(this).val()); 
}) 

в моем файле PHP я использовать значение для фильтрации SQL выберите заявление:

if (in_array("something", $opts)){ 
$where .= " AND region = 'something'"; 
} 

Если пользователь выбирает вариант 1 со значением value1 файл PHP должен изменить что-то вроде

if (in_array("VALUE1", $opts)){ 
    $where .= " AND region = 'VALUE1'"; 
} 
+1

использовать 'id's' и' where in' – madalinivascu

ответ

1

Используйте IN вариант, где и array_intersect выбрать только те значения, которые мы находим в $ IsArray

$isarray= array("something","somethingElse",....) 
$is = array_intersect($ops,$isarray) 
$where .= " AND region IN ".$is 

Примечание: правильно дезинфицировать ваш $ выбирает, так что вы не имеете SQL Injection

+0

Ну. Это делает только часть моего кода динамической. Мне нужно, чтобы значение изменилось на два места. Я добавил последнюю часть кода, объясняющую, что хочу – frisk0

0

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

<?php 
$opts = Array ('value1','value2','value3','value4'); //select box values which your are passing from ajax call 
$somethingArray = Array('something', 'value1','value4'); //value that you need to match/compare 

$result = array_intersect($opts, $somethingArray); 

$where = ''; 
foreach ($result as $key => $value) { 
    $where .= " AND region = '".$value."'"; 
} 
echo $where; //Output=> AND region = 'value1' AND region = 'value4' 
?> 
+0

У меня есть разные поля выбора, которые я использую для фильтрации. Значение этих блоков выбора хранится в массиве $ opts. Прямо сейчас у меня есть оператор if, который имеет жестко заданные значения для всех параметров. Поэтому, если в поле выбора есть 10 различных опций, мне нужно жестко кодировать 10 разных операторов if. – frisk0

+0

Вы пробовали мое решение ?. Для вашего информационного магазина «somethingElse, something, something2» в массиве $ somethingArray. и проверьте – sAcH

+0

@ user6322087 см. мой ответ – madalinivascu