0

我之前问过这个问题,但我认为我让它太复杂了,如果选择了列表中的值,我想分配一个查询。

<form id="filter" name="filter" method="post" action="">
<select>
  <option value="petrol">Petrol</option>
  <option value="diesel">Diesel</option>
</select>
<p><input name="filter" type="button" value="Filter" /></p>
</form>

下拉式菜单

我想要实现的是如果用户选择汽油运行以下查询

$query = mysql_query("SELECT fuel_type from car WHERE fuel_type = 'petrol'");
4

3 回答 3

2
<form id="filter" name="filter" method="post" action="">
<select id="college" name="fuel" onchange="changeValue();">
  <option value="petrol">Petrol</option>
  <option value="diesel">Diesel</option>
</select>
<p><input name="filter" type="button" value="Filter" /></p>
</form>

如果您想在表单提交中发布值,请像这样使用

$ctext = $_POST['fuel']; 
$list = mysql_query("SELECT fuel_type from car WHERE fuel_type ='$ctext'");
$row = mysql_fetch_array($list);
//process $row

如果不想提交表单,可以在onchange事件中使用jquery... js代码

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
function changeValue() {
    var ctext = $("#college option:selected").val();
    $.ajax({ url: "yourfile.php", 
    data: {"ctext":ctext},
    type: 'post',
    success: function(output) {
        //display output here
      }
    });
}

你的文件.php

<?php
//connect to db
$ctext = $_POST['ctext'];
$list = mysql_query("SELECT fuel_type from car WHERE fuel_type ='$ctext'");
$row = mysql_fetch_array($list);
echo $row['fuel_type'];
?>
于 2012-04-16T05:59:16.743 回答
0

虽然我也建议使用 AJAX 方法,但我只是想明确一点,您不必使用 AJAX 来完成此操作。

如果您的过滤器选项不是太复杂或太多,那么您只需在加载时为任何级别的过滤器树拉取所有可用选项并最初隐藏它们。然后,当用户深入到每个部分时,您会相应地向他们显示下一个部分(通过 javscript)。最后,您可以通过 GET 或 POST 提交包含所有选定表单字段的常规表单。

这也可以通过减少对服务器的调用来有效地节省带宽:)

但是,如果您的选择树变得太复杂,最好只在用户交互时运行 AJAX 请求。

于 2012-04-16T06:03:34.720 回答
0

为您的选择标签命名:

<select name="fuel">
  <option value="petrol">Petrol</option>
  <option value="diesel">Diesel</option>
</select>

然后在你的 PHP 中你可以做一些简单的事情,比如:

<?php
if(isset($_POST['cmdFilter']))
{
  echo "You selected the fuel type: " . $_POST['fuel'];
}
?>

您还可以将选择设置为有一个 id,并使用 JQuery 发送一个 ajax 请求,通过选择它来传递它的值$("#myIdforSelect").val()

附言

一定要清理你的输入;)

于 2012-04-16T03:27:08.363 回答