Perl 網頁程式設計課程目錄

使用 Perl 程式將資料寫入資料庫 (Write Data into Database with Perl)

使用 Perl 程式將訪客的資料寫入資料庫檔案並不太複雜, 我們將利用我們先前學過的東西, 再加入少少新的東西, 便完成這個 Perl 程式了。

第 一 步 : 在網頁放下表單

網頁表單的 HTML 文件如下 :

<table cellspacing="0" cellpadding="10" width="100%" >
<tr><td>
<Center>新 會 員 登 記</Center>
<br><br>

<form action="http://yourdomain.com/cgi-bin/write.pl" method ="POST">
姓 名 :<input type="text" name="name" size=20><P>
密 碼 :<input type="text" name="password" size=20><P>
電 話 :<input type="text" name="phone" size=20><P>

<Center><input type="submit"></Center>
<br>
</Form>

</td></tr>
</table>

程式解釋如下:

第 7 行 : http://yourdomain.com/cgi-bin/write.pl"

這必需是 Perl 程式正確的 url, 在這例子中, Perl 程式檔案名稱是 write.pl, 你可以使用任何檔案名稱。

就是 write.pl 這個 Perl 程式負責將訪客的資料寫入資料庫檔案內的了。

Okay! 下一步就討論如何編寫 write.pl 這個 Perl 程式。

第 二 步 : 寫入資料庫

以下的程式便是負責將訪客的資料寫入資料庫檔案內。嘩! 原來咁簡單。

#!/usr/bin/perl
print "Content-type: text/html\n\n";
#
#
### parse the form ########################
#
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
#
@pairs = split(/&/, $buffer);
#
foreach $pair (@pairs){
    ($name, $value) = split(/=/, $pair);
    $value =~ tr/+/ /;
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    $value =~ s/~!/ ~!/g;
#
    $FORM{$name} = $value;
    }

### End of Parse Form ######################
#
### Open database file and allow writable ######
#
open(DATA,">>data.txt");
print DATA "$FORM{'name'}:$FORM{'password'}:$FORM{'phone'}\n";
close(DATA);
#
### Write data finished ##############
#
$name= "$FORM{'name'}";
#
$password= "$FORM{'password'}";
#
$phone= "$FORM{'phone'}";
#
### Print Out Messages #########
#
#
print "<P>";
print "<B>$name</B<, thank you for your information.";
print "<P>";
print "Your name is : <B>$name</B>";
print "<P>";
print "Your password is : <B>$password</B>";
print "<P>";
print "Phone no. is : <B>$phone</B>";
print "<P>";

Perl 程式解釋如下:

第 1 - 20 行 :

相信讀者已經十分熟識這段程式了。 如不明白, 請重新溫習本課程。

第 24 行 : open(DATA,">>data.txt");

這行是命令開啟資料庫檔案 data.txt, 然後將資料庫檔案 data.txt 放入資料處理箱 (File Handle) DATA 內。準備將資料寫入資料庫檔案內。

下圖詳細解釋這一句的意思 :

Open File and File Handle

各位朋友可能對資料處理箱 (File Handle) 感到疑惑。 簡單來說, 我們不能直接將資料寫入資料庫檔案內, 必須首先將資料放入資料處理箱, 然後透過資料處理箱才可以處理資料庫檔案, 處理完畢後便可以關閉資料處理箱。

第 25 行 : print DATA "$FORM{'name'}:$FORM{'password'}:$FORM{'phone'}\n";

這行是命令將表單的資料寫入 (print) 資料檔案, 請注意: 每個資料要用分離符號 ":" (Delimiter) 分隔。 如對這方面有問題, 請重溫第六章及本課程。

最尾的 "\n" 等於 "Hit Enter" 鍵, 即是開下一新行。 這可以確保下一行寫入的資料不會和上一行寫入的資料混合一起。

下圖詳細解釋這一句的意思 :

Print data into files

第 25 行 : close(DATA);

處理完畢後便可以關閉資料處理箱。

第 27 - 46 行 :

將訪客在表單填入的資料印在瀏覽器, 確實資料。

相信讀者已經十分熟識這段 Perl 程式了。 如不明白, 請重新溫習本課程!

Okay ! 資料庫已經建立好了 ! 下一節將詳細討論如何讀取已經建立的資料庫。

[註]: 在實際應用, 以上 Perl 程式還應包括檢查 username 是否已經給其他訪客使用了。 如果沒有, 便可寫入資料, 否則通知訪客使用其它 username。 讀者應可自行編寫及加入這幾行簡單程式。