Rotate ป้ายไม่ต้องพึ่ง Component
โดย: สุรัตน์ บัณฑิตลักษณะ
ที่มา: www.thaiasp.net
     หลายๆ คนบ่นกับผมว่า หาคอมโพเนนท์ Adrotate ไม่เจอ ทำไมหายากจัง หาได้จากที่ไหนบ้าง ซ้ำร้ายยิ่งกว่านั้นบางคน ก็มี Component อยู่ แต่ไม่รู้จะลงยังไง ใช้งานยังไง สำหรับ ผมแล้ว การพึ่ง Component เป็นอะไรที่หงุดหงิดสำหรับ ผมมากครับ ดังนั้นตั้ง แต่ เริ่มเขียน ASP ในครั้ง แรกๆ ผมบอกกับตัวเองว่า จะทำทุกวิธีไม่ให้ เรายึดติดอยู่กับ คอมโพเนนท์ :-)
Rotate มี 2 แบบ
     การบัญญัติ วิธีการ Rotate สำหรับ ผม มีอยู่ 2 แบบ ครับ คือ
1. Rotate แบบ ไม่มีจุดหมาย วนไปเรื่อยๆ ยกตัวอย่างเช่น เรามีป้ายอยู่ 4 ป้าย การ Rotate แบบนี้ก็จะวนไปเรื่อยๆ ไม่สนใจว่า เครื่องที่เห็นป้ายจะเห็น ป้ายซ้ำ เดิมมั้ย หรือ ว่า จะข้ามบางป้ายไปรึเปล่า (ดูที่ รูปที่ 1 ข้างล่างนี้)
2. Rotate แบบ มีจุดหมาย คือ ตั้งเป้าเอาไว้ว่า เครื่องแต่ละเครื่องที่เรียกเว็บ จะต้องเห็นป้ายครบถ้วน ตามลำดับ เช่น มีป้ายอยู่ 4 ป้าย เครื่องที่เรียกเว็บ ต้อง เห็นป้าย ตั้ง แต่ ป้ายที่ 1 ไปเรื่อยๆ จนครบ ทั้ง 4 ป้าย

ฟังแล้วงง ๆ นะครับ แต่ถ้าลองเห็นวิธ๊การเขียน แล้ว รับรองว่า ไม่งงอย่างที่คิดหรอกครับ
เตรียมอะไรบ้าง
เอาเป็นว่า ผมจะใช้ป้ายทั้งหมด 5 ป้ายนะครับ ดังนั้นเราก็ต้องเตรียมรูปทั้งหมด 5 รูปชื่อว่า pic1 ไปจนถึง pic5 .jpg ครับ (Download คลิกที่นี่ ) แล้วที่จะขาดไม่ได้สำหรับการ Rotate แบบแรกก็คือ ไฟล์ Text สำหรับเก็บ ค่าว่า วนไปถึงป้ายไหนแล้ว
เอาแบบไม่มีจุดหมายก่อน
     การ Rotate แบบ ไม่มีจุดหมายจะ อาศัย ไฟล์ Text เพียงหนึ่ง ไฟล์เพื่อเก็บค่าว่า ตอนนี้ Rotate ไปถึงไหนกันแล้ว ผมกำหนดให้ ไฟล์ นี้ชื่อ Rotate.txt นะครับ หลักการคร่าวๆ ก็คือการนำค่าจากไฟล์นี้ออกมา อ่าน แล้วก็แสดงป้ายตามค่านั้น เช่นอ่าน ได้ว่า 4 ก็ให้แสดงป้ายที่ 4 จากนั้น ก็จะเก็บ ค่า ป้ายถัดไปลง ไปในกรณีนี้ก็จะเก็บค่า 5 ลงไป คราวหน้าที่เปิด อ่านก็จะ แสดง ป้าย หมายเลข 5 และวนการทำงานไปเรื่อยๆ
ไฟล์ Rotate.asp (แบบไม่มีจุดหมาย)

<%
Function write(ad) 'กำหนดฟังก์ชัน สำหรับเขียนหมายเลขป้าย
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile(Server.MapPath("Rotate.txt"),
True)
a.WriteLine(ad)
a.close
End Function

Function Read() 'กำหนดฟังก์ชัน สำหรับอ่านหมายเลขป้าย
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.OpenTextFile(Server.MapPath("Rotate.txt"),
1,False)
Read=a.ReadLine()
a.close
End Function


