PDA

View Full Version : سوال: مشکل در فرستادن مقدار از یه صفحه به صفحه دیگر



Mostafa_
پنج شنبه 17 اردیبهشت 1394, 10:27 صبح
با سلام خدمت شما ،،،،
یه مشکلی داشتم
دارم روی یه سایت کار میکنم با Asp
سایت اگهی هست ،،، کاربر تو سایت وارد میشه و اگهی خودشو ثبت میکنه ،،، و مدیر سایت وقتی تایید کنه اگهی رو
توی سایت نمایش داده میشه
حالا مشکل اینجاست که وقتی روی دکمه تایید خبر کلیک میشه فقط اگهی رو تایید میکنه و امکان غیر فعال کردن اگهی یا عدم نمایش وجود نداره ،،،
به این صورت کار کردم
یه سیشن که فقط 0 و 1 رو تو خودش ذخیره میکنه،،، هست که وقتی روی دکمه کلیک میکنه این رو میفرسته به صفحه adversok و اونجا فیلد مومرد نظر توی دیتابیس update میشه
این کدصفحه لیست اگهی ها
<%
string star="" ,confirm="", sql = "select * from adversting";
System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection(System.Configu ration.ConfigurationManager.ConnectionStrings["connection"].ConnectionString);
connection.Open();
System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand(sql , connection);
System.Data.SqlClient.SqlDataReader SDR = command.ExecuteReader();
if (SDR.HasRows)
{
while (SDR.Read())
{
if (Convert.ToInt32(SDR["advers_star"]) == 0)
star = "../img/star/0star.png";
if (Convert.ToInt32(SDR["advers_star"]) == 1)
star = "../img/star/1star.png";
if (Convert.ToInt32(SDR["advers_star"]) == 2)
star = "../img/star/2star.png";
if (Convert.ToInt32(SDR["advers_star"]) == 3)
star = "../img/star/3star.png";
if (Convert.ToInt32(SDR["advers_star"]) == 4)
star = "../img/star/4star.png";
if (Convert.ToInt32(SDR["advers_star"]) == 5)
star = "../img/star/5star.png";
if (Convert.ToInt32(SDR["advers_star"]) == 6)
star = "../img/star/6star.png";
if (Convert.ToInt32(SDR["advers_star"]) == 7)
star = "../img/star/7star.png";

if (Convert.ToInt32(SDR["advers_type"]) == 1)
{
confirm = "لغو تایید";
Session["advers_type"] = 0;
}


if (Convert.ToInt32(SDR["advers_type"]) == 0)
{
confirm = "تایید اگهی";
Session["advers_type"] = 1;
}


Response.Write(" <div class=\"NAL\"><img src=\"../img/e.jpg\"/><div class=\"NAL_Text\">" + SDR["advers_text"] + "</div><div class=\"NAL_Star\"><img src=\"" + star + "\"/></div><div class=\"NAL_Dat_Bnk\">sdfsf</div><div class=\"NAL_Option_box\"><A class=\"NAL_Option_box_Del_btn\" href=\"AdversDelete.aspx?advers_id=" + SDR["advers_id"] + "\">حذف اگهی</a> <A class=\"NAL_Option_box_OK_btn\" href=\"AdversOk.aspx?advers_id=" + SDR["advers_id"] + "&" + Session["advers_type"] + "\">" + confirm + "</a> </div></div>");
}
}
else
Response.Write("اگهس وجود ندازد");
connection.Close();
connection.Dispose(); %>







و این کد مال صفحه adversok هست که عمل ویرایش دیتابیس رو انجام میده



string sql = "update adversting set advers_type = {0} where advers_id = {1}";
sql = string.Format (sql,Session["advers_type"], Request.QueryString["advers_id"]);
SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationMa nager.ConnectionStrings["connection"].ConnectionString);
connection.Open();
SqlCommand command = new SqlCommand(sql, connection);
command.ExecuteNonQuery();
connection.Close();
connection.Dispose();

