PDA

View Full Version : نمایش رندوم هر 24 ساعت



b.paseban
یک شنبه 09 آبان 1389, 17:34 عصر
سلام.
گشتم توی سایت ولی این یکیو پیدا نکردم.:لبخند:
می خوام هر 24 ساعت از بانک یکی از دیتاهارو بخونم و نمایش بدم.
فقط می خوام تا زمانی که همه ی دیتاها از بانک خونده نشده دیتای تکراری نمایش داده نشه.
با تشکر.

dataking
یک شنبه 09 آبان 1389, 17:53 عصر
سلام
فکرکنم قصد داری چیزی مثل حدیث روز و یا سخن روز درست کنی
1- جدولت باید دو تا فیلد ردیف و شرح داشته باشه
2- یک عدد تکراری بین یک تا بزرگترین عدد توی فیلد ردیف تولید کن
3- فیلدی که ردیفش برابر عدد تولید شده هست نمایش بده و فیلد را از جدول حذف کن ( دفعه دیگه نیست که نمایش داده بشه )
4- اگه اطلاعات خیلی مهمه قبل از حذف شدن تو یه تیبل دیگه ذخیرش کن
5- اگه من بد گفتم اصلا ناراحت نشو هیشکی منو دوست نداره .

b.paseban
یک شنبه 09 آبان 1389, 18:05 عصر
تشکر ولی!

3-فیلدی که ردیفش برابر عدد تولید شده هست نمایش بده و فیلد را از جدول حذف کن ( دفعه دیگه نیست که نمایش داده بشه )
4- اگه اطلاعات خیلی مهمه قبل از حذف شدن تو یه تیبل دیگه ذخیرش کن

من نمیخوام حذفش کنم میشه بعد از نمایش این مقدار تا موقعی که جدول بروز نشده باشه این مقدار نمایش داده نشه چون میخوام اولا نمایش تکراری نباشه بعدشم اگه کل مقادیر جدول نمایش داده شد دوباره از اول شروع کنه.(حالا تکرار بشه مشکلی نیست)

dataking
یک شنبه 09 آبان 1389, 18:37 عصر
باز هم سلام
خب اون رکورد را توی یک جدول دوم هم ذخیرهکن ( ینی از اونجا حذف نکن )
بعد برای نمایش اول با یه خط کد جستجو کن ببین تو اون جدول دوم هست اگه هست نمایش نده و گرنه نمایش بده با از حلقه for استفاده کنید
خب وفتی تعداد رکوردهای جدول اول و دوم اندازه هم شد یعنی همه نمایش داده شده همه رکودهای جدول اول را حذف کن روز ار نو روزی از نو
بد اخلاقی نکن من تشکر خیلی دوست دارم

majnun
یک شنبه 09 آبان 1389, 18:39 عصر
به جای اینکه حذف بکنه بهتر نیست بیاد یه فیلد بولین بزاره و مقدارش را false کنه ؟؟؟

dataking
یک شنبه 09 آبان 1389, 18:49 عصر
به جای اینکه حذف بکنه بهتر نیست بیاد یه فیلد بولین بزاره و مقدارش را false کنه ؟؟؟
سلام مجنون جان :تشویق::تشویق:

اینم پیشنهاد خیلی خوب و به جایی است پس قسمت آخر را این کار بکن می تونییه فیلد از نوع منطقی یا همون بولین تعریف کنی و وقتی اون رکورد را نمایش دادی فیلد بولینش را false کن و یه کد هم اون با لاتر ا بنویس که اگه فیلد فلانش false بود دیگه نمایش داده نشه
یعنی جدول 3 فیلده بشه
:لبخند::لبخند:

b.paseban
یک شنبه 09 آبان 1389, 19:10 عصر
تشکر از هر دو دوست.
حالا اگه خواستیم دوباره از اول همون رکوردارو نمایش بدیم مشکلی پیش نمیاد؟:متفکر:
با این کارا که انجام میدیم دیگه نمیشه رکوردهای قبلی رو نمایش داد.
پس باید چکار کنیم؟

