Помогите создать сортировку товаров

ctikmen

Новичок
Доброго времени суток!
При написании курсовика возникла такая проблема. У меня есть сайт на котором есть различные товары по категориям,мне необходимо сделать такие ссылки или кнопки,что бы товар на странице сортировался по возрастанию\убыванию цены

Вот что у меня есть
Главная страница:
PHP:
<!DOCTYPE html>
<html>
<head>
    <title>NI katalog</title>
    <meta charset="utf-8">
    <link href="style/css.css" rel="stylesheet" type="text/css" />
</head>
<body>
   
<ul id="menu">
        <li><a href="index.php">Главная</a></li>
        <li>
                <a href="">Категории</a>
                <ul>
        <?
       $categories = get_cat();
       foreach($categories as $item):
       ?>
        <li>
          <a href="index.php?view=cat&id=<?=$item['cat_id'];?>"><?=$item['name'];?></a>
        </li>
        <?endforeach?>          
                </ul>
        </li>
        <li><a href="">О нас</a></li>
        <li><a href="">Контакты</a></li>
    <li><a href="index.php?view=cart">        
         <div class="cart_details">
         Количество товара: <?=$_SESSION['total_items'];?> | Стоимость:
         <span class="price"><?=number_format($_SESSION['total_price'],2)?>$</span>
         </div>          
         </div>  
         </a>  
     </div>
   </li>
</ul>
         
<table align="center">
    <tr>
        <td>  
           <?php include ($_SERVER['DOCUMENT_ROOT'].'/katalog/views/pages/'.$view.'.php');?>      
        </td>
    </tr>  
</table>  
     
<div align="center">
    <div>&copy; vladchechko.com 2012</div>
</div>
 
 
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
   $(function() {
     if ($.browser.msie && $.browser.version.substr(0,1)<7)
     {
       $('li').has('ul').mouseover(function(){
           $(this).children('ul').css('visibility','visible');
           }).mouseout(function(){
           $(this).children('ul').css('visibility','hidden');
           })
     }
   });        
</script>
 
</body>
</html>
Страница с выводом по категориям:
PHP:
<form>
<select name="price">
  <option>По цене,сначала дорогие</option>
  <option>По цене,сначала дешевые</option>
</select>
</form>
 
<?
foreach($products as $item):
?>
<table align="left" cellpadding="0" cellspacing="10" class="product" border="0">
            <tr>
                <td valign="center">
                    <div><a href="index.php?view=product&id=<?=$item['id']?>"><img src="userfiles/<?=$item['image']?>" alt="" /></a></div>
                    <div class="description">
                        <div class="product-name"><a href="index.php?view=product&id=<?=$item['id']?>"><?=$item['title']?></a></div>
                        <div class="product-price">Цена: <?=$item['price']?> $</div>
                    </div>
                </td>
            </tr>
</table>
 
<?endforeach?>
И все функции
PHP:
<?

include('db_fns.php');
include('cart_fns.php');

session_start();
if(!isset($_SESSION['cart']))
{
    $_SESSION['cart'] = array();
    $_SESSION['total_items'] = 0;
    $_SESSION['total_price'] = '0.00';
    
}

$view = empty($_GET['view']) ? 'index' : $_GET['view'];

switch($view)
{
    case('index'):
       $products = get_products();
    break; 
    
    case('cat'):
       $cat = $_GET['id'];
       $products = get_cat_products($cat);
    break;
    
    case('product'):
       $id = $_GET['id'];
       $product = get_product($id);
       $spec = specifications($id);
    break;
    
    case('add_to_cart'):
       $id = $_GET['id'];
       $add_item = add_to_cart($id);
       $_SESSION['total_items'] = total_items($_SESSION['cart']);
       $_SESSION['total_price'] = total_price($_SESSION['cart']);
       header('Location: index.php?view=product&id='.$id);
    break;
    
    case('update_cart'):
       update_cart();
       $_SESSION['total_items'] = total_items($_SESSION['cart']);
       $_SESSION['total_price'] = total_price($_SESSION['cart']);
       header('Location: index.php?view=cart');
    break;
    
    case('sort_by_price'):
       $cat = $_GET['price'];
       $products = get_cat_products($cat);  
    break;
}

$arr = array('index','cat','product','cart','add_to_cart','update_cart','order');

if(!in_array($view,$arr)) die("ERROR 404!");

