我试图根据我的php文件list.php
中的用户选择值过滤出一个MYSQL表
我的表格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*/'";
}
但是由于可能选择不同的值,我无法弄清楚到底是怎么做到的...... 即使有了解决方案,我也认为这种方法非常重复和愚蠢。 我怎么处理这些事情?
非常感谢您的帮助!谢谢:D
答案 0 :(得分:4)
您的表单不正确。您的select
必须具有name
属性才能将其提交给服务器。
<select name="options[]" multiple>
^^^^^^^^^^^^^^^
<option ...>
...
</select>
请注意名称字段中的[]
。这将告诉PHP接受多个值,使$_POST['options']
成为一个数组本身。那么这很简单:
foreach($_POST['options'] as $option) {
insert_into_db($option);
}
答案 1 :(得分:3)
使用这种方式:
<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
答案 2 :(得分:-1)
你可以试试这个:
<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 ";
?>