繁体   English   中英

按产品类型过滤结果,按价格排序列表(PHP / SQL)

[英]Filter results by Product Type and Sort List by Price (PHP/SQL)

我正在学习如何创建电子商务网站。 我试图找出如何按价格订购产品结果。 下面的代码是一个菜单列表,用于过滤特定的产品类别或查看所有产品的选项-适用的代码。

我不确定如何添加代码以“按价格排序”(从低到高,从高到低)。 我尝试创建一个名为priceList的函数并在函数categoryList内调用(该函数查询数据库中的哪种产品类型或查看所有产品),但是不起作用。

    function priceList() {
      $con = getConnection();

     if($pUserCat == "lowToHigh") {
        $sqlQuery = "SELECT Price from Products
         ORDER BY Price ASC";
     } elseif($pUserCat == "highToLow") {
        $sqlQuery = "SELECT Price from Products
         ORDER BY Price DESC";

     // Execute Query -----------------------------           
            $result = mysqli_query($con, $sqlQuery);
      if(!$result) {
       echo "Cannot do query" . "<br/>";
       exit;
      }

      $row = mysqli_fetch_row($result);
      $count = $row[0];

      if ($count > 0) {
       echo "Query works" . "<br/>";
      } else {
       echo "Query doesn't work" ."<br/>";
      }

              // Display Results -----------------------------

      $num_results = mysqli_num_rows($result);

      for ($i=0; $i<$num_results; $i++) {
       $row = mysqli_fetch_assoc ($result);
         // print_r($row);
        echo '<img src="data:image/jpeg;base64,'.base64_encode($row['Image']).'" />';
        echo "Price: " . stripslashes($row['Price']);
      }

      // Close connection
      closeConnection($con);
}

形成

    <!--category and price form ------------------------- -->
    <form action="register_script.php" name="frm" method="post">
        <select name="category" id="category">
            <option value="viewall">View All</option>
            <option value="dress">Dress</option>
            <option value="athletic">Athletic</option>
            <option value="sandals">Sandals</option>
       </select>

      <input type="submit" value="Go" />

  </form>


   <form action="register_script.php" name="frm" method="post">

        <select name="price" id="price">
            <option value="lowToHigh">Low to High</option>
            <option value="highToLow">High to Low</option>
       </select>

       <input type="submit" name="orderPrice" value="orderPrice" />

    </form>
    </div>

的PHP

<?php
    function categoryList($pUserCat=false) {
    echo "I am in category list" . "<br/>";

    $con = getConnection(); 

     $sqlQuery = "SELECT * from Products";

    if($pUserCat == "athletic") {
       $sqlQuery = "SELECT * from Products
                    WHERE ProductType='athletic'";
    } elseif ($pUserCat == "dress") {
        $sqlQuery = "SELECT * from Products
                    WHERE ProductType='dress'";
    } elseif ($pUserCat == "sandals") { 
            $sqlQuery = "SELECT * from Products
                    WHERE ProductType='sandals'";
    } elseif ($pUserCat == "viewall") {                 
       $sqlQuery = "SELECT * from Products";
    }

    // Execute Query -----------------------------           
        $result = mysqli_query($con, $sqlQuery);
        if(!$result) {
            echo "Cannot do query" . "<br/>";
            exit;
        }

        $row = mysqli_fetch_row($result);
        $count = $row[0];

        if ($count > 0) {
            echo "Query works" . "<br/>";
        } else {
            echo "Query doesn't work" ."<br/>";
        }

          // Display Results -----------------------------

        $num_results = mysqli_num_rows($result);

        for ($i=0; $i<$num_results; $i++) {
            $row = mysqli_fetch_assoc ($result);
           // print_r($row);
          echo '<img src="data:image/jpeg;base64,'.base64_encode($row['Image']).'" />';
          echo "Price: " . stripslashes($row['Price']);
        }


         // priceList();
        $priceOrder = getPriceBtn(); //$priceOrder holds value of option selected in         
     //price order menu
    priceList($priceOrder);
        // Close connection
        closeConnection($con);

}


function getPriceBtn() {    
    //echo "<br/>"."I am calling getPriceBtn function" . "<br/>";
    $priceBtn = $_POST["orderPrice"];           // price button
    return $price;
    //echo $priceBtn;
}

?>

替代文字

我认为您需要将$ pUserCat传递给函数priceList($ pUserCat);

提示,您应该有一个默认查询,例如从高到低,如果选择了其他选项,请运行该查询:

$sqlQuery = "SELECT Price FROM Products ORDER BY Price DESC";

if($pUserCat == "lowToHigh") {
   $sqlQuery = "SELECT Price FROM Products ORDER BY Price ASC";
}

您也可以将其重写为:

$ sqlQuery =“选择*来自产品”; //这是必需的吗?

if($pUserCat == "athletic") {
   $sqlQuery = "SELECT * from Products
                WHERE ProductType='athletic'";
} elseif ($pUserCat == "dress") {
    $sqlQuery = "SELECT * from Products
                WHERE ProductType='dress'";
} elseif ($pUserCat == "sandals") { 
        $sqlQuery = "SELECT * from Products
                WHERE ProductType='sandals'";
} elseif ($pUserCat == "viewall") {                 
   $sqlQuery = "SELECT * from Products";
}

像这个categoryList($ pUserCat):

if($pUserCat != 'viewall') {
   $sqlQuery = "SELECT * FROM Products WHERE ProductType='%s'";
   $sqlQuery = sprintf($sqlQuery, $pUserCat);
} else {
   $sqlQuery = "SELECT * from Products";
}

局部函数变量不共享。 如果在函数中定义了函数变量,则您从该函数中调用的函数将无法访问父级的局部变量,这就是将它们称为“局部”的原因。 您需要将变量作为参数传递:

定义时:

function priceList( $pUserCat ) {
    ...
}

致电时:

priceList( $pUserCat );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM