برگزیده های پرشین تولز

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

motaro123

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

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

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

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

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

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


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

motaro123

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

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

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


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

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

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

یا نه؟

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


خیلی ممنون
 

koorosh

Registered User
تاریخ عضویت
12 دسامبر 2002
نوشته‌ها
1,525
لایک‌ها
10
سن
41
محل سکونت
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 رو بنويس تا ببينيم چه بايد کرد.
 

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:
 

motaro123

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

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


مرســـــــــــــــــــــــــــــــــــــــــــــــــي
 

motaro123

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

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

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

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


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

در هر صورت خيلي ممنون
 

koorosh

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

motaro123

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

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