พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com
ASP programming / จะหาผลต่างของเวลา
ปุ้ย
ปุ้ย
Sun 3 Sep 2006 16:15:08

แล้วในกรณีการจอง  ที่ ตัวเครื่องมันบอก  เป็น เดือน วันที่ แล้วปีละคะ  แล้วนำวันที่ออกเดินทางมาลบกับ วันที่เดินทางกลับ +1 จะทำยังไงคะ 

พอทำตามสูตรนี้ ที่เคื่องหนู  พ.ศ.มันเปลี่ยนค่ะ  เป็น 3092 ไม่รู้มาได้ยังไง  ทั้ง ๆ ที่สูตรไม่มีบวกเพิ่มเลยนะคะ

Administrator
Sun 3 Sep 2006 17:49:49
การบวกวันที่ควรเปลี่ยนเป็น unixtimestamp ก่อนครับโดยใช้ mktime() จากนั้นให้บวกเวลาเป็นจำนวนวินาทีที่ต้องการเข้าไปครับ

หรือถ้าใน db เก็บไว้เป็น datetime แล้วล่ะก็ใช้ function DATE_ADD() ใน MySQL ช่วยจะดีที่สุดครับ

เนื่องจากถ้าทำการบวกเลขวันโดยตรงจะมีปัญหาเนื่องจากไม่มีการทดวันสิ้นสุดของเดือนครับ
ปุ้ย
ปุ้ย
Mon 4 Sep 2006 11:06:48

หนูใช้ access 2000 เวลาcode ใช้dream8 ค่ะ ต้องแก้ที่ตัวโค้ดเหรอคะ  ดูที่คำสั่งก็ใช้ now แล้วนะคะ  แต่เวลาเก็บในDB มันเปลี่ยน พ.ศเป็น 3092 เฉยเลยค่ะ  หนูไม่รู้จะแก้ไขยังไงค่ะ เพื่อนบอกว่าลงวินโดว์ใหม่

เวลาจองรถ  ถ้าเราจองจากวันที่ 29/8/2549 ถึง 5/9/2549 มันจะ คำนวณผิดไปเลยค่ะ คือมันจะเก็บใน DB เป็น เวลาที่เดินทางจากวันที่ 29/8/3092 ถึงวันที่ 9/5/3092 แล้วจำนวนวันมันก็เปลี่ยไป และติดลบไปเลยนะคะ ทำให้การคำนวณวันที่ไป  และค่าเช่ารถ ผิดไปด้วยเลยค่ะ

เพราะจากสูตร คือ วันที่เดินทางกลับ - วันที่เดินทางไป + 1 ถูกไหมค่ะ  ทำไมที่เครื่องเพื่อนหนูได้ตรงตามคำนวณคะ 

ช่วยหนูด้วยนะคะ  ขอบคุณค่ะ

ปุ้ย
ปุ้ย
Mon 4 Sep 2006 11:16:41

ต้องแก้ตรงไหนค่ะ

<input type="hidden" name="car_id" value="<%=request("car_id")%>">

 

<input type="hidden" name="reserve_date" value="<%=now%>">

 

<input type="hidden" name="leave_date" value="<%=request("leave_date")%>">

 

  

 

<%                    leave_date = cdate(request("leave_date"))          

                          start_interval = date + 2

                        end_interval = date + 30

                        min_leave = date

                        max_reverse = date

set conn=server.CreateObject("ADODB.Connection")

conn.open"Driver=Microsoft Access Driver (*.mdb);dbq="&server.MapPath("car.mdb")

 

sql="select min(leave_date) as min_leave, max(reverse_date) as max_reverse from reserve "

 

sql = sql & " where car_id=" & request("car_id")

 

sql = sql  & " and leave_date>= cdate('" & leave_date & "')"  & " and reverse_date <= cdate('" &  end_interval  & "')"             

 

set rs=server.CreateObject("ADODB.Recordset")

