我似乎無法找出正確的方法來創建一個searchfiltering函數,將一個擴展的WHERE語句推送(正確的單詞?)爲SELECT查詢。用php搜索過濾所選內容
我有這樣的一段代碼,顯示廣告的列表:
$where = isset($catid) ? ' AND ad.category = '.$catid.'' : '';
$row = $db->dbh->query('SELECT ad.*,
(SELECT img.image FROM '.$config->db_prefix.'_images AS img
WHERE img.aid = ad.aid LIMIT 1) AS img
FROM '.$config->db_prefix.'_adverts ad
WHERE ad.approved = 1 '.$where.'');
比方說,我想在一個特定的類別F.X.查看所有廣告電視(編號5),然後在該類別中,我希望顯示給定價格範圍內(100 - 800)內的所有廣告。 我不知道如何擴展我的WHERE語句來處理這個問題,以及我應該如何從我的HTML中完成。 希望我的問題是可以理解的。在廣告表
我的數據庫結構是這樣的:
aid int(11)
fid int(11)
ad_type int(11)
title varchar(255)
text tinytext
price decimal(10,2)
category int(11)
friends_allow int(11)
cr_date int(11)
expiry_date int(11)
approved int(1)
ip varchar(255)
email varchar(255)
zip_for_pickup int(11)
views int(11)
SOLUTION
$filters = array();
if(!empty($post_fields['cat']) && $post_fields["cat"] != "all") {
$category = $post_fields['cat'];
$filters[] = '(category = ' . $category .')';
}
if(!empty($post_fields['search_field'])) {
$title_and_text = $post_fields['search_field'];
$filters[] = '(title LIKE "%' . $title_and_text .'%" OR text LIKE "%' . $title_and_text .'%")';
}
if(!empty($post_fields['price_min_field'])) {
if(!empty($post_fields['price_max_field'])) {
$filters[] = '(price >= '. $post_fields['price_min_field'].' AND price <= '. $post_fields['price_max_field'] .')';
} else {
$filters[] = '(price >= '. $post_fields['price_min_field'].')';
}
}
if(!empty($post_fields['distance'])) {
$adverts = new Adverts();
$filters[] = '('. $adverts->find_geo_location($post_fields["userzip"], $post_fields["distance"]) .')';
}
$filter = implode(' AND ', $filters);
而你希望我們只是猜測你的數據庫的結構? – Strawberry 2013-03-20 10:39:12
對不起!問題用結構更新。 – 2013-03-20 10:48:13