dataking
یک شنبه 09 آبان 1389, 19:36 عصر
یک متغیر از نوع عددی تعریف کن و با هر بار نمایش هر رکورد یک واحد بهش اضافه کن در پایان موقعی که متغیر برابر ردیف آخری شد . فیلد بولین همه رکوردها را true کن
که این هم میتونه با حلقه for باشه شما جواب همه سوال ها را گرفتی باید جمع بندی کنید و با سوال پرسیدن فقط ارزش علمی تاپیک به هم می خوره لطفا یک بار همه جواب ها را برسی کنید و نتیجه را عملی کنید بعد پروژه را اجرا کنید انوقت دوباره سوال بپرسید .

majnun
یک شنبه 09 آبان 1389, 19:38 عصر
خب میتونی یه دستور بنویسی که اگر مقداری برنگردوند یه دستور آپدیت انجام بده همه رو true کنه

یه دستور اپدیت بدون شرط

si6arp
یک شنبه 09 آبان 1389, 23:54 عصر
از کشینگ استفاده کن Caching
تاریخ رو در یک کش قرار بده .
هر بار صفحه لود شد تاریخ فعلی را به تاریخ درون کش چک کن . اگر همون روز بود یه دیتا از دیتا بیس بخون و در غیر اینصورت....
دیتا که خوندی ID اون رکورد رو تو یه کش دیگه و یک کلید دیگه قرار بده + بهمراه یک کد که تو دیتا بیس اون آیدی دیگه گرفته نشه مثل Select * from Table where id not 1
برای افزودن دیتای خونده شده به لیست خوانده شده ها هم مقدار زیر رو توی کش جدید ثبت کن
or not [ID Data ke khonde shode] .
هر بار که میخوای دیتا جدید رو بخونی این دستور رو به دیتا بیس ارسال کن و دیتای جدید رو بخون.
فکر کنم روش جالب و سریعی باشه . اساتید نظرتون چیه ؟

alonemm
سه شنبه 11 آبان 1389, 13:17 عصر
خب برای اینکه هر 24 ساعت یک بار این عملیات انجام بشه میتونی یک صفحه بسازی که این عملیات رو انجام بده بعد توسط نرم افزارهایی که توی هر کنترل پنل سایت هست چکش کنی مثل CornJobs یا با هرنام دیگری که یک زمان میگیره و طی اون زمان یک صفحه رو اجرا میکنه مثل تسک ویندوز.

aserfg
سه شنبه 11 آبان 1389, 13:36 عصر
روش کار:
ابتدا یه تابع بنویس که خروجیش دیتا تیبل باشه (این تابع یک مقدار عددی می گیره و براساس اون دیتا تیبل رو میده)

public static DataTable getbyrand(int random)
{
}حالا اون پارامتر عددی که به این تابع می فرستی از نوع رندوم باید باشه در رویداد لود صفحه این طور عمل کن :


protected void Page_Load(object sender, EventArgs e)
{ Random r = new Random();
int num = r.Next(1, 50);
GridView1.DataSource = getbyrand(num);
GridView1.DataBind();

}
مقدار 50 رو به صورت پیش فرض گذاشتم شما می تونی به تعداد رکوردهای جدولت این مقدار رو ست کنی


خوب حالا شما می خوای هر 24 ساعت این اتفاق بیفته می تونی در پیج لود برای تولید این عدد رندوم شرط بزاری مثلا شما می تونی یه متغیر تعریف کنی :



DayOfWeek d = new DayOfWeek();





و مقدار روز جاری رو در اون ذخیره کنی سپس هر بار مقدار روز جاری رو با اون مقایسه کنی اگه تفاوت داشت بلوک if در غیر این صورت بلوک else

پیشنهاد می کنم یه جدول بساز با دو فیلد یکیش DayOfWeek رو نگه داره یکیش مقدار عددتصادفی تولید شده .