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