我在下面的代码中尝试按国家/地区搜索。在主页上有一个下拉框可以从中选择国家/地区。我的问题是它显示了所选国家/地区的结果,但如果未选择任何内容,则没有结果。
如果没有选择,我希望它显示ALL Country 结果。
如果 country_select 为空,则在 mysql 搜索中使用此代码,则结果为零:
and bam.country='".mysql_real_escape_string(trim($_POST['country_select']))."'
完整代码如下:
$searchsql = "SELECT pp_id, appmt_id, price, max( stay_from )
FROM (
SELECT bp.pp_id, bam.appmt_id, bam.appmt_name, bp.price, bp.stay_from
FROM bsi_apartment_master AS bam, bsi_appmt_features AS baf, bsi_priceplan AS bp
WHERE bam.status=true and baf.appmt_id = bam.appmt_id".$addquery." AND baf.bedroom >=".$this->bedroom." AND baf.bathroom >=".$this->bathroom."
and bam.country='".mysql_real_escape_string(trim($_POST['country_select']))."'
AND bam.appmt_id NOT IN (SELECT appmt_id FROM bsi_bookings WHERE is_deleted = FALSE AND (( '".$this->mysqlCheckInDate."'
BETWEEN checkin_date AND checkin_date AND DATE_SUB(checkout_date, INTERVAL 1 DAY) )
OR ( DATE_SUB('".$this->mysqlCheckOutDate."', INTERVAL 1 DAY) BETWEEN checkin_date AND checkin_date AND DATE_SUB(checkout_date, INTERVAL 1 DAY) )
OR ( checkin_date BETWEEN '".$this->mysqlCheckInDate."' AND DATE_SUB('".$this->mysqlCheckOutDate."', INTERVAL 1 DAY) )
OR ( checkin_date AND DATE_SUB(checkout_date, INTERVAL 1 DAY) BETWEEN '".$this->mysqlCheckInDate."' AND DATE_SUB('".$this->mysqlCheckOutDate."', INTERVAL 1 DAY) )))
AND bam.appmt_id = bp.appmt_id
AND if( ( ".$staycount." NOT BETWEEN bp.stay_from AND bp.stay_to ) = true,
( ".$staycount." NOT BETWEEN bp.stay_from AND bp.stay_to ) AND bp.default_pp !=0,
( ".$staycount." BETWEEN bp.stay_from AND bp.stay_to ) )
order by bp.stay_from desc
) AS t1
GROUP BY appmt_id
order by price ".$this->sorting;
最佳答案
$searchsql = "SELECT pp_id, appmt_id, price, max( stay_from )
FROM (
SELECT bp.pp_id, bam.appmt_id, bam.appmt_name, bp.price, bp.stay_from
FROM bsi_apartment_master AS bam, bsi_appmt_features AS baf, bsi_priceplan AS bp
WHERE bam.status=true and baf.appmt_id = bam.appmt_id".$addquery." AND baf.bedroom >=".$this->bedroom." AND baf.bathroom >=".$this->bathroom;
if(!empty($_POST['country_select']))
{
$searchsql .=" and bam.country='".mysql_real_escape_string(trim($_POST['country_select']))."'";
}
$searchsql.="AND bam.appmt_id NOT IN (SELECT appmt_id FROM bsi_bookings WHERE is_deleted = FALSE AND (( '".$this->mysqlCheckInDate."'
BETWEEN checkin_date AND checkin_date AND DATE_SUB(checkout_date, INTERVAL 1 DAY) )
OR ( DATE_SUB('".$this->mysqlCheckOutDate."', INTERVAL 1 DAY) BETWEEN checkin_date AND checkin_date AND DATE_SUB(checkout_date, INTERVAL 1 DAY) )
OR ( checkin_date BETWEEN '".$this->mysqlCheckInDate."' AND DATE_SUB('".$this->mysqlCheckOutDate."', INTERVAL 1 DAY) )
OR ( checkin_date AND DATE_SUB(checkout_date, INTERVAL 1 DAY) BETWEEN '".$this->mysqlCheckInDate."' AND DATE_SUB('".$this->mysqlCheckOutDate."', INTERVAL 1 DAY) )))
AND bam.appmt_id = bp.appmt_id
AND if( ( ".$staycount." NOT BETWEEN bp.stay_from AND bp.stay_to ) = true,
( ".$staycount." NOT BETWEEN bp.stay_from AND bp.stay_to ) AND bp.default_pp !=0,
( ".$staycount." BETWEEN bp.stay_from AND bp.stay_to ) )
order by bp.stay_from desc
) AS t1
GROUP BY appmt_id
order by price ".$this->sorting;
关于php - 如果搜索为空,如何显示所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22589080/