0

你好,我是一个菜鸟,我试图解决这个问题好几个小时。当我选择一个选项时,我尝试让我的 url 看起来像这样。

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

请帮忙...

4

2 回答 2

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 和“desc”之间的空格会导致您的网址出现问题。

于 2012-04-11T22:22:11.813 回答
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 处理所有表单输入。

于 2012-04-11T22:27:31.027 回答