Фильтр сортировки по цене

Максимка

Новичок
Доброй ночи, появился вопрос:

Есть в базе таблица articles, в нем есть поле price, пытаюсь сделать сортировку по цене, вот форма:
Код:
<form method=get style="display: inline;" name='orderby_form'>
<input type=hidden name='param1' value="<?php print $param1; ?>">
<input type=hidden name='param2' value="<?php print $param2; ?>">
<select name=orderby onChange="orderby_form.submit();">
<option value='name' <?php print $selected[$orderby]; ?>>Name</option>
<option value='price_asc' <?php print $selected[$orderby]; ?>>Price (Low - High)</option>
<option value='price_desc' <?php print $selected[$orderby]; ?>>Price (High - Low)</option>
</select>
</form>
использую php код присланный для работы:

Код:
<?php
$selected = array();
$orderby = $_GET[orderby];
if(!$orderby) { $orderby = 'price_asc'; }
if($orderby == 'price_asc')
    $orderby_query = "order by price asc";
}
else if($orderby == 'price_desc')
{
    $orderby_query = "order by price desc";
}
else if($orderby == 'name')
{
    $orderby_query = "order by name";
}
else { unset($orderby); }

// If $orderby was valid set the selected sort option for the form.

if($orderby)
{
    $selected[$orderby] = 'selected';
}

$sql = "select articles.price from price $orderby_query";
?>
и сортировка не работет, может быть вы подскажите другое решение, попроще. Спасибо
 

vasinsky

Новичок
код присланный для работы:
боюсь спросить.., присланный кем? (братьями по разуму?)

echo $sql;

не прояснит?

вообще сыровато написано

есть момент, когда $orderby_query вообще не будет инициализирована, но попытка засунуть её в sql запрос остаётся;

а по имени сортирует?

поле для цены какой тип имеет в таблице?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Максимка, код стоит пересмотреть, начиная с второй строки.

Да и текст SQL запроса некорректен, ты выбираешь там данные из таблицы, сообщив парсеру SQL совершенно непонятный alias.

PS: того, кто прислал тебе это говно - надо расстрелять с пристрастием.
 

Максимка

Новичок
Да, вы правы, может быть покажите начинающим и нуждающимся, как сделать сортировку по цене?

есть таблица atricles, в ней есть price, надо по нажатию на кнопку делать сортировку, пробовал следущее:

Код:
<?php
               $query=mysql_query("select articles.price from title order by price ASC")or die(mysql_error());
               while($row=mysql_fetch_array($query)){
               $id=$row['id'];
               ?>
 
                     <tr>
                 
  <td><?php echo $row['id'] ?></td>
  <td><?php echo $row['price'] ?></td>
  </tr>
 
              <?php } ?>
весь этот файл я закинул в отдельный файл, назвал его asc.php и делаю вот так:

HTML:
<a class="btn btn-info" href="asc.php">Ascending Price</a>
 

vasinsky

Новичок
такое не стоит показывать всем.
ошибку логируйте, а посетителям выводит текст с челобитной.

select articles.price from title order by price ASC
вы понимаете что делаете?

вы выбираете поле price указывая, что оно принадлежит таблице articles, при этом данные читаете из таблицы title

это как у вас так получилось? вы чем руководствуетесь?
 

Максимка

Новичок
Код:
<?php
$query=mysql_query("select articles.price from articles order by price ASC")or die(mysql_error());
while($row=mysql_fetch_array($query)){
$id=$row['id'];
?>

<tr>

<td><?php echo $row['id'] ?></td>
<td><?php echo $row['price'] ?></td>
</tr>

<?php } ?>
руководствуюсь тем что уже ничего не соображаю)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Максимка, осталось понять теперь, что ты выбираешь не все данные, так как используешь ты id и price, а выбираешь только price.
 

Максимка

Новичок
vasinsky, в итоге ничего, без изменений

c0dex, мне и надо сортировать только по price от высокой цены до низкой и обратно, да Вы правильно поняли, не все, знать бы как все price выберать

Ребят, я сделал вывод статей, у них есть цена, как мне нажав на кнопку сделать сортировку по цене от высокой до минимальной для начала? подскажите с решением
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Максимка, купи книгу по php, Котерова. Прочитай, и потом уже начинай писать код, ты вообще не понимаешь, что делаешь. Тебе объяснить можно, только это займет такую массу времени, что будет сравнимо с парой глав той книги.

Открой для себя $_GET параметры, и в частности, пойми то, что я написал. Ты сделал SELECT 1 поля, а в цикле ты выводишь 2

Какой к тому же смысл в этой строке: $id=$row['id']; ? Ты нигде не используешь $id
 
Сверху