Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,038

HOME > ASP > ASP Forum > ใช้ code asp แบ่งหน้าตามตัวอย่างในบทเรียนแล้วขึ้น time out ค่ะ



 

ใช้ code asp แบ่งหน้าตามตัวอย่างในบทเรียนแล้วขึ้น time out ค่ะ

 



Topic : 008703

Guest




ใช้ code asp แบ่งหน้าตามตัวอย่างในบทเรียน ASP แล้วขึ้น time out ค่ะ
ขึ้น error บนหน้าเวปแบบนี้ค่ะ

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E31)
[Microsoft][ODBC SQL Server Driver]Timeout expired
/thai-asp/Sample1.asp, line 26

บรรทัดที่ 26 คือ
RS.open Sql,Conn,1,3

ลองสังเกตดูค่ะพอใส่ข้อมูลแล้วกด ค้นหา เครื่อง SQL server2000 จะพยายามอ่านข้อมูล ไฟ harddisk กระพริบนานมาก แต่สุดท้ายก็ขึ้น error แบบที่บอกไปค่ะ

ลืมบอกไปฐานข้อมูลนี้มีประมาณ 30,000 เรคคอร์ด

โดยกำหนดแบ่งให้มี 50 เรคคอร์ดให้ 1 หน้าค่ะ

ช่วยแก้ปัญหาให้ด้วยค่ะ ลองมาหลายวิธีแล้วค่ะ



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 13 มิ.ย. 2549 09:22:08 By : เป็ก View : 3870 Reply : 8
 

 

No. 1

Guest


วนลูปผิดหรือป่าวครับ ถึงขึ้น Error แบบนี้






Date : 13 มิ.ย. 2549 09:26:37 By : ...
 


 

No. 2

Guest


ช่วยดูโค้ดให้ด้วยนะค่ะ ขอบคุณค่ะ
ไม่รู้ว่าผิดตรงไหน แต่ copy โค้ดมาจากบทเรียน asp เลยนะค่ะ

<html>
<body>
<%
keyword=Request.Form("keyword")
if keyword="" then
keyword=Request.QueryString("keyword")
end if
%>
<form name="form1" method="post" action="Sample1.asp">
ค้นหาจาก Description
<input type="text" name="keyword" value="<%=keyword%>">
<input type="submit" name="Submit" value="ค้นหา">
</form>

<%
if keyword="" then
Response.write("<br>กรุณากรอก Keyword เพื่อค้นหาจาก Field Description<hr>")
else
pageLen = 10 'กำหนดจำนวนแต่ละหน้าที่ต้องการแสดงกี่ Reccord
pageNo = request.QueryString("pageNo")
if pageNo="" then pageNo = 1
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "MTD" ,"mtdasp" , "1234"
Sql="Select DepoID, Monthly, PartID, ForkNumber, Labour, Potent, Supply, Quantity, Introduc, Inoperative, Tran_in, Tran_out, Pay_in, Pay_out, Sale, Total, Spare, Oil From livestock where DepoID like '%"&Request.Form("keyword")&"%'"
Set RS =Server.CreateObject("ADODB.Recordset")
RS.open Sql,Conn,3,3
Nrecord=RS.recordcount
Rs.pageSize = pageLen
totalPage = Rs.PageCount
Rs.absolutePage = pageNo

