บริหารกระดานข่าวสมัครงาน
เว็บเพจสำรอง (Backup Webpages) : http://www.thaiall.com/asp/eapplup.htm | http://www.thaiabc.com/asp/eapplup.htm
ปรับปรุง : 2549-02-06 (ปรับตัวอย่าง)
บริหารกระดานข่าวสมัครงาน
    สารบัญ
  1. ข้อควรทราบ
  2. ส่วน html สำหรับ สั่ง asp ให้ทำงาน ทั้งเพิ่ม ลบ และแสดง
  3. เพิ่ม ระเบียนในแฟ้ม mdb ด้วย SQL
  4. ลบ ระเบียนในแฟ้ม mdb ด้วย SQL
  5. แสดง ระเบียนในแฟ้ม mdb ด้วย SQL
  6. แบบฝึกหัด
ข้อควรทราบ
  1. การเขียนโปรแกรมด้วย asp บน pc ที่ติดตั้ง Personnal Web Server (PWS) เมื่อเขียนเสร็จสมบูรณ์ แล้วก็อย่าพึ่งดีใจครับ ผมเคยเขียน perl บน pc แต่พอจะเอาลงที่ hypermart กลับต้องแก้ไขข้อกำหนดนิดหน่อย จึงจะทำงานได้ ส่วน asp ก็เหมือนกัน การจะสั่งให้ asp ง่าย ๆ ทำงานนั้นไม่ต่างกันมาก แต่ใครที่เขียน asp จัดการกับแฟ้ม เช่น MDB ของ microsoft access 97 จะต้องรู้ว่า ข้อกำหนดที่ใช้อ้างถึงแฟ้มนั้นเป็นอย่างไร เช่นที่ webhostme.com จะเก็บ mdb ไว้ที่ directory ใดก็ได้ เพื่อให้ asp อ่านไปแสดง แต่ถ้าจะเพิ่ม ลบ แก้ไข ต้องเอาไปไว้ในห้อง ชื่อ cgi-bin ส่วนที่ thaiall.thailandhosting.net/asp/ ก็มีข้อกำหนดว่า ต้องเก็บไว้ที่ห้อง db และเวลาอ้างถึงต้อง อ้างชื่อยาวกว่าเดิม อีกนิดหน่อยครับ
  2. กรณีศึกษาชุดนี้ ไม่ได้ยากอะไร ถ้าได้ศึกษาฐานข้อมูล หรือเรื่องของ access กันพอสมควรแล้ว เพราะผมก็ใช้วิธี คัดลอกมาจากบทเรียนเดิม ๆ ที่ทำไว้ที่webhostme.com แล้วนำมาเปลี่ยนโครงสร้างแฟ้ม และรูปแบบนิดหน่อยเท่านั้น
  3. สำหรับผู้เริ่มต้น ถ้าไม่เคยเขียน ก็คงต้องงงเป็นธรรมดา เพราะการเขียนโปรแกรมชุดนี้ จะต้อง เริ่มต้นด้วย: การสร้างแฟ้ม mdb ด้วย microsoft access 97 ชื่อ applnews.mdb จากนั้น ก็ copy source code ที่ผมแสดงไว้ ไปสร้างแฟ้ม 4 แฟ้มคือ eapplupd.htm eappladd.asp eappldel.asp และ eappllst.asp เพียงเท่านี้ ก็จะได้โปรแกรม 1 ชุดที่สามารถใช้งานได้ โดยสามารถทดลองกับเครื่อง pc แต่ท่านต้องลงโปรแกรมสำหรับทำ PWS และกำหนดค่าอีกเพียบ แต่ถ้าง่าย ๆ เห็นผลเลย ก็ส่ง 4 โปรแกรมไปที่ ewebcity พร้อมส่ง mdb เข้าไปในห้องชื่อ db แล้วก็ใช้งานได้เลย เมื่อเห็นว่า ใช้ได้แล้ว ก็ให้แก้โปรแกรมให้เป็นแบบที่ท่านต้องการ
  4. ผมขอบอกไว้ตรงนี้เลยว่า ถึงวันนี้ ยังไม่ได้ทดลองให้ asp ทำงานในเครื่อง pc ของตัวเอง เพราะเน้นการเขียน asp ที่ใช้กับเว็บฟรี และถ้าท่านศึกษา asp หรือ vb มาเยอะ แล้วมีข้อสงสัยที่ลึก ๆ ผมต้องขอออกตัวก่อนว่า ผมคงตอบไม่ได้ เพราะผมไม่ใช่มืออาชีพ และไม่ศึกษาเรื่องพวกนี้ แบบลึกซึ้งอะไร แต่ถ้ามีอะไรไม่เข้าใจ และเป็นเรื่องพื้นฐาน ที่ผมน่าจะตอบได้ ก็ถามมาได้เลย ปกติผมตอบ mail ทุกฉบับที่ส่งมาอยู่แล้ว .. สรุปว่ายินดีให้ความช่วยเหลือ เต็มที่ครับ

    โครงสร้างของแฟ้ม applnews.mdb เป็นดังนี้ (แฟ้มนี้เก็บในห้อง db)
  1. รหัสข่าว ( ID ) มีขนาดเป็น AutoNumber ซึ่งเพิ่มได้อัตโนมัติ และไม่ซ้ำกันแน่นอน
  2. วันหมดเขตรับสมัคร ( dateout ) เตรียมไว้เป็น date & time
  3. ชื่อองค์กร ( organ ) เตรียมไว้เป็น 100 อักษร
  4. ตำแหน่งที่รับ ( posit ) เตรียมไว้เป็น 100 อักษร
  5. วันที่รับข่าวเข้า ( datein ) เตรียมไว้เป็น date & time
  6. การศึกษา ( edu ) เตรียมไว้เป็น 100 อักษร
  7. คุณสมบัติ ( capa ) เตรียมไว้เป็น memo
  8. ที่อยู่ ( addr ) เตรียมไว้เป็น 100 อักษร
  9. เงินเดือน ( sala ) เตรียมไว้เป็น 100 อักษร
  10. ได้รับข่าวนี้จาก ( getfrom ) เตรียมไว้เป็น 100 อักษร
  11. E-Mail ที่ใช้ติดต่อ ( email ) เตรียมไว้เป็น 100 อักษร

