การเขียน 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"; |
แบบฝึกหัด |
|
+ ผู้สนับสนุน + รับผู้สนับสนุน |