If Read() = "1" then 'ตรวจสอบว่าค่าในไฟล์ Rotate.txt คือ 1 หรือไม่
image="pic1.jpg"
link="pic1.html"
Write(2) 'ใส่ค่า เป็น 2 เพื่อเลื่อนเป็นป้ายที่ 2 ในคราวหน้า

elseif Read() ="2" then
image="pic2.jpg"
link="pic2.html"
Write(3) 'ใส่ค่า เป็น 3เพื่อเลื่อนเป็นป้ายที่ 3ในคราวหน้า

elseif Read() ="3" then
image="pic3.jpg"
link="pic3.html"
Write(4) 'ใส่ค่า เป็น 4เพื่อเลื่อนเป็นป้ายที่ 4ในคราวหน้า

elseif Read() ="4" then
image="pic4.jpg"
link="pic4.html"
Write(5) 'ใส่ค่า เป็น 5เพื่อเลื่อนเป็นป้ายที่ 5 ในคราวหน้า

else
image="pic5.jpg"
link="pic5.html"
Write(1) 'ใส่ค่า เป็น 1เพื่อเลื่อนเป็นป้ายที่ 1ในคราวหน้า


End If%>
<a href="<%=link%>"><img src="<%=image%>"></a>
    ทดลองดูไฟล์ได้ โดยการ click ที่นี่ ครับ
แล้วถ้าเป็นแบบมีจุดหมายบ้าง
    การ Rotate แบบนี้ จะอาศัย ไฟล์ ชนิดหนึ่ง ที่เรียกกันว่า คุกกี้ เราจะอาศับ คุกกี้ในการตรวจสอบว่า เครื่อง ผู้เยี่ยมชมเว็บเพจ เห็นป้ายโฆษณา อันไหนแล้ว แล้วจะแสดง ป้ายใด ต่อไป สังเกตได้ว่า Concept ก็จะเหมือนกับ แบบไม่มีจุดหมายนั่นแหละครับ เพียงแต่ ค่าที่เรา นำออกมา มันมาจาก คุกกี้ ซึ่ง น่าจะเป็นค่าเฉพาะของ แต่ละเครื่อง ทำให้ดูเป็นระบบมากกว่า
ไฟล์ Rotate2.asp
<%if request.cookies("ad")="1" then 'ตรวจสอบว่าค่าใน Cookies คือ 1 หรือไม่
image="pic1.jpg"
link="pic1.html"
response.cookies("ad")="2"
Response.Cookies("ad").Expires = Date+20 'กำหนดวันหมดอายุของ Cookie

elseif request.cookies("ad")="2" then
image="pic2.jpg"
link="pic2.html"
response.cookies("ad")="3"
Response.Cookies("ad").Expires = Date+20

elseif request.cookies("ad")="3" then
image="pic3.jpg"
link="pic3.html"
response.cookies("ad")="4"
Response.Cookies("ad").Expires = Date+20

elseif request.cookies("ad")="4" then
image="pic4.jpg"
link="pic4.html"
response.cookies("ad")="5"
Response.Cookies("ad").Expires = Date+20

elseif request.cookies("ad")="5" then
image="pic5.jpg"
link="pic5.html"
response.cookies("ad")="1"
Response.Cookies("ad").Expires = Date+20

else
image="pic1.jpg"
link="pic1.html"
response.cookies("ad")="2"
Response.Cookies("ad").Expires = Date+20
end if%>
<a href="<%=link%>"><img src="<%=image%>"></a>
ตัวอย่างการทำงานของไฟล์ Rotate2.asp ดูได้จาก ที่นี่ ครับ จริงๆ แล้ว ตอนนี้ผู้อ่านคงไม่เห็นผลที่แตกต่างกันเท่าไหร่ครับ เพราะเล่นอยู่ คนเดียว แต่ถ้าลองเอา Source Code เหล่านี้ ไปดัดแปลงใช้กับ หน้าแรก ของ โฮมเพจท่านดูนะครับ รับรองว่า ได้เสียงตอบรับ แน่นอน


Home | ASP Board | Coldfusion Board | Source Code | Lesson(beginner)
Lesson(Professional) l My Jobs | E-card |About Us


Copyright © 2000 www.ThaiASP.net All rights reserved.