我正在尝试使用jQuery / Ajax和PHP / MySQL创建过滤器。
我的HTML中有4个下拉选择,我希望实现这样的目标:
当Ajax成功发布数据时,我的PHP文件会检查值是否为空,因此每个下拉列表都会添加' AND'对SELECT查询的语句,如:
SELECT * from properties WHERE property_id = '$property_id' AND dropdown_value = '$dropdown_value' AND dropdown_value2 = '$dropdown_value2'
所以我可以设置所有变量,只检查发布的值是否为空,所以如果它是空的,则根本不添加查询语句。
这可能吗?
感谢。
修改
当前代码:
$statements = array();
if (isset($_POST['segmento'])) {
$segmento_query = $_POST['segmento'];
$statements[] = " AND property_details.segmento = '$segmento_query' "; //condition for each property
}
if (isset($_POST['cidade'])) {
$cidade_query = $_POST['cidade'];
$statements[] = " AND property_details.cidade = '$cidade_query' ";
}
$filtraSegmento = "SELECT * FROM properties, property_complements, property_details WHERE property_complements.imovel_id = properties.property_id AND property_details.imovel_id = properties.property_id $statements";
答案 0 :(得分:1)
你试过了吗?
$statements = array();
if (isset($POST['param1']) {
$param1 = $POST['param1'];
$statements[] = " property1 = '$param1' "; //condition for each property
}
if (isset($POST['param2']) {
$param2 = $POST['param2'];
$statements[] = " property2 = '$param2' ";
}
//.....more.....
$sql = "SELECT * FROM tbl WHERE ". implode('AND', $statements);
//do something here
已修改:使用$statements
作为字符串
$statements = '';
if (isset($_POST['segmento'])) {
$segmento_query = $_POST['segmento'];
$statements .= " AND property_details.segmento = '$segmento_query' "; //condition for each property
}
if (isset($_POST['cidade'])) {
$cidade_query = $_POST['cidade'];
$statements .= " AND property_details.cidade = '$cidade_query' ";
}
$filtraSegmento = "SELECT * FROM properties, property_complements, property_details WHERE property_complements.imovel_id = properties.property_id AND property_details.imovel_id = properties.property_id $statements";