我目前正在创建一种“分类”网站,当用户进入网站时,他/她能够在下拉列表中选择例如“车辆”,然后选择里程,年份,价格范围等。
这就是我的问题所在,我已经设法使用Ajax来调用php脚本来与db取得联系,然后php脚本检查mysql db的搜索条件并返回结果。但是,我需要让它尽可能的“聪明”……
我如何创建一个函数或一个循环来检查用户选择的类别,然后查看用户是否制定了价格或里程等规范,然后构建一个query_string发送给php代码,然后php代码检查mysql数据库进行搜索?
下面是Ajax文件中的一小段代码:
//Browser Support Code
function ajaxFunction(){
var ajaxRequest; // The variable that makes Ajax possible!
try{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e){
// Internet Explorer Browsers
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
// Create a function that will receive data sent from the server
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
var ajaxDisplay = document.getElementById('cont');
ajaxDisplay.innerHTML = ajaxRequest.responseText;
}
}
var category = document.getElementById('nav_category_list').value;
var city = document.getElementById('nav_city_list').value;
var querystring = document.getElementById('nav_querystring').value;
var cars_price_from = document.getElementById('cars_price_from').value;
var cars_price_to = document.getElementById('cars_price_to').value;
var cars_year_from = document.getElementById('cars_yr_from').value;
var cars_year_to = document.getElementById('cars_yr_to').value;
var cars_mileage_from = document.getElementById('cars_mile_from').value;
var cars_mileage_to = document.getElementById('cars_mile_to').value;
var cars_grbx = document.getElementById('cars_grbx').value;
var cars_fuel = document.getElementById('cars_fuel').value;
var send_query = "?category=" + category + "&city=" + city + "&cars_price_from=" + cars_price_from + "&cars_price_to=" + cars_price_to + "&cars_year_from=" + cars_year_from + "&cars_year_to=" + cars_year_to + "&cars_mileage_from=" + cars_mileage_from + "&cars_mileage_to=" + cars_mileage_to + "&cars_grbx=" + cars_grbx + "&cars_fuel=" + cars_fuel +"&querystring=" + querystring;
ajaxRequest.open("GET", "bincgi/ajax-example.php" + send_query, true);
ajaxRequest.send(null);
}编辑后添加:
我没有时间学习jQuery。很抱歉,伙计们,当涉及到这个…的编码时,你们能给我指出正确的方向吗
做我想做的事情的“最佳”方式是什么?
此外,如果我发送到php文件的数组中的所有元素都没有用值填充,那么就会出现错误……如果数组为空,则脚本将崩溃...
对于如何轻松解决这个问题,有什么建议吗?
发布于 2009-10-13 17:23:55
为什么不在用户选择时将item->值添加到数组中(使用jQuery),并将此数组传递给php?
在PHP中分解数组并检查每个元素?
发布于 2009-10-13 09:23:08
下面是上面的ajax代码调用的PHP代码:
$category = $_GET['category'];
$city = $_GET['city'];
$querystring = $_GET['querystring'];
// Escape User Input to help prevent SQL Injection
$category = mysql_real_escape_string($category);
$city = mysql_real_escape_string($city);
$querystring = mysql_real_escape_string($querystring);
$cars_price_from = $_GET['cars_price_from'];
$cars_price_to = $_GET['cars_price_to'];
$cars_year_from = $_GET['cars_year_from'];
$cars_year_to = $_GET['cars_year_to'];
$cars_mileage_from = $_GET['cars_mileage_from'];
$cars_mileage_to = $_GET['cars_mileage_to'];
$cars_gearbox = $_GET['cars_grbx'];
$cars_fuel = $_GET['cars_fuel'];
//build query
$query = "SELECT * FROM cars_db WHERE price BETWEEN '$cars_price_from' AND '$cars_price_to' AND year BETWEEN '$cars_year_from' AND '$cars_year_to' AND mileage BETWEEN '$cars_mileage_from' AND '$cars_mileage_to' AND gearbox = '$cars_gearbox' AND fuel = '$cars_fuel'";
//Execute query
$qry_result = mysql_query($query) or die(mysql_error());
//Build Result String
$display_table = "<table class='ad_container'>";
// Insert a new row in the table for each result
while($row = mysql_fetch_array($qry_result)){
if ($row['area_id']=='1') {$row['area_id']="Göteborg";}
$display_table .= "<tr>";
$display_table .= "<td width='110' rowspan='2'>BILD</td>";
$display_table .= "<td width='377' height='15'>$row[headline]</td>";
$display_table .= "<td width='98' rowspan='2'>$row[area_id]</td>";
$display_table .= "<td width='67' rowspan='2'>$row[insert_date]</td>";
$display_table .= "</tr>";
$display_table .= "<tr>";
$display_table .= "<td height='15'>$row[price]:-</td>";
$display_table .= "</tr>";
}
//echo "Query: " . $query . "<br />";
$display_table .= "</table>";
echo $display_table;发布于 2009-10-13 09:51:50
创建如下所示的泛型方法
function getElementValue(id)
{
if(document.getElementById(id) != null)
{
return document.getElementById(id).value;
}
}然后为您的dropdowns指定唯一的id,如catagory1为10,然后使用循环迭代它,并使用该方法。
https://stackoverflow.com/questions/1559093
复制相似问题