2016-04-24 51 views
-1

所以问题在于我试图改变产品排序的代码,页面没有加载atm,如果我注释掉_GET排序代码只需更改一个结果变量,然后按例如排序价格那么工作,谢谢!按价格排序,名称脚本不能正常工作... PHP和MySQL

<?php 
    require 'functions.php'; 
?> 


<html> 
<head> 
    <link rel="stylesheet" type="text/css" href="stylesheet.css"> 
</head> 

<body> 
    <center> 
     <a href="main.php"><img style="position: relative; top:50px" src="logo.png"/></a> 
    </center> 
<hr> 
    <?php cart(); ?> 
    <div id="shopping_cart"> 
     <span style="float:left;">Welcome Guest | Total Items: <?php total_items();?> <b style="colour:blue;">| Total: £<?php total_price(); ?></b> <a href="cart.php">Go to Cart: </a></span> 
    </div> 

    <div class="menu"> 
     <ul> 
      <li class="select"><a href="main.php">HOME</a></li> 
      <li class="select"><a href="cart.php">BASKET </a></li> 
      <li class="select"><a href="summary.php">OUR WORLD </a></li> 
     </ul> 
     <div id="form"> 
      <form method="get" action="results.php" enctype="multipart/form-data"> 
       <input type="text" name="user_query" placeholder="Search a Product"/> 
       <input type="submit" name="search" value="Search"/> 
      </form> 
     </div> 
    </div> 

    <br> 
    <br> 
    <br> 
     <select name="menu" id="drop"> 
      <option>-- Select a filter --</option> 
      <option value="main.php?sort=name">Name A - Z</option> 
      <option value="main.php?sort=pasc">Price Low-High</option> 
      <option value="main.php?sort=pdesc">Price High-Low</option>  
     </select> 


    <script type="text/javascript"> 
      var sortmenu = document.getElementById('menu'); 
      sortmenu.onchange = function() { 
       window.open(this.options[ this.selectedIndex ].value, "_self"); 
      }; 
    </script> 

    <?php 
     $con = mysqli_connect(hello); 
     $query = "SELECT * FROM MrPiece"; 
     #$result = mysqli_query($con, $query); 

     $ip=getIp(); 

     $result = mysqli_query($con, "SELECT * FROM MrPiece ORDER BY ID ASC"); 

      if(isset($_GET["sort"])){ 
      if($_GET["sort"]=='pasc'){ 
       $result = ($con,"SELECT * FROM MrPiece ORDER BY Price ASC"); 
      }  
      elseif($_GET["sort"]=='pdesc'){ 
       $result = ($con,"SELECT * FROM MrPiece ORDER BY Price DESC"); 
      } 
      elseif($_GET["sort"]=='name'){ 
       $result = ($con, "SELECT * FROM MrPiece ORDER BY Name ASC"); 
      } 

      } 

     if(mysqli_num_rows($result) > 0) { 
      while($row = mysqli_fetch_assoc($result)) { 
       $pro_id = $row['ID']; 
       $product_name = $row['Name']; 
       $product_price = $row['Price']; 
       $product_image = $row['Image']; 

       echo "<div id='products_box'>"; 
       echo "<div id='single_product'>"; 

       echo "<a href='details.php?pro_id=$pro_id'><img src='$product_image' style='height:250px; width:180px'></a> <br>"; 
       echo "<a href='details.php?pro_id=$pro_id'>$product_name</a><br>"; 
       echo "£ $product_price <br>"; 
       echo "<a href='main.php?add_cart=$pro_id'><button style='float: center;'>Add to cart</button></a>"; 

       echo "</div>"; 
       echo "</div>"; 
      } 
     } 
     else {echo "No results";} 
     mysqli_close($con); 
    ?> 
</body> 

<html> 
+0

'$ result =($ con,“SELECT * FROM MrPiece ORDER BY Price ASC”)'missing a function-name –

回答

0

您已经错过了条件内部的mysqli_query函数。

if(isset($_GET["sort"])){ 
    if($_GET["sort"]=='pasc'){ 
     $result = mysqli_query($con,"SELECT * FROM MrPiece ORDER BY Price ASC"); 
    } 
    elseif($_GET["sort"]=='pdesc'){ 
     $result = mysqli_query($con,"SELECT * FROM MrPiece ORDER BY Price DESC"); 
    } 
    elseif($_GET["sort"]=='name'){ 
     $result = mysqli_query($con, "SELECT * FROM MrPiece ORDER BY Name ASC"); 
    } 
} 

然而,这整个部分可重构下来是这样的:?

$query = "SELECT * FROM MrPiece ORDER BY ID ASC"; 

if(isset($_GET["sort"])){ 
    if($_GET["sort"]=='pasc'){ 
     $query = "SELECT * FROM MrPiece ORDER BY Price ASC"; 
    } 
    elseif($_GET["sort"]=='pdesc'){ 
     $query = "SELECT * FROM MrPiece ORDER BY Price DESC"; 
    } 
    elseif($_GET["sort"]=='name'){ 
     $query = "SELECT * FROM MrPiece ORDER BY Name ASC"; 
    } 
} 

$result = mysqli_query($con, $query); 
+0

谢谢,我理解了这个问题并已修复它,但现在我得到一个问题, ,但现在的页面现在可以工作,只要我从下拉菜单中选择一个选项进行排序,没有任何变化 – user5923623

+0

那么,URL是否更新?例如。你被带到一个页面,如'?sort = name' –

+0

不,它不是,我没有sort.php这样的页面,这是否意味着我需要制作一个这样的页面?即时通讯对不起,我对此非常陌生 – user5923623

-1

main.php排序= price_asc,price_desc,name_asc等,然后爆炸$ _GET你会留下列数组索引0处的名称和数组索引1中的顺序,然后可以在mysql/mysqli查询中使用它们。