2012-04-16 82 views
0

我問這個問題之前,但我想我做到了太複雜了,我想如果選擇從列表中的值來分配查詢。在賦值語句下拉列表PHP

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

然後:

<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> 

drop down menu

什麼我想要實現,如果用戶選擇汽油運行下面的查詢

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

所以你會希望有基於先前選擇具有'options'另一個'select'? – 2012-04-16 03:26:57

+0

是的,我有一個汽車列表,顯示所有汽車'select * from car'現在我想允許用戶使用菜單 – 2012-04-16 03:28:41

+0

過濾掉這些結果所有這些都是在不刷新頁面的情況下完成的嗎? – 2012-04-16 03:29:27

回答

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 
     } 
    }); 
} 

yourfile.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']; 
?> 
0

給你選擇的標籤名稱是你的PHP你可以做一些簡單的事情:

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

您還可以設置選擇有一個ID而不是和使用JQuery給予通過$("#myIdforSelect").val()

選擇它PS

一定要淨化你的輸入發送一個Ajax請求傳遞的價值;)

+3

這讓我想起[Little Bobby Tables] (http://xkcd.com/327/) – 2012-04-16 03:29:40

+0

洛爾,只是想幫助他走上正軌。 給孩子們的提示:一定要清理所有輸入! – Menztrual 2012-04-16 03:31:16

0

雖然我也建議AJAX方法,我只想說清楚,你不必使用AJAX來實現這一點。

如果您的過濾選項都不太複雜或很多,那麼你可以簡單地做了負載的過濾器樹的任何級別的所有可用選項的拉動和最初隱藏起來。然後,當用戶向下鑽入每個部分時,相應地向他們展示下一個(通過javscript)。最後,您可以通過GET或POST提交所有選定表單域的常規表單。

可以通過運行服務器也:)

少呼叫能有效節省帶寬,但如果你選擇樹變得太複雜,它可能是最好只運行在用戶交互AJAX請求。