If Rs.EOF Then
%>
ไม่มีข้อมูลในตาราง !
<%Else%>
<table border="1">
<tr bgcolor="Silver">
<td>DepoID</td>
<td>Monthly</td>
<td>PartID</td>
<td>Forknumber</td>
<td>Labour</td>
<td>Potent</td>
<td>Supply</td>
<td>Quantity</td>
<td>Introduc</td>
<td>Inoperative</td>
<td>Tran_in</td>
<td>Tran_out</td>
<td>Pay_in</td>
<td>Pay_out</td>
<td>Sale</td>
<td>total</td>
<td>spare</td>
<td>oil</td>
</tr>
<%
recNo=1
Do While Not RS.EOF and recNo <= pageLen
%>
<tr>
<td><%= Rs("DepoID")%></td>
<td><%= Rs("Monthly")%></td>
<td><%= Rs("PartID")%></td>
<td><%= Rs("Forknumber")%></td>
<td><%= Rs("Labour")%></td>
<td><%= Rs("Potent")%></td>
<td><%= Rs("Supply")%></td>
<td><%= Rs("Quantity")%></td>
<td><%= Rs("Introduc")%></td>
<td><%= Rs("Inoperative")%></td>
<td><%= Rs("Tran_in")%></td>
<td><%= Rs("Tran_out")%></td>
<td><%= Rs("Pay_in")%></td>
<td><%= Rs("Pay_out")%></td>
<td><%= Rs("Sale")%></td>
<td><%= Rs("Total")%></td>
<td><%= Rs("Spare")%></td>
<td><%= Rs("Oil")%></td>
</tr>
<%
recNo=recNo+1
RS.MoveNext
Loop
rs.close
conn.close
%>
</table>
<%
end if
%>
<br>
<br>
จำนวน: <%=Nrecord%> รายการ<br>
ขณะนี้อยู่หน้า <%=pageNo%> ในทั้งหมด <%=totalPage%> หน้า
<%
if cint(pageno) > 1 then %>
<br>
<a href="Sample1.asp?pageNo=1&keyword=<%=keyword%>">หน้าแรก</a> &nbsp; <a href="Sample1.asp?pageNo=<%=pageNo-1%>&keyword=<%=keyword%>">ย้อนกลับ</a>
&nbsp;
<% end if
if cint(pageno) < totalPage then %>
<a href="Sample1.asp?pageNo=<%=pageNo+1%>&keyword=<%=keyword%>">หน้าต่อไป</a>&nbsp; <a href="Sample1.asp?pageNo=<%=totalPage%>&keyword=<%=keyword%>">หน้าสุดท้าย</a>

<% end if


%>
<br>
กระโดดไปหน้า
<%for idx = 1 to totalPage
%>
<a href="Sample1.asp?pageNo=<%=idx%>&keyword=<%=keyword%>">
<% if idx=cint(pageno) then%>
<b><%=idx%></b>
<%else %>
<%=idx%>
<%end if%>
</a>&nbsp;
<%
next
end if
%>



Date : 13 มิ.ย. 2549 09:31:08 By : เป็ก
 

 

No. 3

Guest



Date : 13 มิ.ย. 2549 11:24:38 By : phoey
 


 

No. 4

Guest



Date : 13 มิ.ย. 2549 11:25:26 By : phoey
 


 

No. 5

Guest


ไม่สามารถบอกได้
Date : 13 มิ.ย. 2549 11:26:18 By : phoey
 


 

No. 6

Guest


<%
if keyword="" then
Response.write("<br>กรุณากรอก Keyword เพื่อค้นหาจาก Field Description<hr>")
else
pageLen = 10 'กำหนดจำนวนแต่ละหน้าที่ต้องการแสดงกี่ Reccord
pageNo = request.QueryString("pageNo")
if pageNo="" then pageNo = 1
Set Conn = Server.CreateObject("ADODB.Connection")
//เพิ่มตรงนี้ดูนะครับ
Conn.ConnectionTimeout = 0
Conn.CommandTimeout = 0

Conn.Open "MTD" ,"mtdasp" , "1234"
Sql="Select DepoID, Monthly, PartID, ForkNumber, Labour, Potent, Supply, Quantity, Introduc, Inoperative, Tran_in, Tran_out, Pay_in, Pay_out, Sale, Total, Spare, Oil From livestock where DepoID like '%"&Request.Form("keyword")&"%'"
Set RS =Server.CreateObject("ADODB.Recordset")
RS.open Sql,Conn,3,3
Nrecord=RS.recordcount
Rs.pageSize = pageLen
totalPage = Rs.PageCount
Rs.absolutePage = pageNo

If Rs.EOF Then
%>

Date : 13 มิ.ย. 2549 13:05:23 By : มือใหม่
 


 

No. 7

Guest


ทำได้แล้วค่ะ โดยเพิ่ม
Conn.ConnectionTimeout = 0
Conn.CommandTimeout = 0

ตามที่คุณมือใหม่บอกไว้ ใช้ได้แล้ว

