2017-02-15 15 views
0

Привет У меня есть выпадающее меню, которое подает значение в форму поиска. Существует два критерия поиска. Категория недвижимости & Подкатегория недвижимости. Поиск выполняется хорошо, когда оба выбраны. В категории свойств есть пять вариантов: пустое, жилое, коммерческое, промышленное, сельскохозяйственное. Я хочу структурировать запрос, поэтому, если значение пусто в категории свойств, оно должно отображать все результаты, соответствующие живым, коммерческим, промышленным и сельскохозяйственным. В настоящее время он остается без ответа.Возврат всех результатов, когда поле пусто

Я попробовал два способа, с помощью массивов, а затем структурирование MySQL в массиве .. но проблема заключается в том, чтобы искать в массиве или в переменной в MySQL ...

Ниже HTML-форма

<select class="searchpropertyinputs" name="property_category" id="property_category" onchange="subcategory('property_category', 'property_subcategory');"> 
    <option value="">Property Type</option> 
    <option value="Residential">Residential</option> 
    <option value="Commercial">Commercial</option> 
    <option value="Industrial">Industrial</option> 
    <option value="Agricultural">Agricultural</option> 
</select> 
</br> 

<select class="searchpropertyinputs" name="property_subcategory" id="property_subcategory"> 
    <option value="">Property Subtype</option> 
</select> 
</br> 

PHP

$property_category = ($_GET['property_category']); 

$select = $con->prepare("SELECT * FROM tbl_property WHERE (property_category='$property_category' AND property_subcategory='$property_subcategory') LIMIT {$start}, {$perPage}"); 
$select->setFetchMode(PDO::FETCH_ASSOC); 
$select->execute(); 

Я пытаюсь сделать следующее, но проблема в том, что при выборе значения это переменная в противном случае, если он пустой, то это массив .. он Структура сть запрос проблема

if ($property_category == ""){ 
$myarray[1] = "'Residential'"; 
$myarray[2] = "'Commercial'"; 
$myarray[3] = "'Industrial'"; 
$myarray[4] = "'Agricultural'"; 
$property_category = implode(", ", $myarray); 
} 

$select = $con->prepare("SELECT * FROM tbl_property WHERE property_category IN ($property_category) LIMIT {$start}, {$perPage}"); 
$select->setFetchMode(PDO::FETCH_ASSOC); 
$select->execute(); 
$count = $select->rowCount(); 

желаемый результат сделать поиск на основе пользовательского ввода, но если пользователь ничего (пустое значение) не выберите, а затем дать все результаты, которые существуют в столбце.

это не работает, это не дает никаких результатов

$select = $con->prepare(
"SELECT * FROM tbl_property 
WHERE property_category LIKE 
    CASE WHEN '$property_category' = '' 
    THEN '%' 
    ELSE '$property_category' 
    END CASE 
    LIMIT {$start}, {$perPage}"); 
$select->setFetchMode(PDO::FETCH_ASSOC); 
$select->execute(); 
$count = $select->rowCount(); 
+0

Таким образом, по сути, вы не хотите 'WHERE' положение, когда оба выпадающие не выбран, верно? – BizzyBob

+0

да, я думаю о том, чтобы поставить оператор if внутри запроса, чтобы выполнить поиск в property_category, только когда в нем есть значение. – DragonFire

+0

звучит неплохо. – BizzyBob

ответ

0

это, кажется, работает

$search = array(
    "select" => "SELECT * FROM tbl_property", 
    "where" => "WHERE property_category='$property_category'", 
); 

if (empty($property_category)) { 
    unset($search["where"]); 
} 

$search = implode(' ', $search); 

$select = $con->prepare($search); 
$select->setFetchMode(PDO::FETCH_ASSOC); 
$select->execute(); 
$count = $select->rowCount(); 

это, кажется, работает также

$search = 
    "SELECT * FROM tbl_property " . 
    (empty($property_category) ? "" : "WHERE property_category='$property_category' "); 

$select = $con->prepare($search); 
$select->setFetchMode(PDO::FETCH_ASSOC); 
$select->execute(); 
$count = $select->rowCount(); 

теперь проблема почему я так долго занимаюсь, чтобы понять и что-то делать ...

0

Попробуйте это:

$where = array(); 
$select_query = "SELECT * FROM tbl_property"; 
if (!empty($property_category)) { 
    $where[] = "property_category='$property_category'"; 
} 
$search_query = $select_query; 
if (!empty($where)) { 
    $search_query = $select_query . " Where " . implode(" ", $where); 
} 

$result = $con->prepare($search_query); 
$result->setFetchMode(PDO::FETCH_ASSOC); 
$result->execute(); 
$count = $select->rowCount();