Response.Redirect("default.aspx");



ممنون میشم راهنمایی کنین

Mostafa_
جمعه 18 اردیبهشت 1394, 10:08 صبح
دوستان کسی نیست راهنماییم کنه ؟؟؟

Mostafa_
شنبه 19 اردیبهشت 1394, 00:07 صبح
چرا برا هر موضوعی باید 50 بار پستمو ابدیت کنم ؟
چرا کسی جواب نمیده به پستای من ؟؟؟؟

maryammashkani
شنبه 19 اردیبهشت 1394, 09:14 صبح
خب خودتون باید این امکان رو بهش بدین عزیزم
برای جدول اگهی هاتون یه فیلد بزارین که توش اگه 0 قرار گرفت یعنی غیرفعاله و اگه 1 بود یعنی فعاله.
حالا موقه نمایش اگهی ها شرط بزارین که اگه این فیلد برابر 1 بود نمایش بده

Mostafa_
شنبه 19 اردیبهشت 1394, 10:47 صبح
خب خودتون باید این امکان رو بهش بدین عزیزم
برای جدول اگهی هاتون یه فیلد بزارین که توش اگه 0 قرار گرفت یعنی غیرفعاله و اگه 1 بود یعنی فعاله.
حالا موقه نمایش اگهی ها شرط بزارین که اگه این فیلد برابر 1 بود نمایش بده


خوب همینطور هست ،،،
فیلد رو قرار دادم همه چیش درسته
یعنی اصولا باید درست کار کنه
اما وقتی اجرا میکننم تو مرورگر یه بار مقدار 0 رو به یک تغییر میده یا برعکس و دگ کار نمیکنه
البته بازم بعضی وقتا ،،،
رو بعضی از اگهی ها اصلا کار نمیکنه همون یه بار هم

بیتا حکمت
شنبه 19 اردیبهشت 1394, 12:46 عصر
سلام .



if (Convert.ToInt32(SDR["advers_type"]) == 1) {
confirm = "لغو تایید";
Session["advers_type"] = 0;
}


if (Convert.ToInt32(SDR["advers_type"]) == 0)
{
confirm = "تایید اگهی";
Session["advers_type"] = 1;
}





شما گفتید هر جا برابر یک باشه مقدارش به صفر تغییر کنه ، و پایین تر اومدین گفتین advers_type برابر صفر هست به یک تغییر کنه ، با شرطی که هست همیشه advers_type مقدار یک می گیره

Mostafa_
شنبه 19 اردیبهشت 1394, 13:22 عصر
سلام .



if (Convert.ToInt32(SDR["advers_type"]) == 1) {
confirm = "لغو تایید";
Session["advers_type"] = 0;
}


if (Convert.ToInt32(SDR["advers_type"]) == 0)
{
confirm = "تایید اگهی";
Session["advers_type"] = 1;
}





شما گفتید هر جا برابر یک باشه مقدارش به صفر تغییر کنه ، و پایین تر اومدین گفتین advers_type برابر صفر هست به یک تغییر کنه ، با شرطی که هست همیشه advers_type مقدار یک می گیره



درسته ،،، خوب ایرادش همینه که درست کار نمیکنه یعنی فقط یه بار کار میکنه اونم بعضی وقتا

بیتا حکمت
شنبه 19 اردیبهشت 1394, 13:43 عصر
درسته ،،، خوب ایرادش همینه که درست کار نمیکنه یعنی فقط یه بار کار میکنه اونم بعضی وقتا

همانا خداوند تبارک و تعالا Else if رو برا همچین روزایی افریده ، به این دو کد ساده توجه کنید:

حالت اول :




int i = 1;
if (i == 1)
{
i = 0;
}
if (i == 0)
{
i = 1;
}

MessageBox.Show(i.ToString()); // خروجی این کد همیشه یک هست




حالت دوم :




// روش صحیح
int i = 1;
if (i == 1)
{
i = 0;
}
else if (i == 0)
{
i = 1;
}

