2012-04-11 21 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