ส่วน html สำหรับ สั่ง asp ให้ทำงาน
ฟอร์มนี้จะมีหน้าที่ 3 อย่างกับแฟ้ม /db/applnews.mdb ทีเดียว
1. รับค่า แล้วนำไปเพิ่มระเบียน อย่างง่าย ๆ
2. รับค่า แล้วนำไปเลือกระเบียนที่ต้องการลบ แล้วก็ลบ
3. อ่านข้อมูลทั้งหมดมาแสดง อย่างง่าย ๆ
ตัวอย่างฟอร์ม eapplupd.htm Source code ของ eapplupd.htm
เพิ่มข่าวรับสมัครใหม่
วันที่หมดเขตรับสมัคร
(mm/dd/yy)พ.ศ.
ชื่อองค์กร
ตำแหน่ง
วุฒิที่ต้องการ
คุณสมบัติผู้สมัคร
ที่อยู่องค์กร
ช่วงเงินเดือน
E-Mail ผู้แจ้ง
ได้ข่าวนี้จาก

ลบข้อมูลสมาชิก
รหัสข่าวรับสมัครที่ต้องการลบ :

ข้อมูลข่าวแบบ desc
เปิดฟอร์ม ในหน้าต่างใหม่
<html><title>Update news</title>
<body bgcolor=#ffffdd><font face="microsoft sans serif">
เพิ่มข่าวรับสมัครใหม่<br>
<form action=http://thaiall.thailandhosting.net/asp/eappladd.asp method=post>
<table width=100%>
<tr><td><font face="microsoft sans serif">
วันที่หมดเขตรับสมัคร(mm/dd/yy)พ.ศ.</td>
<td><input type="text" name=dateout size=10 value="12/31/01"></td><tr>
<tr><td><font face="microsoft sans serif">ชื่อองค์กร</td>
<td><input type="text" name=organ size=50></td><tr>
<tr><td><font face="microsoft sans serif">ตำแหน่ง</td>
<td><input type="text" name=posit size=50></td><tr>
<tr><td><font face="microsoft sans serif">วุฒิที่ต้องการ</td>
<td><input type="text" name=edu size=50></td><tr>
<tr><td><font face="microsoft sans serif">คุณสมบัติผู้สมัคร</td>
<td><textarea rows=3 cols=40 name=capa></textarea></td><tr>
<tr><td><font face="microsoft sans serif">ที่อยู่องค์กร</td>
<td><input type="text" name=addr size=50></td><tr>
<tr><td><font face="microsoft sans serif">ช่วงเงินเดือน</td>
<td><input type="text" name=sala size=50></td><tr>
<tr><td><font face="microsoft sans serif">E-Mail ผู้แจ้ง</td>
<td><input type="text" name=email size=50></td><tr>
<tr><td><font face="microsoft sans serif">ได้ข่าวนี้จาก</td>
<td><input type="text" name=getfrom size=50></td><tr>
<tr><td></td>
<td><input type=submit value="Add news"><input type=reset value=Reset></td><tr>
</table>
</form>
<hr>

