Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2010, 15:04   #1
cheef
Форумчанин
 
Регистрация: 16.03.2009
Сообщений: 205
По умолчанию Сортировка

Сортировка.
Данные достаютя из mysql.
Код:
$q="SELECT * FROM `article` WHERE cat='$cat' ORDER BY `$sorted` DESC LIMIT $start,$per_page";
$sorted - это значение которое мы получаем через POST при смене сортировки. Стандартно id.
Код:
if (isset($_POST['sorted']))  {$sorted = $_POST['sorted'];$sortedGET = $_POST['sorted'];} else {$sorted="id";}
Но так же присутствуют страницы которые перебираются их переменная $page. При смене страницы POST пропадает и я передаю дальше $sorted через GET.
Код:
if (isset($_GET['sorted'])) {$sortedGET = $_GET['sorted'];} else {$sortedGET="id";}
Соответственно перед выборкой:
Код:
$sorted=$sortedGET;
Вот весь код:
Код:
if (isset($_GET['sorted'])) {$sortedGET = $_GET['sorted'];} else {$sortedGET="id";}
if (isset($_POST['sorted']))  {$sorted = $_POST['sorted'];$sortedGET = $_POST['sorted'];} else {$sorted="id";}
$sorted=$sortedGET;
$q="SELECT * FROM `article` WHERE subcat='$subcat' ORDER BY `$sorted` DESC LIMIT $start,$per_page";
Вопрос:
Как я решил проблему это извращение и является примером плохого кода?
И можно избавиться от post?
cheef вне форума Ответить с цитированием
Старый 19.11.2010, 16:26   #2
Aahen
Новичок
Джуниор
 
Аватар для Aahen
 
Регистрация: 19.11.2010
Сообщений: 1
По умолчанию

Если полей сортировки немного - лучше хранить несколько запросов и подставлять их в зависимости от того по какому полю сортируют. Если уж хотите передавать параметры между сессиями - используйте $_SESSIONS. И не забывайте mysql_escape_string
Aahen вне форума Ответить с цитированием
Старый 19.11.2010, 16:35   #3
cheef
Форумчанин
 
Регистрация: 16.03.2009
Сообщений: 205
По умолчанию

Гениально!
cheef вне форума Ответить с цитированием
Старый 19.11.2010, 21:30   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

а у меня вот сомнения насчет $_SESSION и его восприятие его поисковиками... например разбиение на страницы.... какие мнения?
ADSoft вне форума Ответить с цитированием
Старый 20.11.2010, 01:39   #5
cheef
Форумчанин
 
Регистрация: 16.03.2009
Сообщений: 205
По умолчанию

На локалке всё прекрасно работает.
Код:
if (isset($_POST['sorted']))  {$sorted = $_POST['sorted'];} else {$sorted="id";}
$_SESSION['sorted']=$sorted;
Смена сортировки происходить только при передаче через post['sorted']
cheef вне форума Ответить с цитированием
Старый 22.11.2010, 11:51   #6
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

по первому посту:
А почему сначала через post а потом через get? Сразу бы передавал через get если в дальнейшем все равно get используется. Как? - через <form method="get"> или через javascript document.location.href="domain.com/index.php?param="+value;

по сессиям: а если пользователь захочет кому-то ссылочку скинуть на отсортированную страничку, не подумали что сессия в данном случае не спасает? юзер кликнув по ссылке перейдет на не отсортированную страницу(отсортированную по дефолту) а не на ту которую хотел показать пользователь отсылавший ее. Через GET имхо правильнее как-то. Для каждой сортировки будет своя ссылка.

$_POST['sorted'] $_GET['sorted'] я бы эти вещи пропустил через фильтр таким образом. if(in_array($_POST['sorted'], array('id', 'second_field', 'third_field'))){ //делаем наш запрос...., чтобы разрешить сортировку только по разрешенным полям и исключить хак в этом случае.
iankov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка Шелла и Шейкер-сортировка AleksandrMakarov Паскаль, Turbo Pascal, PascalABC.NET 11 11.03.2012 12:18
Сортировка массива методами предсортировки и слияния, и пирамидальная сортировка. lenny_24 Помощь студентам 2 17.04.2011 18:57
паскаль,одномерный массив,сортировка вставка,сортировка убывания,от максимального до конца немозг Помощь студентам 11 06.02.2010 21:57
Сортировка методом линейного выбора и "быстрая" сортировка Карол Помощь студентам 4 27.09.2009 19:52
Сортировка файлов в Explorer vs сортировка в Delphi mutabor Общие вопросы Delphi 11 04.09.2009 14:32