PDA

View Full Version : مبتدی: مشکل با بروزرسانی اطلاعات کاربری - کاربر حین ویرایش داده تکراری وارد نکند



YasserDivaR
پنج شنبه 22 بهمن 1394, 16:08 عصر
سلام یه سوال
من توی برنامه یه قسمتی دارم برا ویرایش اطلاعات کاربری
خوب یه سرچ تعریف کردم که کاربر موقعی که میخواد اطلاعات خودش روویرایش کنه توی دیتا بیس بگرده

public Boolean searchMail(string strName)
{
MySql.Data.MySqlClient.MySqlConnection cnn = new MySql.Data.MySqlClient.MySqlConnection("server=localhost;User Id=root;database=sadaf;charset=utf8;");
MySql.Data.MySqlClient.MySqlDataAdapter da = new MySql.Data.MySqlClient.MySqlDataAdapter("select * from user where Email like'%" + strName + "%'", cnn);

DataTable dt = new DataTable();
da.Fill(dt);

if (dt.Rows.Count > 0)
return true;
return false;

}


سوال من اینه اگه یه کاربری ایمیل تکراری وارد کرد چه کنم
توی دکمه ثبت اخطار میده که این داده وجود داره
در صورتی که ایمیل خودشه

یعنی من چه کدی بنویسم که برنامه در صورتی که نام و کاربری یکی بود با ادرس ایمیل مثلا خطا نده
توی سرچ باید یه AND بنویسم فک کنم ولی کدش رو بلد نیستم ممنون میشم کمکم کنید عزیزان

MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand("update user set UserName='" + textEdit1.Text + "',password='" + textEdit2.Text + "',SoalAmniati='" + comboBoxEdit1.Text + "',Status='" + textEdit5.Text + "',Phone='" + textEdit7.Text + "',javabamniati='" + textEdit9.Text + "' , NameView='" + textEdit3.Text + "' , Email='" + textEdit4.Text + "',Web='" + textEdit6.Text + "' where ID=" + textBox1.Text, cnn);

fool66
جمعه 23 بهمن 1394, 22:20 عصر
یه تابع بنویس چک کنه :متعجب: مثل همونی که توی ثبت نوشتی

YasserDivaR
شنبه 24 بهمن 1394, 04:23 صبح
یه تابع بنویس چک کنه :متعجب: مثل همونی که توی ثبت نوشتی

دوتا رو چجوری بنویسم
مشکل من دوتافیلد رو میخوام با یه خط کد چک کنه

مهیار.
شنبه 24 بهمن 1394, 05:43 صبح
سوال من اینه اگه یه کاربری ایمیل تکراری وارد کرد چه کنم
توی دکمه ثبت اخطار میده که این داده وجود داره

دلیلشه چه که اخطار نده خب علل اصول باید اخطار بده..! چرا باید کابر ایمیل هایی تکراری وارد کنه برای یک نام کاربری!:متعجب: و برنامه اخطار نده!

YasserDivaR
شنبه 24 بهمن 1394, 08:16 صبح
دلیلشه چه که اخطار نده خب علل اصول باید اخطار بده..! چرا باید کابر ایمیل هایی تکراری وارد کنه برای یک نام کاربری!:متعجب: و برنامه اخطار نده!

منظور اینه وقتی میخواد از خودش رو ثبت کنه اخطار میده
میخوام خودش رو مثتثنی کنم

ببین شما میای تو برنامه من ثبت نام میکنی
بعد ش میخوای مثلا اطلاعاتت رو ویروایش کنی
ایمل که همونه و کاری باهاش نداری
اما وقتی سیو میشه خطا میده

sajadsobh
شنبه 24 بهمن 1394, 10:04 صبح
باز هم مثه همون قطعه کدی که بهت دادم با یکم تغییر می تونی آپدیت کنی. اگه یادت باشه گفته بودم یه متغیر Result از نوع Output تعریف میکنی. update هم دقیقن مثه insert می مونه فقط شما باید یه Id هم به تابع بفرستی. الان فقط قبل از آپدیت اون چیزی که میخوای تکراری نباشه رو چک میکنی. برای مثال من یه جدول کاربران دارم که میخوام یه سری اصلاحات انجام بدم و فیلدی که باید چک بشه ایمیل هستش.
BEGIN
IF EXISTS (SELECT * FROM Users WHERE (LOWER(email) = LOWER(_email) AND Id <> _Id)) THEN
SET _Result = 0;
ELSE
SET @Result = 1;
UPDATE Users SET
DisplayName = _DisplayName,
Email = _Email
WHERE Id = _Id;
END IF;
END
دیگه از این ساده تر نمیشه. شما فقط قبل از عمل update میای چک میکنی که آیا کاربر دیگه وجود داره که همچین ایمیلی ثبت کرده باشه یا نه. اون Id <>_Id واسه همونه. یعنی اینکه یکی غیر از این کسی که داری آپدیت میکنیش. بازم اگه سوالی بود در خدمتم.