ลบข้อมูลสมาชิก<br>
<form action=http://thaiall.thailandhosting.net/asp/eappldel.asp method=post>
รหัสข่าวรับสมัครที่ต้องการลบ : <input type="text" name=delid size="2"0><br>
<input type=submit value="Delete member"><input type=reset value=Reset>
</form>
<hr>
<a href=eappllst.asp target=_blank>ข้อมูลข่าวแบบ desc</a><br>
</body></html>

เพิ่ม ระเบียนในแฟ้ม mdb
โปรแกรมเพิ่มระเบียนจะต้องระบุว่า จะนำค่าใดเพิ่มในเขตข้อมูลใด
ในโปรแกรมนี้จะใช้คำสั่ง insert ซึ่งแตกต่างจากที่ผมเคยใช้ตามปกติใน webhostme
เพราะปกติคำสั่ง insert ผมจะใช้ select สั่งค่าลงไปในเขตข้อมูลที่ต้องการ
แต่วิธีนี้ใช้ values โดยจัดเขตข้อมูลไว้ก่อน แล้วกำหนดเฉพาะค่าที่จะเข้าไป ต่างหาก
ซึ่งแบบนี้ใช้เนื้อที่ในการเขียนน้อยกว่า แต่ผิดพลาดได้ง่ายกว่า
เหตุที่ผมใช้แตกต่างไปจากปกติ เพราะที่ thaiall.thailandhosting.net/asp/ จะไม่แจ้งให้ทราบว่า asp ผิดอย่างไร ถ้ามีข้อผิดพลาด
ทั้งที่โปรแกรมผมถูกแล้ว เพียงแต่ส่งค่าวันที่เข้าไปผิดรูปแบบ โปรแกรมกลับแจ้งผล ว่าผิดพลาด แต่ไม่บอกว่าอะไร
ผมจึงต้องนั่งแก้โปรแกรมไปเรื่อย ๆ เปลี่ยนไปเปลี่ยนมา จนได้ตามรูปแบบนี้ .. แบบอื่นก็ใช้ได้ครับ .. เพราะเป็นภาษาที่ยืดหยุ่น
Source code ของ /eappladd.asp
<%
set connNews = server.createobject("ADODB.Connection")
' connNews.Open "DBQ=" & Server.Mappath("\thaiall\db\applnews.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
connNews.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("applnews.mdb"))
sql = "INSERT into applnews ( dateout, organ, posit, datein, edu, capa, addr, sala, getfrom, email) VALUES ( "
sql = sql & " #" & request.form("dateout") & "#, " 
sql = sql & " '" & request.form("organ") & "', " 
sql = sql & " '" & request.form("posit") & "', " 
sql = sql & " #" & now() & "#, " 
sql = sql & " '" & request.form("edu") & "', " 
sql = sql & " '" & request.form("capa") & "', " 
sql = sql & " '" & request.form("addr") & "', " 
sql = sql & " '" & request.form("sala") & "', " 
sql = sql & " '" & request.form("getfrom") & "', " 
sql = sql & " '" & request.form("email") & "'); "
set prorun = connNews.Execute(sql)
connNews.close
set connNews = nothing
%>
<body>
<b>Add news</b><hr>
<a href=eappllst.asp>Display</a>
<br>Back to [<a href=eapplupd.htm>Update news</a>]
</body>
Click here to open this source code in new windows

