การรับค่าผ่าน form

ปรับปรุง : 2548-02-12 ()

บทเรียน ONLINE : การเขียนภาษา PERL
[ การรับค่าผ่าน form ]

  1. ข้อควรทราบ
  2. เขียน homepage แบบ form ส่งค่า
  3. การรับภาษาไทยมาเป็นภาษาไทย
  4. การรับค่าหลายแบบ
  5. แบบฝึกหัด
ข้อควรทราบ
  1. บทนี้ท่านจะรู้สึกยากกว่าบทอื่นที่แล้วมามาก เพราะเนื้อหาต้องอาศัยความเข้าใจ ในเรื่องขององค์ประกอบ และประสานสิ่งที่ทำขึ้นในงานต่าง ๆ ให้เข้ากันได้อย่างพอดี แต่เมื่อใดที่ประสานกัน จนท่านเข้าใจ ก็คงบอกได้ว่า แค่นี้ หมู หมู
  2. จำเป็นอย่างมาก ๆ ที่ท่านต้องเขียน html เป็น เพื่อเขียน ส่วนของ form เพื่อรับค่า เมื่อรับมาแล้ว จะส่งค่าไปให้ perl นำไปใช้ ก็เพียงแต่กดปุ่ม submit จาก form ที่ท่านเขียน ในหน้าต่าง browser
  3. การเขียน form เขียนไม่ยากเพราะไม่ใช่โปรแกรมแบบโครงสร้างที่ซับซ้อน ดูตัวอย่างการเขียนได้ที่นี่ เพื่อดูหน้าตาของ form และ view ดู source สำหรับวิธีการเขียน
  4. เมื่อเขียน form เสร็จแล้ว ก็มาเขียน perl ซึ่งในบทนี้แสดงให้เห็น 2 ตัวอย่าง ซึ่งเป็นวิธีการรับค่ามาอย่างง่าย ๆ
  5. ขอให้เข้าใจว่า ในบทนี้จะไม่มีการสั่ง perl ทำงานผ่าน url แต่จะสั่งผ่านการกดปุ่ม submit ของ form เท่านั้น
  6. สรุปว่าจะเข้าใจบทนี้ต้องเขียนมา 2 แฟ้มคือ html เพื่อสร้าง form ส่งค่า และ perl เพื่อนำค่าที่ได้มาพิมพ์ใหม่

เขียน homepage แบบ form ส่งค่า
Click here for open this form sample
<form method=post action=/perl/plinput1.pl>
<input type=text name=getit1>
<input type=submit value=submit>
<input type=reset value="clear it">
</form>
โปรแกรม perl ที่เขียนไว้เพื่อรับ form ข้างบนนี้
คือ plinput1.pl ซึ่งเก็บไว้ใน /perl
และถูกเขียนไว้ 4 บรรทัด ใน plinput1.pl ดังนี้
#!/usr/local/bin/perl
$buffer = <STDIN>;
print "Content-type: text/html\n\n";
print $buffer;
ผลที่ได้จากการกดปุ่ม submit ข้างบนนี้
มีเพียง 1 บรรทัด คือ
getit1=%CA%C7%D1%CA%B4%D5tom
ถ้าท่านพิมพ์คำว่า สวัสดีtom ในช่องว่าง

การรับภาษาไทยมาเป็นภาษาไทย


Click here for open this form sample
<form method=post action=/perl/plinput2.pl>
<input type=text name=getit1><br>
<input type=text name=getit2><br>
<input type=submit value=submit>
<input type=reset value="clear it">
</form>
โปรแกรม perl ที่เขียนไว้เพื่อรับ form ข้างบนนี้
คือ plinput2.pl ซึ่งเก็บไว้ใน /perl
และถูกเขียนไว้ 7 บรรทัด ใน plinput2.pl ดังนี้
#!/usr/local/bin/perl
$buffer = <STDIN>;
$buffer =~ tr/+/ /;
$buffer =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
$buffer =~ s/~!/~!/g;
print "Content-type: text/html\n\n";
print $buffer;
ผลที่ได้จากการกดปุ่ม submit ข้างบนนี้
มีเพียง 1 บรรทัด คือ
getit1=หล่อ&getit2=สวย
ถ้าท่านพิมพ์คำว่า หล่อ และสวย ในช่องว่าง