rs.open sql,conn,1,3                                                                 

min_leave = rs("min_leave")

max_reverse = rs("max_reverse")                                                                                                         

  %>

   

<% if isnull(min_leave) then %>

 

<%       num_date = end_interval - leave_date  %>

 

<select name="reverse_date">

                       

<% for  i = 0 to num_date %>

                                                                                                                                                <option value="<%=leave_date+i%>"><%=leave_date+i%></option>

                                                                                                                                                            <% next %>

            </select>                                                                                                                     

            <% else %>                                           

<%                                                        

                                                                                   

if leave_date < min_leave then num_date = min_leave - leave_date   %>

 

<select name="reverse_date">

 

<% for  i = 0 to num_date-1 %>

 

<option value="<%=leave_date+i%>"><%=leave_date+i%></option>

 

<% next %>

</select>

 

<%                  

else

            if leave_date > max_reverse then

                                                                                                                                               

            num_date = end_interval - leave_date

 

%>

<select name="reverse_date">

 

<% for  i = 0 to num_date %>

 

<option value="<%=leave_date+i%>"><%=leave_date+i%></option>

 

<% next %>                                                                                                    

                                                                                                                                                                       

</select>

 

<%

end if   

 

end if

 

%>

    <% end if %>          

 

<%

                                       

Administrator
Mon 4 Sep 2006 12:00:00
เนื่องจาก Access ของคุณพยายามเพิ่มปีเข้าไปอีก 543 เนื่องจากตั้ง Regional option เป็นแบบไทยทำให้ Access จึงบวกปีเข้าไปให้ครับ

ลองเข้าไปที่
Start -> Settings -> Control Panel -> Regional & Language options
ลองดู format วันที่ที่เครื่องคุณใช้อยู่ครับว่าเป็นแบบใด dd/mm/yyyy หรือว่า mm/dd/yyyy

ส่วนตัวแล้วเมื่อทำการเพิ่มข้อมูลให้ใส่เป็น ค.ศ. แทนครับ ในรูปแบบ mm/dd/yyyy ครับ
ปุ้ย
ปุ้ย
Mon 4 Sep 2006 12:15:50

ที่ตัวเครื่องตั้งแบบเพื่อนหมดเลย  คือ dd/mm/yyyy  เป็นพุทธศักราช

แต่มันลงในDB อีกแบบนึง เพราะฉะนั้น  เราต้องเปลี่ยนกลับไปเป็นแบบ2006 เหรอค่ะ  แต่เครื่องหนูก็เป็น 2006 น่ะ รู้ได้จาก เว็บบอร์ด  เวลาแสดงความคิดเห้นมันจะบอกเวลาจากเครื่องคือ   เดือน/วันที่/2006 ค่ะ

แต่เมื่อทำการจอง โดยเก็บลงDB จึงเป็น3092 ค่ะ

เดี๋ยวหนูจะลองเปลี่ยนดูนะคะ  ขอบพระคุณมากค่ะ   หนูก็คิดว่าจะเป็นกับDB

เพราะตั้งค่าเหมือนกันหมดทุกอย่างกับเครื่องเพื่อนแต่DB ของเพื่อนทำไมไม่เป็นละคะ  เวอร์ชั่นเดียวกันหมดทุกอย่าง หรืออาจจะเป็นตอนลงวินโดว์ตั้งเวลาของเครื่องไม่เหมือนกันก็ได้นะคะ

ขอบคุณสำหรับคำตอบที่ให้ประโยชน์ต่อหนูมาก ๆ เลยนะคะ  ขอบคุณค่ะ

ปุ้ย
ปุ้ย
Sat 9 Sep 2006 13:07:35

