2012-04-11 78 views
0

你好我是一个noob,我想解决这个小时。我尝试我的网址看起来像这样,当我选择一个选项。Mysql的php多选,排序

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的建议。 – 2012-04-11 22:42:11

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和“递减”的空间将导致您的网址有问题。

+0

谢谢,但它不是这个问题。 – 2012-04-11 22:41:10