Thu 6 Jul 2006 21:26:20
รบกวนหน่อยนะครับ คือ หน้า test.asp ซึ่งมี textfile อยู่ 1 อัน ผมป้อนเลข 5 ลงใน textfile แล้วผมจะส่งค่าไปยังหน้า text1.asp นะครับ ซึ่งหน้านี้จะรับ 5 มา แล้วก็จะให้แสดง textfile 5 อันนะครับ ตามที่ได้ป้อนมา แล้วถ้าหากได้แล้ว ผมจะดึงค่าแต่ละตัวมาอย่างไรครับเพื่อนำมาบันทึกลงในฐานข้อมูลนะครับ (addnew) นะครับ
ในหน้า text1.asp ที่เป็นหน้าเพื่อรับค่าเลข 5 มานั้น ก็อาจจะใช้
<input type="text" name="text1" value="<%=request.form("textfield1") %>">
<input type="text" name="text2" value="<%=request.form("textfield1") %>">
<input type="text" name="text3" value="<%=request.form("textfield1") %>">
<input type="text" name="text4" value="<%=request.form("textfield1") %>">
<input type="text" name="text5" value="<%=request.form("textfield1") %>">
การนำค่าแต่ละตัวหลังจากมีการ submit (แบบ post) แล้วก็เรียกผ่าน request.form(ชื่อ textbox) เท่านั้นครับ
การนำไปบันทึกลงฐานข้อมูลนั้นก็นำค่าไปใส่ใน querystring ครับ
set qs = "INSERT INTO table_name(fieldname) VALUES('" & request.form("fieldname") & "')"
conn.execute(qs)
ประมาณนี้ครับ
Fri 7 Jul 2006 15:54:18
คือ 5 ค่าที่รับมาจาก textfile ในหน้า test.asp นะครับ และถ้าหากว่าป้อนเลข 3 ลงใน textfile ในหน้า test.asp แล้วส่งมายังหน้า test1.asp แล้ว textfile ก็จะแสดง 3 อัน ตามค่าที่รับเข้ามาจากหน้า test.asp นะครับ
1. Session
2. Cookie
3. Get
4. Post
ซึ่งทั้งหมดนี้มีการอ้างแบบ array อยู่แล้วครับ วิธีง่ายๆก็คือ ต้องตั้งชื่อ textbox ทั้งหมดให้มี prefix เดียวกันครับ เช่น txt_ หลังจากนั้นในหน้ารับข้อมูลก็ทำการ loop เพื่อดูว่ามีการส่งค่าผ่านตัวแปรที่มี prefix เดียวกับที่ตั้งไว้หรือไม่ ตัวไหนมีค่าก็เอาค่าเหล่านั้นมาใช้ครับ
Thu 20 Jul 2006 14:12:34
รบกวนอีกทีนะครับ ต่อจากของเดิมนะครับ คือสมมุติดผมป้อนเลข 2 ในหน้า test.asp แล้วส่งค่ามายังหน้า test1.asp ก็จะแสดง textfield มา 2 อันแล้วพอผม ป้อนค่าใน textfield ที่แสดงมา2 อัน เพียงค่าเดียวคือ textfield อันแรก แต่อันที่ 2 ไม่ได้ป้อนลงไป แล้วส่งมายังหน้า test2.asp แสดงว่าค่าของ textfield ในหน้า test1.asp นั้นเป็นค่าว่างนะครับ ผมจะเช็คได้อย่างไรว่า ค่าของ textfield อันที่ 2 (เป็นอาเรย์ตำแหน่งที่ 1) นั้นมีค่าว่างได้อย่างไรครับ ไม่ทราบว่าพอจะเข้าหรือป่าวครับ กรุณาช่วยหน่อยนะครับ
-------------------
test.asp
| 2 |
---------------------
test1.asp
| 1 |
| ไม่ได้ใส่ค่า |
----------------------------
test2.asp
ถ้าค่า 1 มีค่าจะแสดงค่า
ถ้าค่า 2 ไม่ได้ใส่ค่าลงไปผมจะให้แสดงว่ายังไม่ได้ใส่ค่า
---------------------------------
ตัวอย่างที่ออกมา
1
ไม่มีค่า
ถ้า client side ก็ javascript ครับ
<script language="javascript" type="text/javascript">
function validate(obj){
for(i = 0; i < obj.length; i++){
if(obj[i].type == "text" && obj[i].value == ""){
obj[i].value = "ไม่ได้ใส่ค่า";
}
}
}
</script>
<form action="..." onsubmit="validate(this)">
...
</form>
ส่วนถ้าเป็น asp ก็คงเป็น array เหมือนกันครับ อันนี้ไม่แน่ใจครับไม่ค่อยได้ใช้
Fri 28 Jul 2006 14:15:15
มาอีกรอบครับ ครวนี้ติดตรงการเช็คค่าของรหัสประจำตัวประชาชนสมมุติว่าผมป้อนเลข 2 แล้วส่งค่าไปยังอีกหน้าหนึ่งคือหน้า test1.asp เหมือนเดิมนะครับแล้วก็จะแสดง textfild ออกมา 2 อัน แล้วผมป้อนรหัสประจำตัวประชาชนซึ่งผมเช็คกับฐานข้อมูลผมลองเอาอันที่ซ้ำมาใส่ใน textfield อันแรก แล้วอันที่สองป้อนอันที่ไม่ซ้ำซึ่งพอผม submit ไปแล้วก็จะสามารถทำการเช็คได้นะครับว่ารหัสประจำตัวประชาชนคนนั้นซ้ำแล้วพอผม back กลับแล้วเปลี่ยนค่าใน textfield ที่รับค่ารหัสประจำตัวประชาชน textfield อันแรกผมป้อนรหัสที่ไม่ซ้ำแล้วอัน textfield อันที่สองผมลองป้อนอันที่ซ้ำไป แล้วพอผม submit ไปมันจะไม่สามารถทำการตรวจเช็คได้เลยว่ามีรหัสซ้ำ ไม่ทราบว่าเป็นเพราะอะไร ช่วยดูโค้ดด้านล่างให้ผมหน่อยนะครับไม่ทราบว่าเป็นเพราะอะไร ขอบคุณมากครับ
'----------------------------------Code------------------------------------
myIdentity=Split(request.Form("txt_IdentityCard"),",")
name_index=Split(MyName,",")
maxcounter=ubound(name_index)
FOR n=0 TO maxcounter
Sql="Select * From tblQuota "
Set Rs=server.CreateObject("adodb.recordset")
Rs.open Sql,conn,1,3
while not rs.eof
response.write "DB:"& "("&n&")" &rs("idcard")&","
response.write " | "&"รับมา: "&myIdentity(n)&" | "&"<br>"
if rs("idcard")=myIdentity(n)then
response.write "ซ้ำ"&"<br>"
exit for
end if
rs.movenext
wend
response.Write "- - - - - - - - - - - - - - - - - - - - - - - - - - "&"<br>"
next
Rs.close
Mon 31 Jul 2006 10:45:41
รบกวนอีกทีนะครับคือตอนนี้สามารถทำการเช็คได้แล้วว่ามีรหัสอันไหนที่ซ้ำบ้างแต่ติดปัญหาอีกอย่างคือ สมมุติผมป้อนรหัสประชาชนใน textfield อันที่ 1 ไม่ซ้ำส่วนอันที่สองผมทำการป้อนรหัสประชาชนที่ซ้ำลงไป พอผมกด submit แล้วระบบก็จะทำการบันทึกรหัสประชาชนอันที่ 1 ส่วนอันที่สองที่ผมลองป้อนซ้ำก็จะเช็คว่ารหัสซ้ำแล้วผมก็ให้กลับมาแก้ไขรหัสที่ซ้ำพอแก้ไขรหัสประชาชนใน textfield อันที่สองไม่ให้ซ้ำ พอกด submit ไปก็จะมี textfield อันที่ 1 ซ้ำเพราะได้ทำการบันทึกไปก่อนหน้านี้แล้ว
ไม่ทราบว่าผมอธิบาย งง ไปหรือป่าวครับ ไม่ทราบว่าพอจะเข้าใจหรือป่าวครับ
สรุปคือ พอมีวิธีแก้ไขหรือป่าวครับโดยทำการเช็ครหัสประชาชนก่อนทั้งหมดแล้วหลังจากนั้นถ้าหากซ้ำก็ยังไม่บันทึกให้กลับไปแก้ไขจนเหลือแต่รหัสประชาชนที่ไม่ซ้ำกับฐานข้อมูลแล้วก็ให้ทำการบันทึกทีเดียวเลย พอจะได้หรือป่าวครับ รบกวนอีกทีนะครับ ขอบคุณมากครับ
ตัวอย่าง โค้ดที่ผมเขียนนะครับ
FOR n=0 TO maxcounter
Sql="Select * From tblQuota "
Set Rs=server.CreateObject("adodb.recordset")
Rs.open Sql,conn,1,3
while not rs.eof
response.write "DB:"& "("&n&")" &rs("idcard")&" | "
response.write Ltrim(myIdentity(n))
if rs("idcard")=Ltrim(myIdentity(n)) then%>
<script language="JavaScript">
alert("รหัสประจำตัวประชาชน : <%=myIdentity(n)%> ได้ทำการสมัครไปแล้ว");
window.history.go(-1);
</script>
<%
exit for
end if
rs.movenext
wend
on error resume next
if GPA(n)>4 then%>
<script language="JavaScript">
alert("รูปแบบของเกรดเฉลี่ยไม่ถูกต้อง");
window.history.go(-1);
</script>
<%
exit for
end if
if Len(myIdentity(n)) <13 then%>
<script language="JavaScript">
alert("มีรหัสประชาชนน้อยกว่า 13 หลัก");
window.history.go(-1);
</script>
<%
exit for
else
%>
<%
Rs.addnew
Rs("prefix")=Ltrim(SName(n))
Rs("firstname")=Ltrim(name_index(n))
Rs("lastname")=Ltrim(myLastName(n))
Rs("gpa")=Ltrim(GPA(n))
Rs("idcard")=Ltrim(myIdentity(n))
Rs("school")=NameSchool
Rs("province")=Provice
Rs("city")=City
Rs("tambon") =Tambon
Rs("MajorID")=myID
Rs("ZipCode")=ZipCode
Rs("myconfirm")=0
Rs.update
end if
next
Rs.close
%>
<script language="JavaScript">
alert("ได้ทำการบันทึกข้อมูลเรียบร้อยแล้ว");
window.location="List_amount.asp";
</script>

















