2013-03-06 25 views
0

我是Perl的新手。編程新手。我爲創建,搜索和查看「代理」編寫了一些CGI屏幕。在數據庫表中創建插入記錄,搜索顯示記錄的一些細節,允許用戶選擇他們希望使用的記錄,並且視圖將記錄拉回並基於從搜索中選擇的ID將它們顯示給用戶但它沒有)。Perl在不使用查詢字符串的情況下在腳本之間傳遞數據

在我的搜索頁面上,我顯示了基於搜索類型和用戶定義的搜索關鍵字的頁面。我期待根據用戶從搜索記錄中選擇的記錄將用戶帶到「查看代理」頁面。

我希望通過在搜索屏幕上傳遞用戶選擇的記錄的數據庫表中的記錄ID來實現此目的。有沒有辦法讓我可靠地傳遞在腳本之間選擇的ID(searchagent.pl到agent.pl)而不使用查詢字符串?此腳本僅供內部使用,不會有私人信息發揮作用。

我看了一下,看到了全局變量和包,但我不太確定這些是我需要的。

在此先感謝您的幫助。

編輯,包括一些代碼:

抓鬥從先前的子程序搜索類型和搜索關鍵詞,並運行基於這樣一個SQL查詢。將表格輸出返回到顯示結果的不同子例程中。我在表格輸出中出現了奇怪的多重鏈接,因爲我有一些css樣式,使得整個行在被挖空時突出顯示。

sub GetResults { 

my $searchtype = $form{'radio'}; 
my $searchfor = $form{'searchby'}; 
my ($selectID, $selectname, $selectphone, $selectstate, $selectzip); 

given ($searchtype) { 
    when('a.agentid') { $selectID = "CHECKED"; } 
    when('a.name') { $selectname = "CHECKED"; } 
    when('c.phonenumber') { $selectphone = "CHECKED"; } 
    when('addy.state') { $selectstate = "CHECKED"; } 
    when('addy.zipcode') { $selectzip = "CHECKED"; } 
    default { $selectID = "", $selectname = "", $selectphone  = "",$selectstate = "", $selectzip = ""; } 
} 



my $sth = $dbh->prepare("select a.AgentID, a.name, c.phonenumber, addy.state, addy.zipcode from agent a inner join entity e on entityid = agentid inner join contact c on contactid = billingcontactid inner join address addy on addressid = physicaladdressid where $searchtype like '%$searchfor%' order by $searchtype;") or die "prepare statement failed: $DBI::errstr\n"; 


$sth->execute; 

my ($table, $f1, $f2, $f3, $f4, $f5); 


while (($f1, $f2, $f3, $f4, $f5) = $sth->fetchrow_array) 
{ 
$table .= "<tr><td align=center><font size=\"4\" color=\"black\"><a name=\"idagent\" href=\"agent.pl?agentid=$f1\">$f1</a></font></td><td align=center><font size=\"4\" color=\"black\"><a name=\"idagent\" href=\"agent.pl?agentid=$f1\">$f2</a></font></td><td align=center><font size=\"4\" color=\"black\"><a name=\"idagent\" href=\"agent.pl?agentid=$f1\">$f3</a></font></td><td align=center><font size=\"4\" color=\"black\"><a name=\"idagent\" href=\"agent.pl?agentid=$f1\">$f4</a></font></td><td align=center><font size=\"4\" color=\"black\"><a name=\"idagent\" href=\"agent.pl?agentid=$f1\">$f5</a></font></td></tr>"; 
} 

$sth->finish; 

return ($table, $searchfor, $selectID, $selectname, $selectphone, $selectstate, $selectzip); 

} 

當記錄我使用查詢字符串傳遞所選擇的記錄的ID,並運行該子程序,並顯示在另一子例程的結果選擇。我正在使用數組的值來將值打印到文本字段中,並使用一些給定的語句來確定下拉菜單。 這就是說有一個更快的方式來確定狀態選擇,使用給定的並列出所有50個狀態?

sub GetAgent { 

my $sth = $dbh->prepare("select a.name, a.paidcommission, a.paidreferral, paddy.address1, paddy.address2, paddy.city, paddy.state, paddy.zipcode, maddy.address1, maddy.address2, maddy.city, maddy.state, maddy.zipcode, bc.name, bc.phonenumber, bc.phoneext, bc.phonenumber2, bc.phoneext2, bc.fax, bc.email, sc.name, sc.phonenumber, sc.phoneext, sc.phonenumber2, sc.phoneext2, sc.fax, sc.email from agent a inner join entity e on entityid = agentid inner join address paddy on paddy.addressid = physicaladdressid inner join address maddy on maddy.addressid = mailingaddressid inner join contact bc on bc.contactid = billingcontactid inner join contact sc on sc.contactid = salescontactid where a.agentid = $form{agentid};") or die "prepare statement failed: $DBI::errstr\n"; 


$sth->execute; 

my @agentval = $sth->fetchrow_array; 

$sth->finish; 

return (@agentval); 

} 
+2

爲什麼你不想使用查詢字符串?這正是它應該用於 – hdgarrood 2013-03-06 15:26:00

+0

的那種東西我當然可以並且如果那是路線。我只是希望有一種更加聰明的方式,不是太複雜。 – kyle 2013-03-06 15:26:48

+2

歡迎!我建議你展示一些你一直在努力的代碼,這將幫助我們幫助你。 – 2013-03-06 15:29:00

回答

相關問題