выпадающее меню для сортировки результатов запроса на странице php - PullRequest
0 голосов
/ 19 февраля 2012

У меня есть простая php-страница типа list, которая перечисляет элементы в соответствии с запросом mysql, например:

mysql_select_db($database_connBHN, $connBHN);
$query_rsMarket = "SELECT * FROM my_items WHERE active=1 ORDER BY name asc";
$rsMarket = mysql_query($query_rsMarket, $connBHN) or die(mysql_error());
$row_rsMarket = mysql_fetch_assoc($rsMarket);
$totalRows_rsMarket = mysql_num_rows($rsMarket);

, затем страница перечисляет эти элементы и их описание в отдельных таблицах.

Первоначально эта страница перечисляет эти элементы в алфавитном порядке.Теперь я хотел бы разместить раскрывающийся список в верхней части страницы, где пользователь мог бы выбрать еще два или три дополнительных параметра сортировки, например, date или itemId и т. Д., Значения которых хранятся в базе данных.

Как я могу решить это простым способом, не покидая этой страницы?(т.е. я не хочу создавать отдельные страницы для каждого отдельного набора результатов)

1 Ответ

1 голос
/ 19 февраля 2012

Нет, проще сохранить это как отдельный скрипт и просто разрешить переключение сортирующей переменной.В целях безопасности лучше всего ограничить ввод пользователя определенным набором параметров в сценарии PHP:

$sort_options = array('name asc','name desc','dateadded asc','dateadded desc');
if(!isset($_GET['field'])){
   $_GET['field'] = 'name';
}
if (!isset($_GET['order'])){
   $_GET['order'] = 'asc';
}

$full_query_sort = $_GET['field'].' '.$_GET['order'];
if (!in_array($full_query_sort,$sort_options)){
   die('invalid selection');
}

mysql_select_db($database_connBHN, $connBHN);
$query_rsMarket = "SELECT * FROM my_items WHERE active=1 ORDER BY ".$full_query_sort;
$rsMarket = mysql_query($query_rsMarket, $connBHN) or die(mysql_error());
$row_rsMarket = mysql_fetch_assoc($rsMarket);
$totalRows_rsMarket = mysql_num_rows($rsMarket);

Теперь вы можете просто установить порядок с переменными _GET: http://example.com/page.php?field=name&order=desc и т. Д.Это можно установить с помощью javascript (или при отправке формы), используя выпадающие списки:

<select id='field_select' 
   name='field' 
   onchange="window.location='?field='+this.value+'&order='+document.getElementById('order_select').value;">
      <option value='name' <?php if(!isset($_GET['field']) || $_GET['field']=='name'){echo "selected";} ?>>Sort by Name</option>
      <option value='dateadded' <?php if(isset($_GET['field']) && $_GET['field']=='dateadded'){echo "selected";} ?>>Sort by Date Added</option>
</select>

<select id='order_select' 
   name='order' 
   onchange="window.location='?field='+document.getElementById('field_select').value+'&order='+this.value;">
      <option value='asc' <?php if(!isset($_GET['order']) || $_GET['order']=='asc'){echo "selected";} ?>>Ascending/option>
      <option value='desc' <?php if(isset($_GET['order']) && $_GET['order']=='desc'){echo "selected";} ?>>Decending</option>
</select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...