พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com
ASP programming / textfile&Array
korakot_titla
korakot_titla
Thu 6 Jul 2006 21:26:20

รบกวนหน่อยนะครับ คือ หน้า test.asp ซึ่งมี textfile อยู่ 1 อัน ผมป้อนเลข 5 ลงใน textfile แล้วผมจะส่งค่าไปยังหน้า text1.asp นะครับ ซึ่งหน้านี้จะรับ 5 มา แล้วก็จะให้แสดง textfile 5 อันนะครับ ตามที่ได้ป้อนมา แล้วถ้าหากได้แล้ว ผมจะดึงค่าแต่ละตัวมาอย่างไรครับเพื่อนำมาบันทึกลงในฐานข้อมูลนะครับ (addnew) นะครับ

Administrator
Thu 6 Jul 2006 21:53:32
สมมุติว่าใน test.asp มี textbox ชื่อ textfiled

ในหน้า 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)

ประมาณนี้ครับ
korakot_titla
korakot_titla
Fri 7 Jul 2006 15:54:18

คือ 5 ค่าที่รับมาจาก textfile ในหน้า test.asp นะครับ และถ้าหากว่าป้อนเลข 3 ลงใน textfile ในหน้า test.asp แล้วส่งมายังหน้า test1.asp แล้ว textfile ก็จะแสดง 3 อัน ตามค่าที่รับเข้ามาจากหน้า test.asp นะครับ

Administrator
Fri 7 Jul 2006 16:44:28
อืม การส่งค่าระหว่าง page นั้นมีอยู่เพียง 4 แบบครับ
1. Session
2. Cookie
3. Get
4. Post

ซึ่งทั้งหมดนี้มีการอ้างแบบ array อยู่แล้วครับ วิธีง่ายๆก็คือ ต้องตั้งชื่อ textbox ทั้งหมดให้มี prefix เดียวกันครับ เช่น txt_ หลังจากนั้นในหน้ารับข้อมูลก็ทำการ loop เพื่อดูว่ามีการส่งค่าผ่านตัวแปรที่มี prefix เดียวกับที่ตั้งไว้หรือไม่ ตัวไหนมีค่าก็เอาค่าเหล่านั้นมาใช้ครับ
korakot_titla
korakot_titla
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

ไม่มีค่า

Administrator
Thu 20 Jul 2006 15:15:47
จะให้อยู่ในส่วนไหนครับ client side script หรือ server side script
ถ้า 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 เหมือนกันครับ อันนี้ไม่แน่ใจครับไม่ค่อยได้ใช้
korakot_titla
korakot_titla
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

Administrator
Fri 28 Jul 2006 20:21:27
จากโค๊ดผมเห็นมี 2 loop ซ้อนกันอยู่ ซึ่งก็น่าจะทำงานได้ปกติครับ ผมว่าลองป้อนค่าลงใน text ทั้ง2อันให้เหมือนกัน แล้ว Split เอามาเปรียบเทียบกันดูครับ น่าจะติดที่อักขระพิเศษมากกว่าครับเช่น \0 ในตอนจบของ string ครับ
korakot_titla
korakot_titla
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>

Administrator
Tue 1 Aug 2006 07:26:04
คุณก็ทำการ loop เพื่อเช็คก่อนว่ามีค่าซ้ำหรือไม่ ถ้าไม่มีก็ทำการ loop เพื่อทำการ insert ครับ
Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login