2012-11-28 42 views
0

我有一張表,其中顯示用戶MAC地址和其他信息。我正在通過for循環爲每個條目添加一個編輯按鈕。我的問題是如何選擇其中一個條目來顯示在另一個子例程中?換句話說,當我單擊一個條目的編輯按鈕時,如何將該條目信息放到另一個執行編輯功能的子例程中?從列表中選擇要編輯的元素 - Perl/CGI

以下是我的項目清單子。

print <<EOF; 
<br> 
<table> 
    <tr> 
    <th>MAC</th> 
    <th>Description</th> 
    <th>UserID</th> 
    <th>Edit</th> 
<th>Delete</th> 
    </tr> 
EOF 



foreach $test (@list) { 

    print "<tr>"; 
    print "<td>" . scalar($test->mac()) . "</td>"; 
    print "<td>" . scalar($test->comment()) . "</td>\n"; 
    print "<td>" . scalar($test->username()) . "</td>\n"; 


    print "<td>" . $editButton . "</td>\n"; 



print "</tr>"; 

    } 
+0

您可能想要調查[PSGI](http://plackperl.org/)作爲CGI的現代替代方案。 – Quentin

回答

1

選擇某些內容進行編輯是非破壞性操作,因此您可以使用鏈接。

您需要識別要編輯的東西,並使用獨特的東西。

假設MAC地址是唯一的(它應該用於設備,但可能不是用戶或註釋),您可以使用它。

use URI::Escape; 
use HTML::Entities; 

my $editButton = sprintf(
    q{<a href="edit.cgi?mac="%s">Edit</a>}, 
    encode_entities(uri_escape($test->mac())) 
); 

然後您可以在生成編輯表單的腳本中使用access the value

+0

因此,不管列表項的數量多少,該按鈕都會根據點擊哪個項目而改變,然後將其轉到編輯子? – RichDiet

+1

由於您將在循環中構造它,並且每當您繞過循環時'$ test-> mac()'都會更改,它會每次輸出一個不同的鏈接。它會被傳遞給一個腳本,而不是一個子。 (除了在查詢字符串中測試'mac'並將值傳遞給子節點之外,腳本不能做任何事情)。 – Quentin

+0

有沒有其他方法可以將它保存在同一個腳本中? – RichDiet