php elseif无法正常工作

时间:2014-12-30 19:09:31

标签: php sorting

我在产品搜索页面添加了一个排序功能。用户可以选择按价格,升序或降序以及产品名称,升序或降序进行排序。默认值是按PRoduct ID排序。

首先,我检查一下' sortBy'未设置,如果不是我使用ProductID的默认SQL查询排序。其次,我检查一下' $ orderBy'进入GET的变量是NameA2Z'或者' NameZ2A',如果是,我使用三元运算符来相应地分配ASC或DESC。

以下是问题所在,我在下面做同样的事情'否则'声明,只有我检查' $ orderBy是否是' PriceH2L'或者' PriceL2H'但无论我在查询字符串中传递给它,它都永远不会到达。

似乎elseif($_GET["sortOrder"] == "NameA2Z" || "NameZ2A")总是评估为TRUE,无论如何。

$searchTerm = "";
$orderBy = "";
$searchSQL = "";
$searchTerm ="";
$searchTerm = $_GET["searchItem"];


if(!isset($_GET['sortOrder'])){
    $searchSQL = 'SELECT * FROM Products WHERE ProductName LIKE "%' . $searchTerm . '%"     ORDER BY ProductID';    
}
elseif($_GET["sortOrder"] == "NameA2Z" || "NameZ2A"){
    $orderBy = ($_GET["sortOrder"] == "NameZ2A" ? "DESC" : "ASC");
    $searchSQL = 'SELECT * FROM Products WHERE ProductName LIKE "%' . $searchTerm . '%" ORDER   BY ProductName '. $orderBy . ' ' ;
    }
else{
    $orderBy = ($_GET["sortOrder"] == "PriceH2L" ? "DESC" : "ASC");
    $searchSQL = 'SELECT * FROM Products WHERE ProductName LIKE "%' . $searchTerm . '%" ORDER     BY ProductPrice ' . $orderBy  . ' ';
    echo ' Sort from second else is: ' . $orderBy;
 }

以下是HTML以防:

<select id="searchSort" searchterm='<?php echo $searchTerm  ?>'  >
         <option value="husker">Sort results by</option>
        <option value="PriceH2L">Price - Lowest to highest</option>
        <option value="PriceL2H">Price - Highest to lowest</option>
        <option value="NameA2Z">Name - A to Z</option>
        <option value="NameZ2A">Name = Z to A</option>
</select>

1 个答案:

答案 0 :(得分:0)

请注意elseif中的条件:

$_GET["sortOrder"] == "NameA2Z" || "NameZ2A"

这是:$_GET["sortOrder"]等于"NameA2Z",还是字符串"NameZ2A"是真的?

字符串"NameZ2A"将始终为true。您可能想要这样做:

$_GET["sortOrder"] == "NameA2Z" || $_GET["sortOrder"] == "NameZ2A"