Sep 21, 2007

Problem ASP include dynamic URL

กลับมาแล้วครับกับ วิชาการๆ เนื่องจากในช่วงเวลา ประมาณ เกือบๆ เดือน ผมได้มีโปรเจกเข้ามา
เป็นงานของบริษัท แถวๆ เมืองทองธานี งานที่ว่าก็เป็นงานเว็บไซด์เช่นเคยครับ แต่เป็นภาษา ASP
ใช้ฐานข้อมูลของ MS SQL SERVER 2000 ภาษา ASP เป็นภาษาที่ผมค่อนข้างจะไม่ค่อย
ได้ใช้เวลากับมันซักที ทำให้ไม่ค่อยเชี่ยวชาญ และติดๆ ขัดๆ อยู่เยอะเหมือนกัน
เท่าที่จำได้คือเสียตังค์เข้าอบรม ASP เบื้องต้นที่ทางสถาบันจัดขึ้น เนื่องจากเป็นนักศึกษา
ค่าใช้จ่ายเลยไม่มากเท่าไหร่ ช่วงนั้นก็ประมาณ ปี 48 ได้ ตอนนี้ 50 ล่ะลืมหมดเกลี้ยงเลย เหอะๆ
อบรมครั้งนั้น มีทั้งหมดสองวัน เรื่องที่ลึกที่สุดถึงเพียงแค่การต่อเชื่อมกับ ฐานข้อมูล MS Access 97
ผิดหวังหน่อยๆ แต่ก็ถือเป็นประสบการณ์ที่ดี เพราะตอนนั้นไม่ได้จับภาษาใดเลย (เขียนเว็บยังไม่เป็น)

และในครั้งนี้ ผมต้องมานั่งอ่านศึกษา ตำราต่างๆ เพื่อรื้อฟื้น ASP
จะว่าเป็น ASP.NET ก็อยากใช้นะ แต่ไม่มั่นใจ SERVER ว่ารองรับหรือเปล่า
เลยต้อง ใช้ ASP ธรรมดาเพื่อความปลอดภัยไปก่อน ยากเหมือนกันนะเนี่ย
ผมใช้เวลา ประมาณ สองสัปดาห์ กว่าจะเรียบเรียงข้อมูลต่างๆ เกี่ยวกับ ASP ได้
แต่ที่ได้เร็วก็เพราะใช้วิธีการเทียบเคียงกับภาษาอื่นๆ เช่น PHP หรือ JSP
ผมรู้สึกแย่เหมือนกัน ที่ปกติเขียนโปรแกรม เชิงวัตถุ แต่กลับต้องมานั่งเขียนเป็น โปรแกรมแบบโครงสร้าง
ทำให้งานผมช้ากว่า ภาษาที่กล่าวมาทั้งหมด แต่ก็พยายามทำความเข้าใจ จนเขียนได้คล่องในเวลาต่อมา
แต่ก็ยังติดปัญหา เมื่อมันเกิดความผิดพลาด เพราะดูเหมือนว่ารายละเอียดที่มันแจ้งมาเยอะแยะ
ส่วนใหญ่แล้วไม่ได้ช่วยอะไรขึ้นเลย... เหอะๆ แย่จัง

คราวนี้ ก็จะยกปัญหาอีกปัญหา ที่ไม่น่าจะเกิดขึ้นได้เลย
เพราะมันน่าจะเป็นวิธีการง่ายๆ ที่ไม่น่าที่จะเกิดการไม่รองรับของสคริป
ซึ่งก็คือการ include file แบบ dynamic
ก็หมายถึงว่า การใช้ ตัวแปรเป็นตัวอ้างอิงไปยัง URL แทน
ตัวอย่างคือ
(จากตัวอย่างต้องมีเครื่องหมาย "!" แต่แทนด้วย @ และ "%" แทนด้วย "+"
แต่ใส่ตรงๆไม่ได้เพราะจะกลายเป็น comment )

<@--#include file="tabNews.asp" -->
นี่คือแบบที่เป็นการ กำหนดแบบบังคับโดยให้ Include file ที่ชื่อ page.asp เพียงอย่างเดียว

<@--#include file="<+=urlLink+>" -->
นี่คือแบบที่ไม่สามารถจะทำงานได้ เนื่องจาก หาก ASP เจอเครื่องหมาย # ก็จะเข้าใจว่าเป็น comment ทันที
จึงไม่แสดงผล ซึ่งผมเอง งง อยู่นาน ว่าทำไมมันถึงผิดพลาด จึงไปค้นหลายๆ เว็บ
แล้วก็เจอวิธีแก้ไข โดยใช้ วิธีการอื่นแทน ดังนี้

dim strFile, fso, fsoFile
strFile = "upload/"& CStr(filename)
If strFile <> "" then
set fso = createObject("Scripting.FileSystemObject")
set fsoFile = fso.openTextFile(Server.MapPath(strFile))
response.write "" & fsoFile.readAll & ""
set fso = nothing
set fsoFile = nothing
end if

ซึ่งเป็นการแก้ไขด้วยการดึงข้อความจากลิงค์ที่กำหนดมาจนครบ แล้วถึงจะแสดงผล
เป็นวิธีการพื้นๆ แต่ก็ใช้ได้จริง ซึ่งถ้าใครมีวิธีการที่ดีกว่านี้ ก็ช่วยแนะนำด้วยนะครับ
จะขอบคุณมากๆ เลย ที่มานะครับอยู่ที่เว็บ
http://www.developerfusion.co.uk/show/234/

สำหรับวิธีการเขียนต่างๆ ของ ASP ถ้าว่างๆ ก็จะมาเขียนลงที่นี่แหล่ะครับ
แต่สงสัยว่าจะเป็น ASP.NET แล้วล่ะคราวนี้ เพราะโปรเจกจบต้องทำ
ยังไงก็แนะนำเพิ่มเติมได้นะครับ ผมยินดีรับฟังความคิดเห็น "ที่สร้างสรรค์" จากผู้อ่านทุกท่านนะครับ

No comments:

Post a Comment

Blog Comment

บทความที่ได้รับความนิยม