MessageBox.Show(i.ToString()); // خروجی این کد هست

}

Mostafa_
شنبه 19 اردیبهشت 1394, 16:21 عصر
همانا خداوند تبارک و تعالا Else if رو برا همچین روزایی افریده ، به این دو کد ساده توجه کنید:

حالت اول :




int i = 1;
if (i == 1)
{
i = 0;
}
if (i == 0)
{
i = 1;
}

MessageBox.Show(i.ToString()); // خروجی این کد همیشه یک هست




حالت دوم :




// روش صحیح
int i = 1;
if (i == 1)
{
i = 0;
}
else if (i == 0)
{
i = 1;
}

MessageBox.Show(i.ToString()); // خروجی این کد هست

}





عجب !!!
تست میکنم خبر میدم ،، بااینکه Else if جواب نداد
اما تست میکنم خبر میدم :)

Mostafa_
شنبه 19 اردیبهشت 1394, 16:31 عصر
همانا خداوند تبارک و تعالا Else if رو برا همچین روزایی افریده ، به این دو کد ساده توجه کنید:

حالت اول :




int i = 1;
if (i == 1)
{
i = 0;
}
if (i == 0)
{
i = 1;
}

MessageBox.Show(i.ToString()); // خروجی این کد همیشه یک هست




حالت دوم :




// روش صحیح
int i = 1;
if (i == 1)
{
i = 0;
}
else if (i == 0)
{
i = 1;
}

MessageBox.Show(i.ToString()); // خروجی این کد هست

}





متاسفانه کار نکرد ،،،
یه سوال نحوه ارسال 2تا مقدار به یه صفحه چطوریه ،،،
با چه علامتی باید این دوتا مقدار رو جدا کرد ؟

Mostafa_
شنبه 19 اردیبهشت 1394, 16:51 عصر
همانا خداوند تبارک و تعالا Else if رو برا همچین روزایی افریده ، به این دو کد ساده توجه کنید:

حالت اول :




int i = 1;
if (i == 1)
{
i = 0;
}
if (i == 0)
{
i = 1;
}

MessageBox.Show(i.ToString()); // خروجی این کد همیشه یک هست




حالت دوم :




// روش صحیح
int i = 1;
if (i == 1)
{
i = 0;
}
else if (i == 0)
{
i = 1;
}

MessageBox.Show(i.ToString()); // خروجی این کد هست

}





متاسفانه کار نکرد
یه سوال نحوه ارسال 2 مقدار به یه صفحه چطوره ؟؟

بیتا حکمت
شنبه 19 اردیبهشت 1394, 17:15 عصر
منظورتون رو از اینکه کار نکرد رو متوجه نشدم ، MessageBox.Show تو Asp.net نیست و من فقط میخواستم با مثالم خروجی else if رو بهتون معرفی کنم .
در مورد اینکه چطور میشه چند سشن رو با متغیر ارسال کرد (چیزی نمی دونم ) ، اما می تونید با دو سشن جداگانه متغیرها رو به صفحه بعدی ارسال کنید.

Mostafa_
شنبه 19 اردیبهشت 1394, 17:53 عصر
منظورتون رو از اینکه کار نکرد رو متوجه نشدم ، MessageBox.Show تو Asp.net نیست و من فقط میخواستم با مثالم خروجی else if رو بهتون معرفی کنم .
در مورد اینکه چطور میشه چند سشن رو با متغیر ارسال کرد (چیزی نمی دونم ) ، اما می تونید با دو سشن جداگانه متغیرها رو به صفحه بعدی ارسال کنید.


