<select> <option>和与之关联的操作</option> </select>

时间:2011-06-06 10:27:11

标签: php javascript html postgresql

我正在写一个预订系统。在主页面上,我会选择类别,查看可预订的设备。 例如,我有这样的代码:

<select>
        <option value = "a">A</option>
        <option value = "b">B</option>
        <option value = "c">C</option>
        <option value = "d">D</option>
        <option value = "e">E</option>
</select>

我希望每个选项都与对数据库的单独查询相关联,这是在屏幕上动态显示查询的结果。

如果您能向我展示一些示例代码,那就太棒了。

此致

3 个答案:

答案 0 :(得分:0)

$query = mysql_query("SELECT * FROM choices");
while($row=mysql_fetch_assoc($query)) {
  echo '<option value="'.$row['value'].'">'.$row['value'].'</option>';
}

如果您需要对每个选项进行单独查询,则代码不会发生太大变化:

$query = mysql_query("(SELECT * FROM choices) UNION (SELECT * FROM choices1) [etc]");
while($row=mysql_fetch_assoc($query)) {
  echo '<option value="'.$row['value'].'">'.$row['value'].'</option>';
}

答案 1 :(得分:0)

你的问题分为两部分; 1 - 检测要运行的查询,2 - 动态显示结果。

第1部分:检测要运行的查询:

根据硬编码选项和查询参数,使用上面的代码,您可以使用以下代码确定要运行的查询:

对于HTML部分,作为表单的一部分,按上面的方式创建选择(但使用名称)

<select name="querySelect">
    <option value="a">A</option>
    <option value="b">B</option>
</select>

在PHP中:

$querySelect = $_GET['querySelect'];
switch($querySelect)
{
    case 'a':
        $sql = "SELECT * FROM TableA";
        break;
    case 'b':
        $sql = "SELECT * FROM TableB";
        break;
}

$results = mysql_query($sql);

第2部分:动态显示结果

使用$results,您对数据的处理非常取决于您想要实现的目标。在最基本的级别,您可以执行以下操作以动态显示结果表:

if(mysql_num_rows($results) > 0)
{
    $header = false;
    print "<table>"

    while($row = mysql_fetch_assoc($results))
    {
        if(!$header)
        {
            $headings = array_keys($row);
            print "<tr>";
            for($i=0;$i<count($headings);$i++)
            {
                print "<th>".htmlspecialchars($headings[$i])."</th>";
            }
            print "</tr>";

            $header = true;
        }

        print "<tr>";

        foreach($row as $value)
        {
            print "<td>".htmlspecialchars($value)."</td>";
        }

        print "</tr>";
    }

    print "</table>"
}
else print "<h1>No Results Found!</h1>";

mysql_free_result($results);

我的答案中还有很多内容,因为我无法说明需要什么样的细节。您还需要涵盖与MySQL连接,错误处理,表格格式等内容......

<强>更新 嗯,非常有兴趣知道为什么这个被低估了。如果有人可以在评论中解释我误解了问题或误导了用户,我将不胜感激。

答案 2 :(得分:0)

如果您使用jQuery,代码可能看起来像

<select id="select_id">
    <option value = "a">A</option>
    <option value = "b">B</option>
    <option value = "c">C</option>
    <option value = "d">D</option>
    <option value = "e">E</option>
</select>
<script type="text/javascript">
    $('#select_id').change(function(e) {
        // this code send selected value to the server
        $.post('url', {selected_value: this.value}, function(response) {
            // handle the server's response
        });
    });
</script>

在服务器端获取$ _POST中的值并进行查询。请记住 - 不要相信来自客户端的数据。你永远不知道谁在那边。始终检查传入的数据,不要使用这样的结构

$sql = "SELECT * FROM table_name WHERE name = '{$_POST['selected_value']}'";

因为可能有任何字符串,包括那些可以删除所有数据库,清除数据等等。