PDA

View Full Version : چه جوری نام کاربری رو چک کنیم که تکراری نباشه؟



marjan_gh
جمعه 13 بهمن 1391, 21:27 عصر
توی فرومها وقتی داریم پبت نام می کنیم اولش چک می کنه که نام کاربری تکراری هست یا نه
می خوام بدونم با چه روشهایی می شه این کا رو کرد فک کنم هم با جاوااسکریپت میشه سمت کلاینت هم می شه با برنامه نویسی از دیتابیس واکشی کرد احتمالا باید یه سرچ باشه فقط می خوام بدونم چه جوری باید بنویسمش دستورش رو
ضمنا من با vb.net می نویسم
ممنون می شم کمکم کنید!

Beginner2013
جمعه 13 بهمن 1391, 21:46 عصر
توی فرومها وقتی داریم پبت نام می کنیم اولش چک می کنه که نام کاربری تکراری هست یا نه
می خوام بدونم با چه روشهایی می شه این کا رو کرد فک کنم هم با جاوااسکریپت میشه سمت کلاینت هم می شه با برنامه نویسی از دیتابیس واکشی کرد احتمالا باید یه سرچ باشه فقط می خوام بدونم چه جوری باید بنویسمش دستورش رو
ضمنا من با vb.net می نویسم
ممنون می شم کمکم کنید!


سلام.
یک چنین متدی بسازید و از آن بهره بجویید.

Public Function isRegistered(user As String) As Boolean Dim dbConnection As New SqlConnection(ConnectionString) dbConnection.Open() Dim isRegistered As Boolean = False Dim strSQL As String = "SELECT * FROM tbl_users WHERE user=" & user Dim dbCommand As SqlCommand = dbConnection.CreateCommand() dbCommand.CommandText = strSQL Dim dbReader As SqlDataReader = dbCommand.ExecuteReader() If dbReader.Read() Then isRegistered = True End If dbReader.Close() dbConnection.Close() Return isRegistered End Function

morteza_mokhtari
جمعه 13 بهمن 1391, 22:12 عصر
سلام دوست عزیز شما برای اینکار یک update panel قرار بدهید و درون اون یک تکس باکس.تویه رویداد textchanged تکس باکس عبارت وارد شده توسط کاربر که همون نام کاربری هستش رو با یک دستور select بررسی کنید که آیا این نام در جدول وجود داره یانه اگه وجود نداشت توسط یک label که اون هم باید داخل update panel باشه به کاربر میگید که نام کاربری اون قابل استفاده هستش در غیر این صورت قابل استفاده نیست.در ضمن اگه نمیخواهید از update panel استفاده کنید میتونید از jquery ajax استفاده کنید.

fahmari
شنبه 14 بهمن 1391, 11:28 صبح
سلام. مس تونید این کار رو به راحتی سمت دیتابیس انجام بدید. توی Stored Procedure ای که درج اطلاعات کاربر اوی پایگاه داده رو انجام میده، قبل از insert با یه شرط if چک کنید که اون کاربر وجود داره یا نه و اگه وجود نداشت عمل درج رو انجام بدید. به صورت زیر :
Stored Procedure :

if(not exists(select UserEmail from T_Users where UserEmail=@UserEmail ))
begin
insert into T_Users values (@RoleID,@UserEmail,@UserPass,@Name,@Family,@Sex,@ YearOfBirth,@MonthOfBirth,@DayOfBirth,@PhoneNumber ,
@MobileNumber,@PostalCode,@Province,@City,@Address , @Status)
return 1
end


و در صفحه ثبت نام :

protected void Accept_Click(object sender, ImageClickEventArgs e)
{
DataClasses1DataContext LinqCreateUser = new DataClasses1DataContext();
int i = LinqCreateUser.SP_CreateUser(2, txtUserEmail.Text, txtPass.Text, txtName.Text, txtFamily.Text, comSex.Text, Convert.ToInt16(comYear.SelectedValue), Convert.ToString(comMonth.SelectedValue), Convert.ToInt16(comDay.SelectedValue), txtPhoneNumber.Text, txtMobileNumber.Text, txtPostalCode.Text, Convert.ToString(comProvince.SelectedValue), txtCity.Text, txtAddress.Text, true);
if (i == 1) // یعنی این آدرس ایمیل قبلا ثبت نام نکرده است
{
DataClasses1DataContext LinqSelectUserID = new DataClasses1DataContext();
var k = LinqSelectUserID.Sp_CurrentUser(txtUserEmail.Text, txtPass.Text);
foreach (var item in k)
{
Session["CurrentUserID"] = Convert.ToInt16(item.UserID);
}
Session["CurrentUser"] = txtName.Text + " " + txtFamily.Text;
Session["CurrentUserPass"] = txtPass.Text;
SendHTMLEmail(PopulateBody(txtUserEmail.Text, Convert.ToString(Session["CurrentUser"]), Convert.ToString(Session["CurrentUserPass"])));
Response.Redirect("/Pages/AcceptRegistration.aspx");
}
else
{
lblError.Text = "کاربری با این مشخصات قبلا ثبت نام کرده است";
lblError.Visible = true;
}


}