![]() | การเขียน Search engine อย่างง่าย | ![]() |
| ข้อควรทราบ |
|
| การเขียน html ส่ง keyword |
|
โปรแกรมนี้จะสร้าง form สำหรับส่งค่า 1 ค่าคือ keyword ไปให้โปรแกรม plsrch1.pl จากนั้นเป็นหน้าที่ของ plsrch1.asp ที่ต้องสืบค้นใน search.dat ต่อไป |
| ตัวอย่างฟอร์ม /perl/plsrch1.htm | Source code ของ /perl/plsrch1.htm |
|
Click เรียกเฉพาะ form นี้ในหน้าต่างใหม่ |
<body> <form method=post action=/perl/plsrch1.pl> คำที่ต้องการค้นหา : <input type=text name=keyword><br> <input type=submit value=submit> <input type=reset value="clear it"> </form> </body> |
| โปรแกรม perl ที่ทำหน้าที่ค้นหา และแสดงผล |
|
โปรแกรมนี้จะใช้ IF เลือกข้อมูลจาก search.dat ทีละระเบียน โดยเลือกที่มีค่าจากตัวแปล keyword ที่มีค่าตรงกับในระเบียนใดระเบียนหนึ่ง หลักการทำงานของโปรแกรมนี้จะทำการสืบค้นโดยอ่านทุกระเบียน มาเปรียบเทียบทีละบรรทัด ถ้าบรรทัดไหนตรงก็จะ นำระเบียนนั้นไปแสดงผล เพราะตรงตามเงื่อนไขที่ค้นหา |
| Source code ของ /perl/plsrch1.pl |
#!/usr/local/bin/perl
print"Content-type:text/html\n\n";
$filename = join '',"/data1/hm/thaiall.com","/web/search.dat";
print "<html><title>Search result</title>";
print '<body><font face="microsoft sans serif" size=0><pre>';
$gsys = $ENV{"QUERY_STRING"};
$gsys =~ tr/+/ /;
$gsys =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
$gsys =~ s/~!/~!/g;
($name, $gsys) = split(/=/, $gsys);
open(myfile,"$filename");
@getrec = <myfile>;
close(myfile);
$cnt = @getrec;
print "Have data in file search.dat = ", $cnt ,"<br>";
for $i (0 .. $cnt - 1) {
@getar = split(/:/, $getrec[$i]);
if ($getrec[$i] =~ /(.*)$gsys(.*)/ ) {
print $i," - ",$getar[0]," - ";
print "<a href=http://" , $getar[1],">http://",$getar[1],"</a> - ";
print $getar[2],"<br>";
}
}
print "</body></html>";
|
| การเขียน html ส่งค่าเพิ่ม ลบ แก้ไข ข้อมูล |
|
ฟอร์มนี้ใช้ในการส่งค่า สำหรับสั่ง เพิ่ม ลบ หรือแก้ไข ตัวแปรที่สำคัญคือตัวแปรที่ถูก hidden ไว้ตัวแรกที่จะบ่งบอกว่า form นี้มีหน้าที่อะไร หรือท่านจะนำฟอร์มนี้ไปแยกส่งเป็น แต่ละ html ก็ได้ เพราะการทำงานแยกอิสระอยู่แล้ว |
| ตัวอย่างฟอร์ม /perl/plsrch2.htm | Source code ของ /perl/plsrch2.htm |
|
การเพิ่มเว็บใหม่ ต่อท้ายเว็บสุดท้าย
การลบข้อมูล โดยเลือกจากเลขเว็บ การแก้ไขข้อมูลเว็บ Click เรียกเฉพาะ form นี้ในหน้าต่างใหม่ |
<body bgcolor=#ffffdd><font face="microsoft sans serif" size=2> การเพิ่มเว็บใหม่ ต่อท้ายเว็บสุดท้าย <form method=post action=/perl/plsrch2.pl> <input type=hidden name=add> ชื่อเว็บ : <input type=text name=name><br> ที่อยู่เว็บ : <input type=text name=address><br> คำอธิบายเว็บ : <input type=text name=describ size=60><br> กลุ่มของเว็บ : <input type=text name=group><br> <input type=submit value=submit> <input type=reset value=reset> </form> <hr> การลบข้อมูล โดยเลือกจากเลขเว็บ <form method=post action=/perl/plsrch2.pl> <input type=hidden name=delete> รหัสเว็บที่ต้องการลบ : <input type=text name=id><br> <input type=submit value=submit> <input type=reset value=reset> </form> <hr> การแก้ไขข้อมูลเว็บ <form method=post action=/perl/plsrch2.pl> <input type=hidden name=edit> รหัสเว็บที่ต้องการแก้ไข : <input type=text name=id><br> ชื่อเว็บ : <input type=text name=name><br> ที่อยู่เว็บ : <input type=text name=address><br> คำอธิบายเว็บ : <input type=text name=describ size=60><br> กลุ่มของเว็บ : <input type=text name=group><br> <input type=submit value=submit> <input type=reset value=reset> </form> </body> |
| โปรแกรม perl ที่ทำหน้าที่ เพิ่ม ลบ แก้ไขเว็บ |
|
โปรแกรม perl ตัวนี้จะรวมหน้าที่ทั้งเพิ่ม ลบ และแก้ไข เข้าไว้ด้วยกัน และผมไม่ได้พยายามเขียนให้สมบูรณ์ แต่เขียนให้ดูง่าย ท่านจะได้นำไปปรับปรุงแก้ไขได้ง่าย ๆ การทำงานของโปรแกรมนี้จะแยก การเพิ่ม ลบ และแก้ไขออกจากกันอย่างชัดเจน โดยใช้เลขบรรทัดเป็น key หลัก การลบข้อมูลเลขบรรทัดจะเลื่อนขึ้น บางท่านอาจคิดว่าผมเขียนผิด หรือประมวลผลผิด แต่ถ้าดู ดี ๆ ก็จะเข้าใจครับ การเพิ่มระเบียนใหม่ไม่มีอะไรมาก เพียงแต่นำระเบียนใหม่ไปต่อท้ายระเบียนสุดท้ายเท่านั้นเอง |
| Source code ของ /perl/plsrch2.pl |
#!/usr/local/bin/perl
$getdata = $ENV{"QUERY_STRING"};
@getrec = split /&/,$getdata;
($vtype,$n) = split /=/,$getrec[0];
($n,$var1) = split /=/,$getrec[1];
($n,$var2) = split /=/,$getrec[2];
($n,$var3) = split /=/,$getrec[3];
($n,$var4) = split /=/,$getrec[4];
($n,$var5) = split /=/,$getrec[5];
print"Content-type:text/html\n\n";
$filename = join '',"/data1/hm/thaiall.com","/web/search.dat";
print "<pre>";
open(myfile,"$filename");
@getrec = <myfile>;
close(myfile);
$cntrec = @getrec;
if ($vtype eq "add") {
unlink("$filename");
open(myfile,">$filename");
for $i (0 .. $cntrec-1) {
print myfile $getrec[$i];
}
$rec = join ":",$var1,$var2,$var3,$var4;
print myfile $rec,"\n";
}
if ($vtype eq "delete") {
unlink("$filename");
open(myfile,">$filename");
for $i (0 .. $cntrec-1) {
if ($var1 ne $i) { print myfile $getrec[$i]; }
}
}
if ($vtype eq "edit") {
unlink("$filename");
open(myfile,">$filename");
for $i (0 .. $cntrec-1) {
if ($var1 eq $i) {
$rec = join ":",$var2,$var3,$var4,$var5;
print myfile $rec,"\n";} else {
print myfile $getrec[$i];
}
}
}
close(myfile);
print $vtype," ok";
|
| แบบฝึกหัด |
|
![]() |
+ ผู้สนับสนุน + รับผู้สนับสนุน |