แต่ติดปัญหาต่อมาคือ พอคลิกที่หน้าต่อไป หรือหน้า 2 หรือคลิกที่หน้าไหนก็ตาม ข้อมูลจะไม่มาและจะขึ้นบนหนเเวปแบบนี้ค่ะ รบกวนช่วยตอบด้วยนะค่ะ
Error Type:
Active Server Pages, ASP 0113 (0x80004005)
The maximum amount of time for a script to execute was exceeded. You can change this limit by specifying a new value for the property Server.ScriptTimeout or by changing the value in the IIS administration tools.
/thai-asp/Sample1.asp


ไม่รู้จะแก้ยังไง
Date : 14 มิ.ย. 2549 11:10:59 By : เป็ก
 


 

No. 8

Guest


ลองเอา code นี้ไปดัดแปลง คือกำลังหัดใช้จาก Dream MX V.6 อยู่น่ะ
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
Dim MM_boo_STRING
MM_boo_STRING= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("test50.mdb")
%>
<%
Dim rs1
Dim rs1_numRows

Set rs1 = Server.CreateObject("ADODB.Recordset")
rs1.ActiveConnection = MM_boo_STRING
rs1.Source = "SELECT * FROM WtNames"
rs1.CursorType = 0
rs1.CursorLocation = 2
rs1.LockType = 1
rs1.Open()

rs1_numRows = 0
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index

Repeat1__numRows = 5
Repeat1__index = 0
rs1_numRows = rs1_numRows + Repeat1__numRows
%>
<%
' *** Recordset Stats, Move To Record, and Go To Record: declare stats variables

Dim rs1_total
Dim rs1_first
Dim rs1_last

' set the record count
rs1_total = rs1.RecordCount

' set the number of rows displayed on this page
If (rs1_numRows < 0) Then
rs1_numRows = rs1_total
Elseif (rs1_numRows = 0) Then
rs1_numRows = 1
End If

' set the first and last displayed record
rs1_first = 1
rs1_last = rs1_first + rs1_numRows - 1

' if we have the correct record count, check the other stats
If (rs1_total <> -1) Then
If (rs1_first > rs1_total) Then
rs1_first = rs1_total
End If
If (rs1_last > rs1_total) Then
rs1_last = rs1_total
End If
If (rs1_numRows > rs1_total) Then
rs1_numRows = rs1_total
End If
End If
%>

<%
' *** Recordset Stats: if we don't know the record count, manually count them

If (rs1_total = -1) Then

' count the total records by iterating through the recordset
rs1_total=0
While (Not rs1.EOF)
rs1_total = rs1_total + 1
rs1.MoveNext
Wend

' reset the cursor to the beginning
If (rs1.CursorType > 0) Then
rs1.MoveFirst
Else
rs1.Requery
End If

' set the number of rows displayed on this page
If (rs1_numRows < 0 Or rs1_numRows > rs1_total) Then
rs1_numRows = rs1_total
End If

' set the first and last displayed record
rs1_first = 1
rs1_last = rs1_first + rs1_numRows - 1

If (rs1_first > rs1_total) Then
rs1_first = rs1_total
End If
If (rs1_last > rs1_total) Then
rs1_last = rs1_total
End If

End If
%>
<%
Dim MM_paramName
%>
<%
' *** Move To Record and Go To Record: declare variables

Dim MM_rs
Dim MM_rsCount
Dim MM_size
Dim MM_uniqueCol
Dim MM_offset
Dim MM_atTotal
Dim MM_paramIsDefined

Dim MM_param
Dim MM_index

Set MM_rs = rs1
MM_rsCount = rs1_total
MM_size = rs1_numRows
MM_uniqueCol = ""
MM_paramName = ""
MM_offset = 0
MM_atTotal = false
MM_paramIsDefined = false
If (MM_paramName <> "") Then
MM_paramIsDefined = (Request.QueryString(MM_paramName) <> "")
End If
%>
<%
' *** Move To Record: handle 'index' or 'offset' parameter

if (Not MM_paramIsDefined And MM_rsCount <> 0) then

' use index parameter if defined, otherwise use offset parameter
MM_param = Request.QueryString("index")
If (MM_param = "") Then
MM_param = Request.QueryString("offset")
End If
If (MM_param <> "") Then
MM_offset = Int(MM_param)
End If

