2012-04-16 2 views
0

Ранее я задавал этот вопрос, но я думаю, что я сделал его слишком сложным, я хочу назначить запрос, если выбрано значение из списка.присваивать оператор выпадающему списку PHP

<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

Итак, вы хотите иметь другой 'select' с' options' на основе предыдущего выбора? –

+0

Да, у меня есть список автомобилей, который показывает все автомобили 'select * from car', теперь я хочу разрешить пользователю отфильтровывать эти результаты с помощью меню –

+0

И все, что сделано без обновления страницы? –

ответ

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 

Если вы не хотите, чтобы отправить форму, вы можете использовать JQuery в OnChange событие ... 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

Дайте выбрать тег имя:

<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']; 
} 
?> 

Вы также можете установить выбрать, чтобы иметь идентификатор, а и использовать JQuery для отправки запроса Ajax передавая ему значение, давая выбрав его $("#myIdforSelect").val()

PS

Обязательно продезинфицируйте ввод ;)

+3

Это напоминает мне [Маленькие столы в стиле Бобби] (http://xkcd.com/327/) –

+0

Lol, просто пытаясь помочь ему на правильном пути. Примечание для детей: Обязательно очистите все входные данные! – Menztrual

0

Хотя я хотел бы также предложить метод AJAX, я просто хочу дать понять, что вы не должны использовать AJAX для этого.

Если параметры вашего фильтра не слишком сложны или много, то вы можете просто сделать тягу для всех доступных параметров для любого уровня дерева фильтра при загрузке и скрыть их вначале. Затем, когда пользователь разворачивается в каждый раздел, вы показываете им следующий (через javscript). В конце вы можете просто отправить регулярную форму со всеми выбранными полями формы через GET или POST.

Это может эффективно экономить пропускную способность, запустив меньше вызовов на сервер также :)

НО если ваш выбор дерева становится слишком сложным, то может быть лучше просто запустить запрос AJAX на взаимодействие с пользователем.

Смежные вопросы