include ($_SERVER['DOCUMENT_ROOT'].'/katalog/views/layouts/katalog.php');

?>
PHP:
<?

    function db_connect()
    {
        $host = 'localhost';
        $user = 'katalog_user';
        $pswd = '1234';
        $db = 'katalog';
    
        $connection = mysql_connect($host,$user,$pswd);
        mysql_query("SET NAMES utf8");
        if(!$connection || !mysql_select_db($db,$connection))
        {
            return false;
        }
        return $connection;
    }
    
    function db_result_to_array($result)
    {
        $res_array = array();     
        $count = 0;
        while($row = mysql_fetch_array($result))
        {
            $res_array[$count] = $row;
            $count++;
        }
        return $res_array;
    }
    
    function get_products()
    {
        db_connect(); 
        
        $query = "SELECT * FROM products ORDER BY id DESC";
        
        $result = mysql_query($query);
        
        $result = db_result_to_array($result);
        
        return $result;
    }
 
    
 
    function get_cat_products($cat)//получить продукты по категории
    {
        db_connect(); //подключение к базе
        
        $query = "SELECT * FROM products WHERE cat='$cat' ORDER BY id DESC"; //выборка
        
        $result = mysql_query($query);//переменную помещаем в выборку
        
        $result = db_result_to_array($result);//помещаем в массив что бы с этим работать
        
        return $result;//возвращает результат нащей функции
    }
    
    function get_cat()//функция выбирает категории из таблицы категорий
    {
        db_connect(); //подключение к базе
        
        $query = "SELECT * FROM categories ORDER BY id DESC"; //выборка
        
        $result = mysql_query($query);//переменную помещаем в выборку
        
        $result = db_result_to_array($result);//помещаем в массив что бы с этим работать
        
        return $result;//возвращает результат нащей функции
    }
    
    function get_product($id)
    {
        db_connect();
        
        $query = ("SELECT * FROM products WHERE id='$id' "); 
        
        $result = mysql_query($query);
        
        $row = mysql_fetch_array($result);
        
        return $row;
        
    }
    
    function sort_by_price($cat)//получить продукты по категории
    {
        db_connect(); //подключение к базе
        
        $query = "SELECT * FROM `products` WHERE `cat`='$cat' ORDER BY price DESC"; //выборка
        
        $result = mysql_query($query);//переменную помещаем в выборку
        
        $result = db_result_to_array($result);//помещаем в массив что бы с этим работать
        
        return $result;//возвращает результат нащей функции
    }
    
    
    
    function specifications($id)
    {
        db_connect();
        
        $query = ("SELECT * FROM specifications WHERE id='$id'"); 
        
        $result = mysql_query($query);
        
        $row = mysql_fetch_array($result);
        
        return $row;
        
    }
    /*
    function sort()
    {
        db_connect();
        $sort = (isset($_GET['sort']) ? $_GET['sort'] : "name");
        if($_GET['sort'] == 'price')
        $sort = "SELECT * FROM products ORDER BY price DESC";
    }  
    */
?>
 

С.

Продвинутый новичок
Каков ваш профессиональный уровень в программировании?
 

lagoff

Новичок
Дело в том,что запрос на выборку товаров по цене мне понятен, но я не понимаю как связать функцию сортировки по цене с <select>-ом или кнопкой...
Общее решение следующее. При изменении состояния select'a - пользователь должен быть перенаправлен на ту же страницу но с параметром сортировки в URL'е.
Например: www.site.ru/catalog/list.html?order_mode=price_desc

В скрипте обрабатываете режимы сортировки, превращая значение $_GET['order_mode'] в часть SQL-запроса, отвечающую за сортировку. Например: "ORDER BY price_field DESC"

Изменение состояния селекта можно обработать через атрибут селекта onchange.

Дальше вы и сами разберетесь.
 

ctikmen

Новичок
Общее решение следующее. При изменении состояния select'a - пользователь должен быть перенаправлен на ту же страницу но с параметром сортировки в URL'е.
Например: www.site.ru/catalog/list.html?order_mode=price_desc

В скрипте обрабатываете режимы сортировки, превращая значение $_GET['order_mode'] в часть SQL-запроса, отвечающую за сортировку. Например: "ORDER BY price_field DESC"

Изменение состояния селекта можно обработать через атрибут селекта onchange.

Дальше вы и сами разберетесь.
спасибо :)
 
Сверху