میدونم
ادعا و تعریف نمیکنم اما تازه کار نیستم ،،، مشکل اینجاست که تحت وب کار نکردم تاحالا
حالا مشکل اینجاست که مثلا دکمه روش نوشته شده ثبت اگهی ،،،، و باید مقدارش توی دیتابیس 0 باشه ،،،، چون هنو تایید نشده
وقتی روی دکمه کلیک میشه باید مقدار بشه 1 و عنوان دکمه بشه انصراف
وقتی روی دکمه کلیک میشه مقدار تغییر نمیکنه
تو اون کدی که اول فرستادم ، نگاه کنین ،،، نوشتم چطور دارم مقدار رو ارسال میکنم به صفحه به این صورت عمل کردم
</a> <A class=\"NAL_Option_box_OK_btn\" href=\"AdversOk.aspx?advers_id=" + SDR["advers_id"] + "&" + Session["advers_type"] + "\">

بعدمثلا الان advers_id ارسال میشه ،،،، بعد با & مقدار دوم رو ارسال میکنم به صفحه که همون Session باشه ،، یعنی با اون علامت جدا میکنم دوتا مقدار رو
من فک میکنم مقدار ها رو اشتباه دارم ارسال میکنم ،،
امیدوارم منظورم رو درست رسونده باشم :)

Mostafa_
یک شنبه 20 اردیبهشت 1394, 18:09 عصر
کسی نیست راهنماییم کنه ؟

Davidd
یک شنبه 20 اردیبهشت 1394, 18:44 عصر
اول اینکه شیوه کد نویسی کلا اشکال داره. 7 تا if پشت سر هم برای چک کردن یه مقدار؟ در اینجور مواقع از Switch یا else if استفاده میشه. با توجه به اینکه میگی تحت وب کار نکردی بهتره در مورد مفاهیم اولیه مثل سشن، کوکی، کوئری استرینگ، ترتیب رخدادهای صفحه و ... مطالعه کنی.
برای نمایش لیست آگهی ها از گرید ویو، ریپیتر و دیتالیست استفاده میشه. Responce.Write روش درستی نیست.
اما در مورد این مشکل دلیلش اینه که شما داری در یه حلقه یه متغیرو چندین بار مقدار میدی خوب مشخصه که مقدار متغیر برابر چیزیه که در آخرین تکرار گرفته! بنابراین Session["advers_type"] برای تمام آگهی ها یه مقدار داره. وقتی مقدار Session["advers_type"] با کوئری استرینک و در لینک صفحه داره ارسال میشه پس چه لزومی به استفاده از سشن هست؟ به جای سشن از یه متغیر به نام advers_type استفاده کن:
</a> <A class=\"NAL_Option_box_OK_btn\" href=\"AdversOk.aspx?advers_id="+ SDR["advers_id"] + "&confirm="+ advers_type+ "\">



در صفحه adversok هم به جای سشن از کوئری استرینگ استفاده کن :
sql = string.Format (sql,Request.QueryString["confirm"], Request.QueryString["advers_id"]);

My_LoVe_IRAN
دوشنبه 21 اردیبهشت 1394, 10:15 صبح
چند تا از ایراد ها رو دوستان گفتن ! نمیدونم درست متوجه شدم یا نه ،اما فکر کنم یه ایراد دیگه هم که برنامتون داره و باعث میشه گه گاهی درست و گه گاهی غلت عمل کنه ،ترتیب نوشتن دستوراتتون هست ،ببینید ،شما دارین تو وب اطلاعات رو رد بدل میکنین ،وقتی زمان اتصال به دیتابیس از چند صدوم ثانیه عبور کنه ،ارتباط با سرور قطع میشه ! باید همه اطلاعات رو از سرور بگیرین بعد روش هر کاری دوست دارین بکنین !دوستمون در مورد else if کاملا صحیح گفتن ،شما باید else if بزارین ،اما چون زمان اتصال از حالت عادی خارج میشه ،سشن کلا ساخته نمیشه در نتیجه ،سشن مقدارش null یا 0 میشه ! جای دیگه ای که دارین استفاده میکنین ، سشن مقدار قبلی یا 0 رو داره ! سشن یک متغیر هست دوست من ،وقتی شما select میکنین ،اونم همه موارد رو ،خوب سشن همه موارد با هم برابر میشه !!!