การรับค่าหลายแบบ
ผักกาด
ผักคะน้า
ผักทอดยอด
น้ำปลา
น้ำตาล
เกลือ



Click here for open this form sample
<form method=post action=/perl/plinput2.pl>
<input type=radio name=getit1 value=p1 checked>ผักกาด<br>
<input type=radio name=getit1 value=p2>ผักคะน้า<br>
<input type=radio name=getit1 value=p3>ผักทอดยอด<br>
<input type=checkbox name=numpa>น้ำปลา<br>
<input type=checkbox name=numtan checked>น้ำตาล<br>
<input type=checkbox name=sult checked>เกลือ<br>
<SELECT NAME=fac SIZE=3>
<OPTION value=busi selected>คณะบริหารธุรกิจ
<OPTION value=comm>คณะนิเทศศาสตร์
<OPTION value=arts>คณะศิลปศาสตร์
<OPTION value=engr>คณะวิศวกรรมศาสตร์
</SELECT><br>
<SELECT NAME=maj>
<OPTION value=bcom selected>สาขาคอมพิวเตอร์
<OPTION value=mgmt>สาขาการตลาด
<OPTION value=acct>สาขาการบัญชี
</SELECT><br>
<textarea name=txt rows=3 cols=20>abc
</textarea><br>
<input type=submit value=submit>
<input type=reset value="clear it">
</form>
โปรแกรม perl ที่เขียนไว้เพื่อรับ form ข้างบนนี้
คือ plinput2.pl ซึ่งเก็บไว้ใน /perl
และถูกเขียนไว้ 7 บรรทัด ใน plinput2.pl ดังนี้
#!/usr/local/bin/perl
$buffer = <STDIN>;
$buffer =~ tr/+/ /;
$buffer =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
$buffer =~ s/~!/~!/g;
print "Content-type: text/html\n\n";
print $buffer;
แต่จะใช้ plinput1.pl ก็ให้ผลเหมือนกันครับ
เพราะตัวอย่างนี้ไม่ได้ใช้ภาษาไทย ยกเว้น textarea
ถ้าท่านไม่ป้อนภาษาไทย ผลของ 2 โปรแกรมจะเหมือนกัน
ผลที่ได้จากการกดปุ่ม submit ข้างบนนี้
มีเพียง 1 บรรทัด คือ
getit1=p1&numtan=on&sult=on&fac=busi&maj=bcom&txt=abc
ถ้าท่านไม่ได้แก้ไขค่าที่กำหนดมาตอนเริ่มต้น
จะเห็นว่าตัวแปร numpa ไม่ถูกส่งไปเพราะเป็นแบบ checkbox
แต่ไม่ถูกทำเครื่องหมายไว้ จึงไม่ถูกส่งค่ามาด้วย

แบบฝึกหัด
    ให้ทำตามโจทย์ต่อไปนี้
  1. รับค่าแบ text แล้วส่งให้ perl นำไปพิมพ์
  2. รับค่าแบ text อย่างน้อย 2 ตัว แล้วส่งให้ perl นำไปพิมพ์
  3. รับค่าแบ text, radio, checkbox, select, textarea แล้วส่งให้ perl นำไปพิมพ์
ผู้สนับสนุน + ผู้สนับสนุน
+ รับผู้สนับสนุน

แนะนำเว็บใหม่ : ผลการจัดอันดับ
รักลำปาง : thcity.com : korattown.com : topsiam.com : มหาวิทยาลัยโยนก
ศูนย์สอบ : รวมบทความ : ไอทีในชีวิตประจำวัน : ดาวน์โหลด : yourname@thaiall.com
ติดต่อ ทีมงาน ชาวลำปาง มีฝันเพื่อการศึกษา Tel.08-1992-7223