MYSQL SELECT与用户选择的OPTION值

时间:2014-12-16 15:39:18

标签: php mysql html-select

我试图根据我的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

3 个答案:

答案 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 ";
?>