2012-04-11 9 views
0

привет, я - noob, и я пытаюсь решить это в течение нескольких часов. Я пытаюсь, чтобы мой url выглядел так, когда я выбираю вариант.Mysql php multiple select, sorting

category.php?cat_id=122&sort=BOOK_ID+ASC

Я пытаюсь с этим кодом

<form name=\"myform\" \"> 
<select name=\"sort\" id=\"sort\" style=\"float: right;\" onChange=\"document.myform.submit();\"> 
    <option value=\"car_ID desc&cat_id=$_GET[cat_id]\">cars desc</option> 
    <option value=\"car_ID ASC&cat_id=$_GET[cat_id]\">cars asc</option> 
</select> 
</form><p>"; 
    $sort="$_GET[sort]"; 
    $stm = "SELECT * 
      FROM cars 
      where cat_id=$_GET[cat_id] 
      ORDER BY $sort"; 

но результат таков: category.php?sort=car_id+ASC%26cat_id%3D122

Пожалуйста, помогите ...

ответ

1

Я хотел бы сделать следующее:

<form name=\"myform\" \"> 
<input type=\"hidden\" name=\"cat_id\" value=\"$_GET['cat_id']\"> 
<select name=\"sort\" id=\"sort\" style=\"float: right;\" onChange=\"document.myform.submit();\"> 

    <option value=\"car_ID desc\">cars desc</option> 
    <option value=\"car_ID ASC\">cars asc</option> 
</select> 
</form><p>"; 
    $sort="$_GET[sort]"; 
    $stm = "SELECT * 
      FROM cars 
      where cat_id=$_GET[cat_id] 
      ORDER BY $sort"; 

Несколько примечаний здесь. Во-первых, это не безопасно ВСЕ. Я мог бы легко поставить «DROP TABLE ...» или что-то еще в переменной get. Во-вторых, вы, вероятно, вообще не хотите использовать GET. Я бы обработал все формы ввода с помощью POST.

+1

спасибо, что решил, спасибо, спасибо, я буду использовать post.thanks для совета. –

1

Ваша проблема здесь:

<option value=\"car_ID desc&cat_id=$_GET[cat_id]\">cars desc</option> 

Вы, вероятно, хотите:

<option value=\"cat_id=$_GET[cat_id]&car_ID desc\">cars desc</option> 

То есть, я не уверен, где переменная car_ID приходит от, а пространство между car_ID и «» по алфавиту вызовет проблемы с URL.

+0

спасибо, но это не было проблемой. –