ВЫБОР MYSQL с выбранными пользователем значениями ОПЦИИ

Я пытаюсь отфильтровать таблицу MYSQL по выбранным пользователем значениям в моем php-файле. list.php

Мой стол users есть поле stdYrв котором элементы имеют значения S00, S01, ... S40,

в теле HTML у меня есть этот кусок кода:

<form method="post" role="form" action="list.php">
<div>
<select multiple>
<option value="all">Select</option>
<option value="S00">74</option>
<option value="S01">75</option>
<option value="S02">76</option>
...
<option value="S40">114/option>
</select>
<button type="submit"></button>

</div>
</form>

А потом, я хочу выбрать те, с выбранным stdYr ценности.
Подход, который я мог придумать, заключается в передаче значений option через $_POST:

if(isset($_POST['S00']) || isset($_POST['S11']) || ...
... || isset($_POST['S40'])) {
/*some code to get only those set values*/
$query="SELECT * FROM users WHERE stdYR = '/*some stuff*/'";
}

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

Я очень ценю вашу помощь! Спасибо

1

Решение

Ваша форма неверна. Ваш select ДОЛЖЕН иметь name атрибут для его отправки на сервер.

<select name="options[]" multiple>
^^^^^^^^^^^^^^^
<option ...>
...
</select>

Обратите внимание [] в поле имени. Это скажет PHP принять несколько значений, делая $_POST['options'] сам массив. Тогда это просто вопрос:

foreach($_POST['options'] as $option) {
insert_into_db($option);
}
4

Другие решения

Используйте этот способ:

<form method="post" role="form" action="list.php">
<div>
<select name="MyOptions[]" multiple>
<option value="all">Select</option>
<option value="S00">74</option>
<option value="S01">75</option>
<option value="S02">76</option>
...
<option value="S40">114/option>
</select>
<button type="submit"></button>

</div>
</form>

print '<pre>';
print_r($_POST);
$selectOption = $_POST['MyOptions']; //get post result and then work as you wish
4

Вы можете попробовать это:

<select name="stdYR[]" multiple>

<?php
$stdYR = $_POST['stdYR'];
$stdYR_ct = count($stdYR);
$i=0;
while($i < $stdYR_ct){
$stdYR_SQL .= "'$stdYR[$i]',";
$i++;
}
if (preg_grep("/All/i", $stdYR) or ($stdYR_ct < 1)){
$stdYR_SQL = "";
}else{
$stdYR_SQL = eregi_replace(",$",'',$stdYR_SQL);
$stdYR_SQL = " AND stdYR IN($stdYR_SQL)";
}

$query = "SELECT * FROM users WHERE 1=1 $stdYR_SQL ";
?>
-1
По вопросам рекламы [email protected]