首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ajax、PHP、Javascript、智能解决方案

Ajax、PHP、Javascript、智能解决方案
EN

Stack Overflow用户
提问于 2009-10-13 09:17:39
回答 4查看 513关注 0票数 0

我目前正在创建一种“分类”网站,当用户进入网站时,他/她能够在下拉列表中选择例如“车辆”,然后选择里程,年份,价格范围等。

这就是我的问题所在,我已经设法使用Ajax来调用php脚本来与db取得联系,然后php脚本检查mysql db的搜索条件并返回结果。但是,我需要让它尽可能的“聪明”……

我如何创建一个函数或一个循环来检查用户选择的类别,然后查看用户是否制定了价格或里程等规范,然后构建一个query_string发送给php代码,然后php代码检查mysql数据库进行搜索?

下面是Ajax文件中的一小段代码:

代码语言:javascript
复制
//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文件的数组中的所有元素都没有用值填充,那么就会出现错误……如果数组为空,则脚本将崩溃...

对于如何轻松解决这个问题,有什么建议吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-10-13 17:23:55

为什么不在用户选择时将item->值添加到数组中(使用jQuery),并将此数组传递给php?

在PHP中分解数组并检查每个元素?

票数 3
EN

Stack Overflow用户

发布于 2009-10-13 09:23:08

下面是上面的ajax代码调用的PHP代码:

代码语言:javascript
复制
    $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;
票数 0
EN

Stack Overflow用户

发布于 2009-10-13 09:51:50

创建如下所示的泛型方法

代码语言:javascript
复制
function getElementValue(id)
{
   if(document.getElementById(id) != null) 
   {
     return document.getElementById(id).value;
   }
}

然后为您的dropdowns指定唯一的id,如catagory1为10,然后使用循环迭代它,并使用该方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1559093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档