' if we have a record count, check if we are past the end of the recordset
If (MM_rsCount <> -1) Then
If (MM_offset >= MM_rsCount Or MM_offset = -1) Then ' past end or move last
If ((MM_rsCount Mod MM_size) > 0) Then ' last page not a full repeat region
MM_offset = MM_rsCount - (MM_rsCount Mod MM_size)
Else
MM_offset = MM_rsCount - MM_size
End If
End If
End If

' move the cursor to the selected record
MM_index = 0
While ((Not MM_rs.EOF) And (MM_index < MM_offset Or MM_offset = -1))
MM_rs.MoveNext
MM_index = MM_index + 1
Wend
If (MM_rs.EOF) Then
MM_offset = MM_index ' set MM_offset to the last possible record
End If

End If
%>
<%
' *** Move To Record: if we dont know the record count, check the display range

If (MM_rsCount = -1) Then

' walk to the end of the display range for this page
MM_index = MM_offset
While (Not MM_rs.EOF And (MM_size < 0 Or MM_index < MM_offset + MM_size))
MM_rs.MoveNext
MM_index = MM_index + 1
Wend

' if we walked off the end of the recordset, set MM_rsCount and MM_size
If (MM_rs.EOF) Then
MM_rsCount = MM_index
If (MM_size < 0 Or MM_size > MM_rsCount) Then
MM_size = MM_rsCount
End If
End If

' if we walked off the end, set the offset based on page size
If (MM_rs.EOF And Not MM_paramIsDefined) Then
If (MM_offset > MM_rsCount - MM_size Or MM_offset = -1) Then
If ((MM_rsCount Mod MM_size) > 0) Then
MM_offset = MM_rsCount - (MM_rsCount Mod MM_size)
Else
MM_offset = MM_rsCount - MM_size
End If
End If
End If

' reset the cursor to the beginning
If (MM_rs.CursorType > 0) Then
MM_rs.MoveFirst
Else
MM_rs.Requery
End If

' move the cursor to the selected record
MM_index = 0
While (Not MM_rs.EOF And MM_index < MM_offset)
MM_rs.MoveNext
MM_index = MM_index + 1
Wend
End If
%>
<%
' *** Move To Record: update recordset stats

' set the first and last displayed record
rs1_first = MM_offset + 1
rs1_last = MM_offset + MM_size

If (MM_rsCount <> -1) Then
If (rs1_first > MM_rsCount) Then
rs1_first = MM_rsCount
End If
If (rs1_last > MM_rsCount) Then
rs1_last = MM_rsCount
End If
End If

' set the boolean used by hide region to check if we are on the last record
MM_atTotal = (MM_rsCount <> -1 And MM_offset + MM_size >= MM_rsCount)
%>
<%
' *** Go To Record and Move To Record: create strings for maintaining URL and Form parameters

Dim MM_keepNone
Dim MM_keepURL
Dim MM_keepForm
Dim MM_keepBoth

Dim MM_removeList
Dim MM_item
Dim MM_nextItem

' create the list of parameters which should not be maintained
MM_removeList = "&index="
If (MM_paramName <> "") Then
MM_removeList = MM_removeList & "&" & MM_paramName & "="
End If

MM_keepURL=""
MM_keepForm=""
MM_keepBoth=""
MM_keepNone=""

' add the URL parameters to the MM_keepURL string
For Each MM_item In Request.QueryString
MM_nextItem = "&" & MM_item & "="
If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
MM_keepURL = MM_keepURL & MM_nextItem & Server.URLencode(Request.QueryString(MM_item))
End If
Next

' add the Form variables to the MM_keepForm string
For Each MM_item In Request.Form
MM_nextItem = "&" & MM_item & "="
If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
MM_keepForm = MM_keepForm & MM_nextItem & Server.URLencode(Request.Form(MM_item))
End If
Next

' create the Form + URL string and remove the intial '&' from each of the strings
MM_keepBoth = MM_keepURL & MM_keepForm
If (MM_keepBoth <> "") Then
MM_keepBoth = Right(MM_keepBoth, Len(MM_keepBoth) - 1)
End If
If (MM_keepURL <> "") Then
MM_keepURL = Right(MM_keepURL, Len(MM_keepURL) - 1)
End If
If (MM_keepForm <> "") Then
MM_keepForm = Right(MM_keepForm, Len(MM_keepForm) - 1)
End If

