2016-01-27 141 views
3

我有下面的代碼提交GET值:使用表單按鈕提交GET值

<form method="GET"> 
<input type="hidden" name="price" value="ASC" /> 
    <input type="submit" value="Price Low to High" /> 
</form> 

<form method="GET"> 
<input type="hidden" name="price" value="DESC" /> 
    <input type="submit" value="Price High to Low" /> 
</form> 

<form method="GET"> 
<input type="hidden" name="price" value="" /> 
    <input type="submit" value="Default" /> 
</form> 

這是工作的罰款。所以我不用三種形式重複自己,是否有一種方法可以擁有單一形式,並定義通過按鈕提交的GET值?他們仍然需要具有對用戶可見的相同信息,例如,由於您使用的

<form method="GET"> 
    <input type="submit" name="price" value="ASC">Price Low to High</input> 
    <input type="submit" name="price" value="DESC" >Price High to Low</input> 

<input type="submit" name="price" value="" >Default</input> 
</form> 
+0

結合他們都在同一個形式,把一個'name'您'提交buttns.'像'' – roullie

+0

爲什麼不一個鏈接而不是形式?並且對於表單,您可以在提交前切換值。 –

回答

2

使用此代碼GET

0
<form method="get"> 

<select name="sort"> 
    <option value="asc">Ascending</option> 
    <option value="desc">Descending</option> 
    <option value="default">Default</option> 
</select> 

<button name="price">Sort price ascending</button> 
</form> 

剪斷

<?php if ($_GET['sort'] == "asc") { 
// Do something 
} elseif ($_GET['sort'] == "desc") { 
// Do something else 
} 
// etc 
?> 

超鏈接http://url/?price=XXX也將正常工作:即提交DESC需要的按鈕顯示爲Price High to Low

2

如果有三個按鈕是不是設計強制性的,那麼我建議,爲什麼不直接使用select讓用戶決定他想要的東西(因爲大多數網站已經這樣做了)

<form method="GET"> 
<select id="price" name="price"> 
    <option value="">Default</option> 
    <option value="ASC">Price Low to High</option> 
    <option value="DESC">Price High to Low</option> 
</select> 
<input type="submit" value="Price Low to High" /> 
</form> 

Demo

如果有三個按鈕是必要的話,你可以做的任何一個(但不限於)以下..

  1. 使用普通的鏈接(<a>錨標記),你讀了正確的,因爲表單只是使用$_GET方法提交,最終數據將在URL中,所以爲什麼不在那裏首先使用href屬性的「 按鈕「?

  2. 使用@Aref Anafgeh建議的解決方案,並有三個提交按鈕,每個提交按鈕都有不同的值,並讓HTML處理將哪個值發送到服務器。

  3. 使用JavaScript並創建ajax調用,這幾乎可以讓您處理&未在請求中發送的內容。

0

試試看看這個代碼。

<!DOCTYPE html> 
<html> 
    <body> 
<?php 
if ($_SERVER["REQUEST_METHOD"] == "GET") 
    { 
     echo "Form Submited by ".$_GET['submitbutton']." Button"; 
    } 
?>  
     <form method="GET" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
      <input type="hidden" name="price" value="ASC" /> 
      <input type="submit" value="Price Low to High" name="submitbutton"/> 
     </form> 

     <form method="GET" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
      <input type="hidden" name="price" value="DESC" /> 
      <input type="submit" value="Price High to Low" name="submitbutton"/> 
     </form> 

     <form method="GET" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
      <input type="hidden" name="price" value="" /> 
      <input type="submit" value="Default" name="submitbutton"/> 
     </form> 

     <script> 
     </script> 
    </body> 
</html> 
+1

操作不應該引用'PHP_SELF',雖然使用了htmlspecialchars,但在這種方法中存在安全漏洞的潛在可能性。 http://www.mc2design.com/blog/article/serverphp_self-can-not-be-trusted-but-there-are-safe-alternatives – Martin

+0

我可以使用#代替,我可以將它留空。 –

+1

'$ _SERVER ['script_filename']'將起作用。 '#'不提交表單並且需要填充操作元素。許多人使用PHP_SELF作爲次要捷徑,但它有嚴重的問題。 – Martin