ลบ ระเบียนในแฟ้ม mdb
การลบข้อมูล จะเป็นโปรแกรมที่สั้น แต่ได้ใจความ
เพื่อใช้ sql delete เลือกลบ เมื่อสั่งประมวลผล ก็เสร็จงานทันที
เข้าใจง่ายดีครับ ง่ายกว่า เพิ่ม แก้ไข หรือแสดง ซะอีก
Source code ของ /eappldel.asp
<%
Set objConn = Server.CreateObject("ADODB.Connection")
Set rec = Server.CreateObject("ADODB.Recordset")
' objConn.Open "DBQ=" & Server.Mappath("\thaiall\db\applnews.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
objConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("applnews.mdb"))
strSQL = "DELETE * FROM applnews WHERE (applnews.id= " & request.form("delid") & ");"
set prorun = objConn.Execute(strSQL)
objConn.close
%>
<body>
<b>Delete news</b><hr>
<a href=eappllst.asp>Display</a>
<br>Back to [<a href=eapplupd.htm>Update news</a>]
</body>
Click here to open this source code in new windows

แสดง ระเบียนในแฟ้ม mdb
ที่ thaiall.thailandhosting.net/asp/ ผมเขียนโปรแกรมนี้เสร็จเป็นโปรแกรมแรก
โดยเข้าไปดูข้อกำหนดที่เว็บนี้ เขียนไว้ให้ดูว่า จะอ้างถึงแฟ้ม mdb ได้อย่างไร
ซึ่งก็ไม่ต่างจากที่ webhostme มากมายนัก และโปรแกรมนี้ทำการจัดเรียงตามรหัสแบบ มากไปน้อย
เพราะคำว่า desc เป็นคำสงวน เพื่อสั่งให้จัดเรียงซึ่งย่อมาจาก descending ตรงข้ามกับ ascending นั่นเอง
และจำได้เลยว่าครั้งหนึ่ง เคยพยายามใช้ desc เป็นชื่อ field หาอยู่ครึ่งวัน กว่าจะนึกออกว่าเป็น คำสงวน ห้ามใช้
Source code ของ eappllst.asp
http://thaiall.thailandhosting.net/asp/eappllst.asp
<%
Set objConn = Server.CreateObject("ADODB.Connection")
Set rec = Server.CreateObject("ADODB.Recordset")
' objConn.Open  "Driver={Microsoft Access Driver (*.mdb)};" & "DBQ=" & Server.Mappath("\thaiall\db\applnews.mdb")
objConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("applnews.mdb"))
strSQL = "select * from applnews order by applnews.id DESC;"
rec.Open strSQL, objConn , 2, 3 
%>
<html><head><title>ข่าวรับสมัคร thaiall.com</title></head>
<body bgcolor="#ffffdd"><font face="microsoft sans serif">
ข่าวรับสมัคร (<a href=http://www.thaiall.com target=_blank>thaiall.com</a>)
<ul>
<%
i = 1
if Not rec.eof then rec.MoveFirst
do while Not rec.eof and i <= 10     
   response.write( "<b>รหัสข่าว</b> : " & rec("id") &"<br>")   
   response.write( "<b>ตำแหน่ง</b> : " & rec("posit") &"<br>")
   response.write( "<b>ชื่อองค์กร</b> : " & rec("organ") &"<br>")
   response.write( "<b>การศึกษา</b> : " & rec("edu") &"<br>")
   response.write( "<b>คุณสมบัติผู้สมัคร</b> : " & rec("capa") &"<br>")
   response.write( "<b>ช่วงเงินเดือน</b> : " & rec("sala") &"<br>")
   response.write( "<b>ที่อยู่องค์กร</b> : " & rec("addr") &"<br>")
   response.write( "<b>E-Mail ที่ใช้ติดต่อ</b> : " & rec("email") &"<br>")
   response.write( "<b>วันหมดเขตรับสมัคร</b> : " & rec("dateout") &"<br>")
   response.write( "<b>วันแจ้งข่าว</b> : " & rec("datein") &"<br>")
   response.write( "<b>แหล่งข่าว</b> : " & rec("getfrom") &"<hr>")
   rec.MoveNext
   i = i + 1
loop
%>
</ul>
</body></html>
Click here to open this source code in new windows

แบบฝึกหัด
    ให้ทำตามโจทย์ต่อไปนี้
  1. ให้ทำกระดานประกาศรับสมัครงานแบบนี้เลย
  2. ให้ปรับรูปแบบให้ดีขึ้น เช่น เปลี่ยนสี หรือเปลี่ยนชื่อเขตข้อมูล
  3. ให้เปลี่ยนเป็นกระดาน รับแจ้งความของ สถานีตำรวจ หรืออื่น ๆ ที่ท่านคิดขึ้นเอง .. ลองคิดดู

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