' a utility function used for adding additional parameters to these strings
Function MM_joinChar(firstItem)
If (firstItem <> "") Then
MM_joinChar = "&"
Else
MM_joinChar = ""
End If
End Function
%>
<%
' *** Move To Record: set the strings for the first, last, next, and previous links

Dim MM_keepMove
Dim MM_moveParam
Dim MM_moveFirst
Dim MM_moveLast
Dim MM_moveNext
Dim MM_movePrev

Dim MM_urlStr
Dim MM_paramList
Dim MM_paramIndex
Dim MM_nextParam

MM_keepMove = MM_keepBoth
MM_moveParam = "index"

' if the page has a repeated region, remove 'offset' from the maintained parameters
If (MM_size > 1) Then
MM_moveParam = "offset"
If (MM_keepMove <> "") Then
MM_paramList = Split(MM_keepMove, "&")
MM_keepMove = ""
For MM_paramIndex = 0 To UBound(MM_paramList)
MM_nextParam = Left(MM_paramList(MM_paramIndex), InStr(MM_paramList(MM_paramIndex),"=") - 1)
If (StrComp(MM_nextParam,MM_moveParam,1) <> 0) Then
MM_keepMove = MM_keepMove & "&" & MM_paramList(MM_paramIndex)
End If
Next
If (MM_keepMove <> "") Then
MM_keepMove = Right(MM_keepMove, Len(MM_keepMove) - 1)
End If
End If
End If

' set the strings for the move to links
If (MM_keepMove <> "") Then
MM_keepMove = Server.HTMLEncode(MM_keepMove) & "&"
End If

MM_urlStr = Request.ServerVariables("URL") & "?" & MM_keepMove & MM_moveParam & "="

MM_moveFirst = MM_urlStr & "0"
MM_moveLast = MM_urlStr & "-1"
MM_moveNext = MM_urlStr & CStr(MM_offset + MM_size)
If (MM_offset - MM_size < 0) Then
MM_movePrev = MM_urlStr & "0"
Else
MM_movePrev = MM_urlStr & CStr(MM_offset - MM_size)
End If
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>

<body>
<table width="600" border="1" cellspacing="1" cellpadding="1">
<tr>
<td colspan="2"><div align="center">record <%=(rs1_first)%> to <%=(rs1_last)%> of <%=(rs1_total)%></div></td>
</tr>
<%
While ((Repeat1__numRows <> 0) AND (NOT rs1.EOF))
%>
<tr>
<td width="50%"><%=(rs1.Fields.Item("numFirstName").Value)%></td>
<td width="50%"><%=(rs1.Fields.Item("numLastName").Value)%></td>
</tr>
<%
Repeat1__index=Repeat1__index+1
Repeat1__numRows=Repeat1__numRows-1
rs1.MoveNext()
Wend
%>

<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td height="23" colspan="2"><div align="center"><A HREF="<%=MM_movePrev%>">&lt;&lt;prev</A> &nbsp;&nbsp;

<%
Pnum_counter = 0
For i = 1 to rs1_total Step MM_size
Pnum_counter = Pnum_counter + 1
Pnum_PageEndCount = i + MM_size - 1
if Pnum_PageEndCount > rs1_total Then Pnum_PageEndCount = rs1_total
if i <> MM_offset + 1 then
Response.Write("<a href=""" & Request.ServerVariables("URL") & "?" & MM_keepMove & "offset=" & i-1 & """>")
Response.Write(Pnum_counter & "</a>")
else
Response.Write("<b>" & Pnum_counter & "</b>")
End if
if(Pnum_PageEndCount <> rs1_total) then Response.Write("|")
next
%>


&nbsp;&nbsp; <A HREF="<%=MM_moveNext%>">next&gt;&gt;</A> </div></td>
</tr>
</table>
<P><FONT face="Verdana, Arial, Helvetica, sans-serif" color=#cc0000
size=2></FONT></P>
</body>
</html>
<%
rs1.Close()
Set rs1 = Nothing
%>

Date : 20 มิ.ย. 2549 18:15:02 By : T
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ใช้ code asp แบ่งหน้าตามตัวอย่างในบทเรียนแล้วขึ้น time out ค่ะ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่