View Full Version : مشکل در تفکیک عکس ها
mamad_za
جمعه 28 شهریور 1393, 00:28 صبح
سلام دوستان ممنون میشم تو این مشکل کمکم کنید.
یه جدول دارم واسه ذخیره آدرس عکسای آپلود شده ، 4 تا فیلد داره pic_id - title - picAddress - user_id
خوب تو ذخیره آدرس و عکس و نشون دادنش مشکلی ندارم ، pic_id هم به صورت identity بهش اضافه میشه
حالا می خوام اینجا وقتی که هر کاربر عکسی رو می خواد آپلود کنه Id کاربر تو قسمت user_id ریخته بشه که مشخص بشه هر عکس واسه کدوم کاربر هستش اما اینجا مشکل این هست که چطوری باید user_id رو از جدول یوزرهام Select کنم و بعد اینجا insert کنمش
یه راه حلی که خودم داشتم انجامش می دادم این بود که از cookie که به صورت ticket ذخیره شده بود و در داخل اون userName کاربر قرار داشت یوزرنیم این رو با یوزر نیم جدول یوزرهام مقایسه کنم اگه برابر بود user_id اون رو select کنه که نتونستم به جواب برسم حالا می خواستم که شما هم کمک کنید یا قطعه کدی قرار بدید تشکر
nice_boy_a
جمعه 28 شهریور 1393, 10:23 صبح
با سلام.
راه حلت درسته، ولی از Session استفاده کنی بهتره. کد کاربر رو بریز داخل Session، و تو هر صفحه ای که خواستی می تونی ازش استفاده کنی. به صورت خودکار هم منقضی میشه.
elahe471
جمعه 28 شهریور 1393, 10:44 صبح
کاربر ها login میکنند درسته ؟ اگر لاگین رو درست پیاده سازی کرده باشین با Page.User.Identity میتونید Username که تو صفحه لاگین هست رو بگیرین بعد با Username هم که گرفتن Id کاری نداره
mamad_za
جمعه 28 شهریور 1393, 10:54 صبح
مرسی واسه جواب من این کد رو اینطوری پیاده سازی کردم ، به نظرتون مشکلش چیه؟
string stime = DateTime.Now.ToString("yyyy-mm-dd hhmmttss");
string filename = Path.GetFileNameWithoutExtension(FileUpload1.FileN ame);
string PicUrl = @"~/imageup/" + filename + "-" +stime + ext;
FileUpload1.SaveAs(Server.MapPath(PicUrl));
SqlConnection con = new SqlConnection(connectionstring);
SqlCommand cmd = new SqlCommand("SELECT user_id FROM user_reg WHERE user_name=@username", con);
cmd.Parameters.AddWithValue("@username", Context.User.Identity.Name);
con.Open();
int id = cmd.ExecuteScalar();
con.Close();
lblresult.ForeColor = System.Drawing.Color.Green;
lblresult.Text = "آپلود با موفقیت انجام شد.";
pic.Visible = true;
ImgUpload.ImageUrl = PicUrl;
ImgUpload.Width=217;
ImgUpload.Height=139;
}
elahe471
جمعه 28 شهریور 1393, 11:18 صبح
گرفتن Username درسته هم Context.User.Identity.Name و هم Page.User.Identity.Name این کار و انجام میدن شما Username رو میگیری که Insert انجام بدی Insert رو ننوشتی یا جای دیگه ست ؟
mamad_za
جمعه 28 شهریور 1393, 11:29 صبح
مشکل همینجاست من قبلاً اینجا کد insert رو نوشته بودم بعد به این مشکل خوردم که چطوری id کاربر رو بریزم خواستم درستش کنم ، یه مشکل که دیگه دارم اینه که چطور این query های insert و select رو با هم ترکیب کنم چون هر دو تا باید باشه الان اینجا گیر کردم
elahe471
جمعه 28 شهریور 1393, 11:51 صبح
کاری نداره یه شی دیگه درست کنید از SqlCommand
SqlConnection con = new SqlConnection(connectionstring); SqlCommand cmd = new SqlCommand("SELECT user_id FROM user_reg WHERE user_name=@username", con);
cmd.Parameters.AddWithValue("@username", Context.User.Identity.Name);
con.Open();
int id = Convert.ToInt32(cmd.ExecuteScalar());
SqlCommand cmd2 = new SqlCommand("INSERT INTO tblGallery Values('test',@id,'test')", con);
cmd2.Parameters.AddWithValue("@id", id);
cmd2.ExecuteNonQuery();
con.Close();
mamad_za
جمعه 28 شهریور 1393, 15:27 عصر
مرسی ممنون یه امتحان بکنم ببینم چی میشه نتیجه رو میذارم اینجا
mamad_za
جمعه 28 شهریور 1393, 17:47 عصر
متاسفانه هنگام اجرا تو این خط error میده -------> cmd2.ExecuteNonQuery();
int id=0;
string stime = DateTime.Now.ToString("yyyy-mm-dd hhmmttss");
string filename = Path.GetFileNameWithoutExtension(FileUpload1.FileN ame);
string PicUrl = @"~/imageup/" + filename + "-" +stime + ext;
FileUpload1.SaveAs(Server.MapPath(PicUrl));
SqlConnection con = new SqlConnection(connectionstring);
SqlCommand cmd = new SqlCommand("SELECT user_id FROM user_reg WHERE user_name=@username", con);
cmd.Parameters.AddWithValue("@username", Context.User.Identity.Name);
con.Open();
id = Convert.ToInt32(cmd.ExecuteScalar());
SqlCommand cmd2 = new SqlCommand("INSERT INTO dbo.image(title,PicAddress,user_id) VALUES (@title,@picAddress,@userid)",con);
cmd2.Parameters.AddWithValue("@title", txtTitle.Text);
cmd2.Parameters.AddWithValue("@picAddress", PicUrl);
cmd2.Parameters.AddWithValue("@userid", id);
cmd2.ExecuteNonQuery();
con.Close();
lblresult.ForeColor = System.Drawing.Color.Green;
lblresult.Text = "آپلود با موفقیت انجام شد.";
pic.Visible = true;
ImgUpload.ImageUrl = PicUrl;
ImgUpload.Width=217;
ImgUpload.Height=139;
}
elahe471
جمعه 28 شهریور 1393, 22:07 عصر
متن Error هم بنویسین ، کدتون درسته
mamad_za
جمعه 28 شهریور 1393, 22:34 عصر
An exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll but was not handled in user code
Additional information: String or binary data would be truncated.
Server Error in '/' Application. String or binary data would be truncated.
The statement has been terminated. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.SqlClient.SqlException: String or binary data would be truncated.
The statement has been terminated.
Source Error:
Line 57: cmd2.Parameters.AddWithValue("@picAddress", PicUrl);
Line 58: cmd2.Parameters.AddWithValue("@userid", id);
Line 59: cmd2.ExecuteNonQuery();
Line 60: con.Close();
Line 61: lblresult.ForeColor = System.Drawing.Color.Green;
mamad_za
جمعه 28 شهریور 1393, 22:36 عصر
من فکر کنم که دستور excutenonquery تاثیراتی رو که گذاشته بر میگردونه باید داخل یه متغییر بریزیمش ؟ نظر شما چیه؟
elahe471
شنبه 29 شهریور 1393, 13:39 عصر
این Error به خاطر اینه که شما تعداد حرف بیشتر از چیزی که برای تعریف متغیر مشخص کردی داری Insert میکنی
مثلا فیلد شما از نوع NVarchar(50) هست ولی داری 150 تا حرف میریزی توش Nvarchar(1000) بزارین برای فیلد آدرس
mamad_za
شنبه 29 شهریور 1393, 14:11 عصر
این Error به خاطر اینه که شما تعداد حرف بیشتر از چیزی که برای تعریف متغیر مشخص کردی داری Insert میکنی
مثلا فیلد شما از نوع NVarchar(50) هست ولی داری 150 تا حرف میریزی توش Nvarchar(1000) بزارین برای فیلد آدرس
مرسی elahe خانوم بله حق با شما بود این مشکل حل شد با تشکر
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.