เปลี่ยนกลับไปเป็นแบบ ค.ศ. แล้วค่ะ ก็ไม่ได้เหมือนเดิม เพราะว่า ตารางการจองรถ  มันจะขึ้นวันที่ เป็นแบบลิสต์ และ ให้มันเป็น d/m/yyyy คือ 9/9/2549  แบบนี้ค่ะ

                                                          29/9/2549

                                                          30/9/2549

                                                          1/10/2549

                                                          2/102549

                                                          โดยที่ให้เราเลือกคลิกวันแรกที่จะใช้รถ  คือจองวันที่เท่าไหร่ แล้วจะไปเลือกวันเดินทางกลับ อีกที่นึง มันก็เลยเกิดปัญหาค่ะ ว่าจะตั้งตัวเครื่งยังไงให้มันแมทกัน  คือมันยากค่ะ

Administrator
Sat 9 Sep 2006 13:43:05
ผมก็เจอปัญหาในตอนติดตั้งให้ลูกค้าเหมือนกันครับกับ MSSQL โดยหลังจากที่ได้แก้ regional เป็น English(US) แล้วก็สามารถใช้งานได้ปกติครับ (ASP.NET 2.0)



ส่วนการแสดงข้อมูลตอนให้ user เลือกนั้นก็สามารถใช้ พ.ศ. ก็ได้ครับ แต่ในส่วนของ ปีถ้าเป็น DorpDownList ก็ใช้เช่น

<select name="year">
    <option value="2006">2549</option>
    ...
</select>

ตอนบันทึกก็จะได้ข้อมูลเป็นเลข ค.ศ. แทนครับ ส่วนถ้าตอนแสดงผลก็เอาปีบวกด้วย 543 ก็จะสามารถแสดงผลเป็น พ.ศ. ได้ครับ
ปุ้ย
ปุ้ย
Sun 10 Sep 2006 15:43:37
ขอบคุณค่ะ  หนูจะลองดูนะคะ  จะพยายามทำให้ได้คะ
ปุ้ย
ปุ้ย
Wed 13 Sep 2006 10:41:44

การเช็ค

ช่วยอธิบายstepการทำงาน ของฟังก์ชั่นนี้ให้ได้ไหมคะ  ไม่รู้จะพูดไปยังไงคะ

 

function checknum(str)

{

            for( var i = 0; i<str.length ;  i++)            {

                        var ch = str.substring( i,i+1);

                        if(ch < "0" || ch > "9")

                        {

                                    return false;

                        }

            }

            return true;

}

function checknumphone(str)

{

            for( var i = 0; i<str.length ;  i++)

            {

                        var ch = str.substring( i,i+1);

                        if(  ( ch < "0" || ch > "9" ) && ch != "-"  )

                        {

                                    return false;

                        }

            }

            return true;

}

function check_user_data()   ให้ชื่อและนามสกุลเป็นตัวอักษรเท่านั้นได้ไหมคะโดยไม่ต้องบอกตัวที่เราไม่ต้องการจนยาว.....ขนาดนี้น่ะ  @#$%^##!~&*

