2013-06-12 127 views
0

當我創建我形成 - 我做這樣的事情:如何獲取/提取提交按鈕的名稱值?

<form name="form-name" method="post" action="?<?=$_SERVER['QUERY_STRING']?>"> 
    [...some elements...] 
    <input type="submit" name="form-name" value="button"> 
</form> 

現在我需要提交按鈕的name=""的價值,而不是實際value=""。 在這種情況下:「form-name」。

這裏的原因:
當我提交表單;我將操作寫入數據庫 - 因此需要提交表單的名稱。

我知道我只需要一個帶有表單名稱的隱藏字段。但是我想通過從提交按鈕中提取名稱來簡化它,因爲我需要在每個創建的表單上添加一些其他隱藏的表單元素,以使我的模板系統能夠正常工作。

而且沒有JavaScript的...

+0

我不知道,如果你是在暗示將使它更簡單的...爲什麼不總是有'NAME =「表單名稱」'提交,然後使用值屬性存儲的名稱? –

+0

提交按鈕的值可以是「保存」,「刪除」,「確定」,「取消激活」,「激活」或其他一般名稱。並且可能會有多個表單使用相同的按鈕名稱(值) - 這樣就不會給我提供足夠的信息... – ThomasK

回答

1

所以,讓我們說你的HTML表單是這樣的:

<form name="form-name" method="post" action=""> 
    <input type="submit" name="form-name" value="button"> 
</form> 

你想要得到什麼內幕name="form-name"在這種情況下,form-name

好,然後在PHP端就可以了,對待$_POST全球的關聯數組,並從中提取這樣的關鍵:

<?php 

    if(isset($_POST)){ 

    foreach($_POST as $key=>$each){ 
    echo $key; // this will output "form-name" 
    } 
} 
+0

謝謝:)這更接近了一步 - 但是除了提交按鈕之外,還有其他元素 - 如何我可以控制從哪個元素獲取名稱?像提交按鈕... – ThomasK

+0

好吧,這聽起來像是對我的第二個問題:)。但是,我相信你可以使用'if/else'語句來檢查'$ key'或'$ each'是否是你想顯示名字的元素 – samayo

0

我可能已經想出了一個解決我的問題...

這裏有一個例子形式:

<form name="vehicle-vinNr" method="post" action="?<?=$_SERVER['QUERY_STRING']?>"> 
    <input type="hidden" name="hello" value="world" readonly> 
    <input type="text" name="element"> 
    <input type="submit" name="vehicle-vinNr" value="send"> 
</form> 

首先,我需要提取並放置元素名稱到一個新的數組:

<?php 
if ($_POST){ 
    foreach($_POST as $_FORM_ELEMENT_name => $_FORM_ELEMENT_value){ 
     $_FORM_ELEMENT_names[] = $_FORM_ELEMENT_name; 
    } 
} 
?> 

在這種情況下,陣列現在包含:

hello 
element 
vehicle-vinNr 

如果提交按鈕是,始終是,在表格的最後一個元素 - 這會工作:

$_FORM_name = end($_FORM_ELEMENT_names); // vehicle-vinNr 

但有時提交按鈕是不是最後一個元素,所以我需要做出改變:

如果我總是submit_開始提交按鈕的名稱 - 例如, submit__vehicle-vinNr或多個提交按鈕用於不同的操作,如submit_update__vehicle-vinNr/submit_delete_vehicle-vinNr我可以做到這一點:

if ($_POST){ 
    foreach($_POST as $_FORM_ELEMENT_name => $_FORM_ELEMENT_value){  
     if(strstr($_FORM_ELEMENT_name,'submit_')){ 
      $_FORM_ELEMENT_submit_name = explode('__',$_FORM_ELEMENT_name); 
      $_FORM_name = $_FORM_ELEMENT_submit_name[1]; // vehicle-vinNr 
     } 
    } 
} 

這是我想出了一個解決方案 - 有什麼想法?

相關問題