آژانس هواپیماییexchanging

مشكل در خواندن اطلاعات از SQL DB با ASP لطفا كمك كنيد

شروع موضوع توسط motaro123 ‏19 می 2004 در انجمن asp , ASP.NET

  1. motaro123

    motaro123 Guest

    تاریخ عضویت:
    ‏12 سپتامبر 2003
    نوشته ها:
    65
    تشکر شده:
    1
    محل سکونت:
    Iran
    سلام به همگي

    آقا من يه سيستم login با ASP و ديتابيس SQL دارم
    اين سيستم خوب كار مي كنه ولي مشكل اين هست كه وقتي با نام فارسي رجيستر مي كنيم
    بعد كه مي خواهيم login كنيم ميگه username اشتباه هست من بعد از مدتي كه روش كار كردم فهميدم
    كه يوزرنيمي كه در زمان رجيستر كردن وارد مي كنيم كاملا فارسي وارد ديتابيس ميشه
    حتي من اونو از ديتابيس براي مثال با اين دستور مي خونم

    <% Response.Write (rsCommon("name")) %>

    و اونو كاملا فارسي و درست روي صفحه نشون ميده خوب
    مشكل اينجاست كه كه وقتي سيستم مي خواد نام كاربر روي ديتابيس رو با نام كاربري كه كاربر توي فرم
    وارد كرده مقايسه كنه ميگه نام كاربر اشتباه هست

    البته بگم اين مشكل رو من با Access ندارم يعني با اكسز خوب كار مي كنه و مشكلي نداره
    فقط با SQL 2000

    خوب حالا مي خوام بدونم مشكل چي هست :blink:


    ممنون ميشم اگه كمك كنيد :(
     
  2. motaro123

    motaro123 Guest

    تاریخ عضویت:
    ‏12 سپتامبر 2003
    نوشته ها:
    65
    تشکر شده:
    1
    محل سکونت:
    Iran
    سلام محمد جان

    آقا واقعا دستت درد نکنه از اینکه این کد رو فرستادی
    ولی محمد آقا من مثل شما که وارد نیستم من اصلا نمی دونم این چی هست چه برسه به این که
    بدونم کجا قرارش بدم من تا حد ساده ای ASP می دونم
    من هر جا که این رو قرار دادم error داد

    sql="insert into smpl(name,family) values(N'"+n+"', N'"+f+"')";


    لطفا بگو من این رو کجا قرار بدم توی صفحه Register یا توی Login

    و در چه قسمتی ؟ .

    راستی آیا من بايد بجای name,family چیزی بنویسم

    یا نه؟

    من فکر می کنم اگه این کد رو جای درست قرار بدم درست بشه


    خیلی ممنون
     
  3. koorosh

    koorosh Registered User

    تاریخ عضویت:
    ‏12 دسامبر 2002
    نوشته ها:
    1,525
    تشکر شده:
    10
    محل سکونت:
    Iran - Tehran
    اول برای دوستان ديگه توضيح بدم که آقای motaro123 (!) پيغام خصوصی فرستاد و من هم گفتم از Session.CodePage = 65001 استفاده کن.
    گفت استفاده کرده ام و فايده نداشته و مشکل دارم
    من فکر کردم اين مشکل شايد از دو چيز (نکته؟!) باشه (از کلمه "چيز" متنفرم! :( )
    يکی اينکه چون برخی از حروف فارسی چند گونه هستند (مانند ی و ک) شايد Character ورودی اوليه با ورودی دوم تفاوت داشته.
    و يا شايد اون فيلد از حروف Unicode پشتيبانی نميکرده که برای رفع مشکل بايد در هنگام درج اطلاعات، در دستور SQL، به SQL Server بفهمانيم که در آن فيلد خاص اطلاعات را با فرمت Unicode وارد کند.
    برای اين کار يک نمونه کد نوشتم.

    کد:
    sql="insert into smpl(name,family) values(N'"+n+"', N'"+f+"')";
    که حرف N که قبل از String نوشته شده، موجب وارد شدن اطلاعات با فرمت Unicode ميشه.

    شما اگر اينطور که نوشتی خيلی تبحر نداری، کد مربوط به ورود اطلاعات و کد مربوط به بازخوانی اطلاعات از Database رو بنويس تا ببينيم چه بايد کرد.
     
  4. motaro123

    motaro123 Guest

    تاریخ عضویت:
    ‏12 سپتامبر 2003
    نوشته ها:
    65
    تشکر شده:
    1
    محل سکونت:
    Iran
    سلام محمد جان

    اينم كد ها اين اولي صفحه register هست

    البته سعي كردم چيزهاي بيخودي رو از توي كد ها بردارم يعني كد هاي HTML رو

    :wacko:

    کد:
    
    <% 
    session.CodePage=65001
    %>
    
    
    <%
    
    Dim strSQLServerName	
    Dim strSQLDBUserName		
    Dim strSQLDBPassword		
    Dim strSQLDBName		
    Dim adoCon 		
    Dim strCon	
    Dim rsCheckUser 	
    Dim strSQL 		
    Dim strUserName
    Dim strPassword 	
    
    
    
    '================================================================================================
    strSQLServerName = "server" 
    strSQLDBUserName = "username" 
    strSQLDBPassword = "pass" 
    strSQLDBName = "login"    
    
    strCon = "Provider=SQLOLEDB;Server=" & strSQLServerName & ";User ID=" & strSQLDBUserName & ";Password=" & strSQLDBPassword & ";Database=" & strSQLDBName & ";"
    
    'Create an ADO connection object
    Set adoCon = Server.CreateObject("ADODB.Connection")
    
    'Create an ADO recordset object
    Set rsAddComments = Server.CreateObject("ADODB.Recordset")
    			 
    'Set an active connection to the Connection object
    adoCon.Open strCon
    
    
    
    'Initialise the strSQL variable with an SQL statement to query the database with
    strSQL = "SELECT tblUsers.UserID, tblUsers.password FROM tblUsers;"
    
    'Set the cursor type we are using so we can navigate through the recordset
    rsAddComments.CursorType = 2
    
    'Set the lock type so that the record is locked by ADO when it is updated
    rsAddComments.LockType = 3
    
    'Open the recordset with the SQL query 
    rsAddComments.Open strSQL, adoCon
    
    
    'Tell the recordset we are adding a new record to it
    rsAddComments.AddNew
    
    
    'Add
    rsAddComments.Fields("UserID") = Request.Form("name")
    rsAddComments.Fields("password") = Request.Form("password")
    
    'Write the updated recordset to the database
    rsAddComments.Update
    
    
    
    
    
    'Reset server variables
    rsAddComments.Close
    Set rsAddComments = Nothing
    Set adoCon = Nothing
    
    
    
    
    %>
    
    
    
    <head>
    <meta http-equiv="Content-Language" content="en-us">
    </head>
    
    <form method="POST" action="reg.asp">
    	<p align="center">User Name : <input type="text" name="name" size="20"></p>
    	<p align="center">Password :&nbsp;&nbsp;&nbsp; <input type="text" name="password" size="20"></p>
    	<p align="center"><input type="submit" value="Submit" name="B1">&nbsp;&nbsp;
    	<input type="reset" value="Reset" name="B2"></p>
    </form>
    
    
    
    
    
    



    و اين يكي صفحه Check User هست




    کد:
     
    
    
    
    <% 
    session.CodePage=65001
    %>
    
    
    
    
    <%
    'Dimension variables
    Dim adoCon 		
    Dim strCon		
    Dim rsCheckUser 			
    Dim strSQL 		
    Dim strUserName 	
    Dim strSQLServerName	
    Dim strSQLDBUserName		
    Dim strSQLDBPassword		
    Dim strSQLDBName		
    
    
    '================================================================================================
    strSQLServerName = "server" 
    strSQLDBUserName = "username" 
    strSQLDBPassword = "pass" 
    strSQLDBName = "login"    
    
    
    
    strCon = "Provider=SQLOLEDB;Server=" & strSQLServerName & ";User ID=" & strSQLDBUserName & ";Password=" & strSQLDBPassword & ";Database=" & strSQLDBName & ";"
    
    
    
    
    strUserName = Request.Form("txtUserName")
    
    
    'Create a connection odject
    Set adoCon = Server.CreateObject("ADODB.Connection")
    			 
    
    'Set an active connection to the Connection object
    adoCon.Open strCon
    
    'Create a recordset object
    Set rsCheckUser = Server.CreateObject("ADODB.Recordset")
    
    'Initalise the strSQL variable with an SQL statement to query the database
    strSQL = "SELECT tblUsers.Password FROM tblUsers WHERE tblUsers.UserID ='" & strUserName & "'"
    
    'Query the database
    rsCheckUser.Open strSQL, strCon
    
    'If the recordset finds a record for the username entered then read in the password for the user
    If NOT rsCheckUser.EOF Then
    	
    	'Read in the password for the user from the database
    	If (Request.Form("txtUserPass")) = rsCheckUser("Password") Then
    		
    		'If the password is correct then set the session variable to True
    		Session("blnIsUserGood") = True
    		
    		'Close Objects before redirecting
    		Set adoCon = Nothing
    		Set strCon = Nothing
    		Set rsCheckUser = Nothing
    		
    		'Redirect to the authorised user page and send the users name
    		Response.Redirect"AP.asp"
    	End If
    End If
    		
    'Close Objects
    Set adoCon = Nothing
    Set strCon = Nothing
    Set rsCheckUser = Nothing
    	
    'If the script is still running then the user must not be authorised
    Session("blnIsUserGood") = False
    
    'Redirect to the unautorised user page
    Response.Redirect"unauthorised_user_page.htm"
    %>
    
    
    
    
    
    
    
    =============================================================

    ممنون :lol:
     
  5. motaro123

    motaro123 Guest

    تاریخ عضویت:
    ‏12 سپتامبر 2003
    نوشته ها:
    65
    تشکر شده:
    1
    محل سکونت:
    Iran
    البته نمي دونم شما SQL server رو روي سيستم خودتون نصب كرديد يا نه
    راستي دقت كنيد اين سيستم روي windows هايي كه Farsi language نصب هست درست كار ميكنه

    يعني بايد ويندوز يا سرور كاملا انگليسي باشند


    مرســـــــــــــــــــــــــــــــــــــــــــــــــي
     
  6. motaro123

    motaro123 Guest

    تاریخ عضویت:
    ‏12 سپتامبر 2003
    نوشته ها:
    65
    تشکر شده:
    1
    محل سکونت:
    Iran
    سلام محمد آقا

    آقا دستت درد نكنه ولي خودم درستش كردم من فقط اين كار رو كردم

    توي اين خط يه N اضافه كردم

    strSQL = "SELECT tblUsers.Password FROM tblUsers WHERE tblUsers.UserID = N'" & strUserName & "'"


    درسته كه زياد ASP بلد نيستم ولي اونقدر بلد هستم كه بتونم يه سايت رو راه بندازم

    در هر صورت خيلي ممنون
     
  7. koorosh

    koorosh Registered User

    تاریخ عضویت:
    ‏12 دسامبر 2002
    نوشته ها:
    1,525
    تشکر شده:
    10
    محل سکونت:
    Iran - Tehran
    :)
    من هم که جسارت نکردم. شما حتما تبحر داری که تونستی اين سيستم رو پياده سازی کنی.
    اشتباهت هم يه اشتباه لپی بود که الحمد لله حل شد :)
    ايشاللا هميشه موفق باشی.
     
  8. motaro123

    motaro123 Guest

    تاریخ عضویت:
    ‏12 سپتامبر 2003
    نوشته ها:
    65
    تشکر شده:
    1
    محل سکونت:
    Iran
    اااااا آقا محمد چرا ناراحت ميشي بابا شوخي كردم شما اون كد رو به من دادي و من ياد گرفتم پس شما به من كمك كرديد
    من اصلا نمي دونستم اون N چيكار مي كرد يكم روش كار كردم تا رديف شد
    تازه هم من اينجا فقط شما رو قبول دارم يه عده بچه هاي جينگيل ريختن تو اين سايت و محيط رو خراب كردن
    همينطور كه خودت مي دوني آينده دست .... براي اين كه يكم اعصابت راحت بشه برو توي سايت خودمون
    www.asp.net
    خوب در هر صورت ببخشيد اگه بد حرف زدم ما حالا حالاها باهم كارداريم Buddy

    پيــــــروز باشي