{

            var str_email = form_add_user_data.email.value;  

if( form_add_user_data.fname.value == "" ||      form_add_user_data.fname.value.indexOf("#")!=-1 ||  form_add_user_data.fname.value.indexOf("*")!=-1 ||  checknum(form_add_user_data.fname.value) == true  )   

            {

                        alert("กรุณากรอกชื่อ");

            }else    {

                        alert("กรุณากรอกชื่อ");                

            }else

            if( form_add_user_data.lname.value == "" )     

            {

                        alert("กรุณากรอกนามสกุล");                          

            }else

           

if( form_add_user_data.per1.value == ""  || form_add_user_data.per2.value == ""  || form_add_user_data.per3.value == ""  || form_add_user_data.per4.value == ""  || form_add_user_data.per5.value == "" )

            {alert("กรุณากรอกเลขที่บัตรประชาชน");     แล้วเครื่องหมาย // กับ&& มันต่างกันยังไง

}else                                                                     หมายถึงความหมายน่ะหรือการนำมาใช้น่ะค่ะ

 

            if(   (       checknum(form_add_user_data.per1.value)  &&           checknum(form_add_user_data.per2.value) 

                                                   &&  checknum(form_add_user_data.per3.value) &&  checknum(form_add_user_data.per4.value)

                                                   &&  checknum(form_add_user_data.per5.value)

                            )  == false

                        )          

            {

                        alert("เลขที่บัตรประชาชนเป็นตัวเลขเท่านั้น");

            }else

    if( checklength() == false )    {

                        alert("บัตรประจำตัวประชาชนไม่ครบ 13 หลัก");

            }else

if( form_add_user_data.username.value == "" )

            {

                        alert("กรุณากรอกชื่อล็อกอิน");                           ไม่อยากให้ กรอกมั่ว

                                                                                                  

            }else

            if( form_add_user_data.password.value == ""

            {

                        alert("กรุณากรอกรหัสผ่าน");

            }else

            if( form_add_user_data.accname.value == "" )   ให้เป็นตัวอักษรเท่านั้น

            {

                        alert("กรุณากรอกชื่อบัญชี");                           

            }else

            if( form_add_user_data.accno1.value == ""  || form_add_user_data.accno2.value == ""  || form_add_user_data.accno3.value == ""  || form_add_user_data.accno4.value == "" )

            {

                        alert("กรุณากรอกเลขที่บัญชี");

            }else

                        if(   (       checknum(form_add_user_data.accno1.value)  &&   checknum(form_add_user_data.accno2.value) 

                                                   &&  checknum(form_add_user_data.accno3.value) &&  checknum(form_add_user_data.accno4.value)                            

                            )  == false

                        )          

            {

                        alert("เลขที่บัญชีเป็นตัวเลขเท่านั้น");

            }else

    if( checklengthacc() == false )

            {

                        alert("เลขที่บัญชีไม่ครบ 10 หลัก");

            }else

           

อยากเรียงการเช็คตามที่เรากรอกลงไปตามtext ฟิลด์  ต่อจากบรรทัดนี้ไปน่าจะอยู่ ก่อนการเช็ค ล๊อกอินต้องทำยังไงคะ   สลับที่กันแล้ว error ค่ะ

 

if( form_add_user_data.phone.value == "" )

            {

                        alert("กรุณากรอกหมายเลขโทรศัพท์");

            }else

            if( checknumphone(form_add_user_data.phone.value)==false)

            {

                                    alert("หมายเลขโทรศัพท์เป็นตัวเลขและขีดเท่านั้น");                 

            }else

            if( checklengthgeneral(form_add_user_data.phone.value)  != 10 )

            {

                        alert("หมายเลขโทรศัพท์ไม่ครบ 10 หลัก");

            }else

            if(form_add_user_data.email.value == "")

            {

                                    alert("กรุณากรอกอีเมล์");

            }else

            if(  str_email.indexOf("@") == -1 )      อยากให้เพิ่ม   .com ด้วยจะทำยังไงคะ  แล้ว

            {

                                    alert("อีเมล์ไม่ถูกต้อง");          

            }else

            {                                                         

            document.form_add_user_data.submit(); บรรทัดนี้documentคืออะไร แปลว่าอะไรบรรทัดนี้น่ะ                                      

 

แล้วเราจะฟิกซ์ text area ยังไงเหรอ  ไม่ให้คนสมัครกรอกเกินน่ะ เดี๋ยวมัน errorโดยเฉพาะที่อยู่

เผื่อคนกวนไง กรอกได้ไม่จำกัดเลยแบบนี้น่ะ

<textarea name="address" cols="40" rows="8"></textarea>

 

………………………………………………………….

 

 

 

 

<%

Setconn_car=server.CreateObject("ADODB.Connection")

conn_car.open"Driver=Microsoft Access                                                                                   Driver(*.mdb);dbq="&server.MapPath("car.mdb")

sql_car ="select * from car where car_id=" & request("car_id")

            Set rs_car=Server.CreateObject("ADODB.Recordset")

             rs_car.open sql_car,conn_car,1,2                                 1,2 คืออะไรคะ

%>

……………………………………………………………..

<form  action='update_car_action.asp' method="post"  หมายถึงอะไร

enctype="multipart/form-data" name="form_add_car" id="form_add_car">

      <p>

enctype คืออะไร     และแถวนี้หมายความว่าอะไร

 

.................................................................................

 

<input type="hidden" name="user_id" value='<%=session("user_id")%>' />

<input type="hidden" name="car_id" value='<%=request("car_id")%>' />

 

โค้ด 2 บรรทัดนี้ หมายถึงอะไร มีไว้เพื่ออะไร

สัญลักษณ์ใน dream จะเป็นรูปตัว H หมายความว่าไงค่ะต่างกับ ASP ยังไง

 

..........................................................................

 

set conn=server.CreateObject("ADODB.Connection")

conn.open"Driver=MicrosoftAccess Driver(*.mdb);dbq="&server.MapPath("car.mdb")

sql="select*from car_type order by car_type_id desc"

set rs=server.CreateObject("ADODB.Recordset")

            rs.open sql,conn,1,3

            while not rs.eof   ตัวนี้คืออะไรคะ

 

 

<option value="<%=rs("car_type_id")%>"    หมายถึงเอาข้อมูลมาจากฟิลด์ รหัสประเภทรถ

 

<%     if rs("car_type_id") = rs_car("car_type_id") then   แล้วตัวนี้ละคะ แปลว่าอะไร

            response.write " selected "

            end if       

%>

><%=rs("car_type_name")%></option> 

  <%

                          rs.movenext      แล้ว 4 บรรทัดนี้หมายถึงอะไรคะ

                          wend

                          rs.close

                          conn.close        %>

                  </select>

 

 

 

 

ปุ้ย
ปุ้ย
Wed 13 Sep 2006 10:50:28

ใบรายงานรายละเอียดการจอง ไม่รู้จะอธิบายยังไงคะ

                                      <%

Set conn=server.CreateObject("ADODB.Connection"

conn.open"Driver=Microsoft Access Driver (*.mdb);dbq="&server.MapPath("car.mdb")sql = " SELECT reserve_id,car.user_id, Reserve.Car_id, car_type.Car_type_name, car_name.Car_name, car.Regis_car, Reserve.Reserve_date, Reserve.Leave_date, Reserve.Reverse_date, Reserve.Station_receive, Reserve.Comment, Province.Province_name as p1, Province_1.Province_name as p2, Reserve.Amount_pass, Reserve.Station_receive, User.User_name, User.Fname, User.Lname, User.Phone_number, User.Email , reverse_date - leave_date +1 as date1 , car_price, car_price * date1 as price1 "

                                                                                   

 

 มันเป็นยังไง ค่ะ อธิบายให้หนูฟังได้มั้ยคะ

 

sql = sql & " FROM [User] INNER JOIN ((car_type INNER JOIN (car_name INNER JOIN car ON car_name.Car_name_id = car.Car_name_id) ON car_type.Car_type_id = car.Car_type_id) INNER JOIN ((Reserve INNER JOIN Province ON Reserve.Province_tour = Province.Province_code) INNER JOIN Province AS Province_1 ON Reserve.Leave_province = Province_1.Province_code) ON car.Car_id = Reserve.Car_id) ON User.User_id = car.User_id where reserve_id=  "  & request("reserve_id")

 

 

Set rs =Server.CreateObject("ADODB.Recordset")

                                                                                  

rs.open sql,conn,1,3

 

                                   

  %>

Administrator
Wed 13 Sep 2006 17:24:52
ถามแบบนี้ถึงกับอึ้งเลยครับ

1. การจะ Validate ข้อมูลแนะนำให้ใช้ Regular Expressions ดีกว่าครับมีในทุกภาษารวมถึง Javascript ด้วยครับ เช่นถ้าต้องการให้เป็นเฉพาะตัวอักษรก็

<script language="javascript" typ="text/javascript">
var reg = /^[a-zA-Z]{1,}$/;
if(!reg.test("abc1234")){
    alert("OK");
}else{
    alert("Error : String contain invalid charator.");
}
</script>

2. เครื่องหมาย || หมายถึง OR ที่แปลว่า "หรือ" ส่วน && หมายถึง AND ที่แปลว่า "และ" เช่น
if(a == 0 || b == 0) //ในกรณีนี้ไม่ว่าจะ a หรือ b มีค่าเป็น 0 ก็จะเข้าไปทำคำสั่งใน if
if(a == 0 && b == 0) //ในกรณีนี้ทั้ง a และ b จะต้องมีค่าเป็น 0 ถึงจะเข้าไปทำคำสั่งใน if

3. การสลับกันแล้ว Error นั้นต้องดูครับว่าสลับกันอย่างไรครับ

4. การ validate ว่าเป็น E-mail ที่ถูกต้องหรือไม่ แนะนำว่า Regular Expressions ดีกว่าครับ ลองอ่านเพิ่มได้ที่ http://forum.modoeye.com/module31-34.html

5. document ใน javascript หมายถึงหน้าเอกสารที่อยู่ปัจจุบันครับ ส่วน document.form_add_user_data.submit() หมายถึง สั่งให้ form_add_user_data ที่อยู่ในเอกสารปัจจุบันนั้นทำการ submit ข้อมูล

6. ข้อมูลที่มีความจำกัดควรใส่ใน input ชนิด text ดีกว่าครับ

7.  rs_car.open sql_car,conn_car,1,2 เลข 1 และ 2 เป็น option ในการเปิด recordset ตัวแรกคือ cursorType ตัวที่สองคือ LockType รายละเอียดค่าต่างๆอ่านได้ที่ http://www.devguru.com/Technologies/ado/quickref/recordset_open.html

8. <form  action='update_car_action.asp' method="post" enctype="multipart/form-data" name="form_add_car" id="form_add_car"> เป็น tag form โดยมี attribute ต่างๆ
- method เป็นบอกวิธีการส่งค่าในแบบ post
- enctype เป็นการบอกรูปแบบการส่งค่า multipart/form-data คือ post ค่าพร้อมทั้งมีการส่งไฟล์ไปยัง server (upload)
ื- name เป็นการตั้งชื่อ form
- id เป็นการระบุ identity ของ form

9. <input type="hidden" name="user_id" value='<%=session("user_id")%>' /> อักษร H ใน DW หมายถึง input ชนิด hidden field ตามลักษณะข้างบน ส่วนข้างบน เป็นการให้ค่า hidden field ชื่อ user_id มีค่าตาม session(user_id)

10.
while not rs.eof เป็นการวน loop จนกว่าจะหมด Recordset

11.
if rs("car_type_id") = rs_car("car_type_id") then  เป็นการตรวจสอบว่าค่าทั้ง 2 มีค่าเท่ากันหรือไม่ เขาใช้เพื่อจะได้มีการเลือกที่ค่านั้นๆตามในฐานข้อมูล

12.
rs.movenext เป็นการเลื่อนไปยัง record ถัดไปใน recordset

13.
wend เป็นการบอกจุดจบของ loop while

14.
rs.close เป็นการปิด recordset

15.
conn.close เป็นการปิด connection ที่ใช้ติดต่อ database

16. ส่วนโค๊ด SQL นั้นเป็นการ ดึงข้อมูลออกมาแสดงเท่านั้นครับ
ปุ้ย
ปุ้ย
Thu 14 Sep 2006 16:41:03

ขอบพระคุณมากค่ะ ที่ช่วยอธิบายให้กระจ่าง พอดีหนูจะเป็นคนที่สื่อ ให้คนอื่นเข้าใจได้ยากค่ะ ไม่รู้จะพูดยังไง ไม่รู้จะพูดไปยังไงเริ่มยังไงค่ะจะได้ present งานให้ อ.ฟังค่ะ อ่านตามหนังสือก้ เข้าใจยาก อธิบายยากค่ะ  ก็เลย ขอข้อมูลจากคุณใจดี มีน้ำใจ ซึ่งก็ค้นพบว่าเว็บไซต์นี้ดี จริง ๆค่ะ ใจดีมาก มีให้ทุกคำตอบเลย ไม่หมดหวังค่ะ ล

ขอบคุณมากค่ะ ... แล้วจะให้คุณช่วยไขข้อข้องใจอีกเรื่อย ๆ นะคะ  ....

ปุ้ย
ปุ้ย
Sat 16 Sep 2006 16:35:02

สวัสดีค่ะ หนูมีคำถามมารบอีกแล้วนะคะ

1. พอดีโปรแกรมหนูยังไม่ได้เช็ค Username ที่ใช้ ในการล็อกอินค่ะ ว่ามันซ้ำกับคนที่เค้าเคยสมัครไว้หรือเปล่า อยากเช็คตอนสมัครเป็นสมาชิกในเว็บเราค่ะ เวลากรอกใน textfield ค่ะ โดยที่ให้โปรแกรมแสดงออกมาว่า username นี้ มีคนใช้แล้ว เราจะ ใช้ฟังก์ชั่นอะไรค่ะ ขอเป็น code เลยนะคะ ...อิอิ บอกที่แทรก code ด้วยค่ะว่าเราจะเอาไว้ตรงส่วนไหนการทำงานจึงจะสมบูรณ์ค่ะ

2. หนูอยากทราบว่า การที่เรารันaspบนIIS ค่ะ โดยส่วนมากเราจะนำcode เราไปไว้ที่wwwrootใน drive: C  แต่เครื่องหนูถ้าเอาไปไว้ในwwwroot มัยจะerror โดยไม่ทราบสาเหตุค่ะ ว่าเพราะอะไร จึงต้องรันที่ driveVery Happy คิดว่ามันน่าจะมาจากอะไรค่ะ ทั้งที่การเซ็ตค่าก็ทำเหมือนกันทุกอย่าง  แล้วเวลาเราจะ อัพโหลดขึ้นเน็ต จะมีปัญหาไหมค่ะ

3.อ.ให้พวกหนูทำการติดตั้งเครื่อง เวลาสอบค่ะ โดยใช้คอม 3 เครื่องโดยที่ให้เครื่องหนูเป็น server ส่วนเครื่อง client ของ อ.จะมาดึงเอาข้อมูลจากเครื่อง server ค่ะ จะทดสอบโปรแกรม แล้วหนูจะทำการเซ็ตเครื่องยังไงค่ะ เพื่อให้การสอบมันไม่มีปัญหาค่ะ ซึ่งจะไม่ได้รัน เป็นบน localhost นะคะ ช่วยบอกวิธีหนูด้วยนะคะ จะได้เตรียมการอย่างถูกต้อง

ขอบคุณค่ะ ที่ให้คำตอบอย่างดี ทุกคำตอบของคุณ มีค่าและความหมายสำหรับหนูมากค่ะ ...ขอบคุณค่ะ

Administrator
Sat 16 Sep 2006 17:53:26
การเช็ค username นั้นก็ทำได้ทั้งสองฝั่งครับ ทั้ง client-side และ server-side
ถ้าทาง server-side เมื่อมีการกด submit ก็ให้ไป query ดูว่ามี username ชื่อนี้หรือยังครับ ถ้ามีแล้วก็ให้แสดง error เท่านั้นครับ
ส่วนทาง client-side ก็อาจจะ query มาใส่ไว้ใน javascript array แล้วก็ทำการตรวจสอบว่าชื่อนั้นๆอยู่ใน array หรือเปล่าครับ ส่วนอีกวิธีก็ ajax ซึ่งถ้าไม่ชำนาญจะมีปัญหาเรื่อง XSS (Cross-side scripting injection) ได้ครับ

ส่วนการ run asp application นั้นสามารถวางไว้ใน wwwroot ก็ได้ครับ แต่ต้องไปสร้างให้เป็น application directory โดยในหน้า Internet Information Service ให้คลิ๊กขวาที่ directory ที่ต้องการแล้วเลือกที่ Properties จากนั้นที่ tab directory ให้คลิ๊ก Create ในส่วนของ Application Setting ครับใน .Net ก็จะใช้วิธีนี้เหมือนกัน ส่วนที่ว่านำไปวางนอก wwroot แล้วสร้าง Virtual Path แล้วใช้งานได้ เนื่องจาก Virtual Path จะทำการ Map เป็น application ให้อัตโนมัติครับ

การทดลองบน Lan นั้นทำได้โดยก่อนอื่นตรวจสอบว่า IIS รันอยู่ที่ IP ใด โดยไปที่
Internet Information Service คลิ๊กขวาที่ Default Website เลือกที่ Properties จากนั้นใน tab Website ในช่อง IP Address ดูว่ามีค่าระบุเป็น IP หรือไม่ หรืออาจจะเปลี่ยนเป็น All Assigned ก็ได้
จากนั้นหา IP ของระบบ ถ้าในมหาลัยส่วนใหญ่จะจ่ายผ่าน DHCP ดังนั้นต้องหา IP ของเครื่องเช่น
คลิ๊กขวาที่ Local Area Connection เลือกที่ Properties ไปที่ tab detail เพื่อหา Client IP
ถ้าใน IIS ระบุ IP ไว้ต้องตั้งให้ตรงกับ IP ของระบบ แต่ถ้าเป็น All Assigned ก็ข้ามไป
การเรียกใช้งานจากเครื่องภายนอก ถ้าเวลาเรียกใช้งานในเครื่องเป็น http://localhost/directory เวลาใช้งานจากภายนอกก็ http://ip/directory แต่ถ้าไว้ใน wwwroot ก็เรียกผ่าน IP ได้โดยตรงไม่ต้องใส่ directory
ปุ้ย
ปุ้ย
Wed 20 Sep 2006 15:42:37

พอดีหนูไปดู โค้ดการ upload ของเพื่อนมาแล้วมาดัดแปลงเป็นระบบเช่าของหนูค่ะก็เลยไม่เข้าใจค่ะ ว่าการทำงานมันเป็นยังไง

การอัพโหลดรถเช่าลงระบบ  หนูไม่เข้าใจ step การทำงานของการ upload  รูปภาพ เลยค่ะ

ช่วยอธิบาย ทีละ step ให้หนูกระจ่างได้ไหมค่ะ   ตัวแปรก็แปลกค่ะ

  <%Dim Uploader, File             เริ่มตั้งแต่บรรทัดแรกเลยค่ะ

Set Uploader = New FileUploader     Dim คือ ?

Uploader.Upload()     ?

dim strMessage   ?

RootFolderName = Server.MapPath("./picture/")  ตัวนี้ใช่ folder เก็บรูปที่เราupload ไว้ใช่ไหมคะ

TempFolderName = RootFolderName    ?

If Uploader.Files.Count = 0 Then       คืออะไรคะ

ClearImage = true      ?

strMessage = "Clear Image, complete."      ?

Else

ClearImage = false    ?

For Each File In Uploader.Files.Items     หมายความ ?

xxx = File.FileName          xxx ใช้แทนชื่อไฟล์ภาพเหรอคะ

File.SaveToDisk Tem