2010-11-03 2 views
0

У меня есть переменная перехода $ _REQUEST на моей странице, позволяющая людям изменять порядок ASC или DESC по post_time.

Проблема заключается в получении по умолчанию порядка DESC и его работе без изменения переменной URL $ _REQUEST.

Вот что у меня есть: меню

прыжок:

<form name="form" id="form"> 

<select name="jumpMenu" id="jumpMenu" onchange="MM_jumpMenu('parent',this,0)"> 
<option value ="?post_time=DESC" 
<?php echo ($_REQUEST['post_time']=='DESC')?"selected":"";?> >DESC</option> 
<option value ="?post_time=ASC" 
<?php echo ($_REQUEST['post_time']=='ASC')?"selected":"";?> >ASC</option> 
</select> 

</form> 

Сортировать по статье:

ORDER BY post_time {$_REQUEST['post_time']} 

Как я уже сказал, он прекрасно работает, если вы откроете страницу, но по умолчанию в ASC, я попытался установить переменную в значение «DESC» вверху и она работает, но тогда она не изменится на ASC.

Любые быстрые идеи?

Спасибо заранее!

ответ

0

Вы пробовали:

<form name="form" id="form"> 

<select name="post_time" id="jumpMenu" onchange="MM_jumpMenu('parent',this,0)"> 
<option value ="DESC" 
<?php if(($_REQUEST['post_time']=='DESC')||(!isset($_REQUEST['post_time']))){echo"'selected'";}?> >DESC</option> 
<option value ="ASC" 
<?php if($_REQUEST['post_time']=='ASC'){echo"'selected'";}?> >ASC</option> 
</select> 

</form> 
+0

Так он устанавливает для DESc, если он выбран ранее, или, если ничего не было ранее выбран (по умолчанию). Обратите также внимание на то, что я немного скорректировал форму, чтобы она работала корректно как с post, так и с get, а также при добавлении любых других полей до/после выбора – SW4

+0

Не работает. Нужно ли добавлять переменные выше? – eberswine

0

попробовать

<option value ="DESC" 
<?php if(isset($_REQUEST['post_time']) && $_REQUEST['post_time']=='DESC') { print " selected=\"selected\"";}?> >DESC</option> 
<option value ="ASC" 
<?php if(isset($_REQUEST['post_time']) && $_REQUEST['post_time']=='ASC') { print " selected=\"selected\"";}?> >ASC</option> 

я бы не советовал вам делать это:

ORDER BY post_time {$ _REQUEST [ 'post_time']}

Попытка:

$order = 'ASC'; // Default 

// Check for DESC as ASC is the default 
if(isset($_REQUEST['post_time']) && $_REQUEST['post_time'] == 'DESC') { 
    $order = 'DESC'; 
} 

ORDER BY post_time {$order} 

Я думаю, что эта страница показывает хороший пример того, что вы пытаетесь достичь:

http://www.w3schools.com/PHP/php_ajax_database.asp

+0

Я ударился головой о стену. Извините .. – eberswine

+0

Я использовал это [код] if (isset ($ _ REQUEST ['post_time']) && $ _REQUEST ['post_time'] == 'ASC') { $ order = 'ASC'; } else { \t $ order = 'DESC'; \t} [/ code] Но когда я меняю меню перехода на ASC, он возвращается к DESC ??? – eberswine

+0

добавлена ​​ссылка: http://www.w3schools.com/PHP/php_ajax_database.asp –

0

Никогда не используйте $ _REQUEST. Это практика постели. И

ORDER BY post_time {$ _REQUEST [ 'post_time']}

не очень хорошо тоже. Не забудьте избежать всех введенных пользователем данных с помощью mysql_real_escape_string.

2 предыдущие советы очень хороши, нечего добавить

Смежные вопросы