ورود

View Full Version : سوال: پیدا کردن روز هفته



seyedreza
پنج شنبه 20 مهر 1391, 11:58 صبح
سلام دوستان.
من تو db میام جمع روز های هفته رو ذخیره می کنم.شنبه(64)، یکشنبه(1)، دوشنبه(2)، سه شنبه(4)، چهارشنبه(8)، پنجشنبه(16)، جمعه(32)
که وقتی کاربر چندتا روز رو انتخاب میکنه،جمع انتخاب شده ها ذخیره میشه.
مثلاً اگه شنبه و سه شنبه رو انتخاب کنه، 68 ذخیره میشه.
حالا به این نیاز دارم که وقتی میخوام روزهای هفته رو نمایش بدم باید بفهمم جمع چه روزهایی در db ذخیره شده.
برای مثال اگه عدد 7 بود، بشه فهمید که کاربر روزهای سه و دو و یک شنبه رو انتخاب کرده بوده
کدش چه جوری میشه؟

spiderman200700
پنج شنبه 20 مهر 1391, 17:28 عصر
سلام.
بعید میدونم این کار عملی باشه.
مثلا اگه عدد 48 باشه چندین حالت انتخاب مختلف پیش میاد که ما نمیتونیم هیچ جوری بفهمیم انتخاب کاربر کدومش بوده.

M0TR!X
پنج شنبه 20 مهر 1391, 21:23 عصر
سلام.

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

ولی روشی که الن به ذهن من رسید اینه : شما روزهای هفته رو از یک تا هفت در نظر بگیرید مثلا شنبه 1.یکشنبه 2 و ... یا میتونید از صفر بگیرید شنبه 0یکشنبه 1 و .....


یعد موقع ذخیر کردم به صورت رشته سیو کنید تا با هم جمع نشن مثلا اگه کاربر روزهای شنبه تا سه شنبه رو انتخاب کرد به این صورت سیو بشه توی دیتابیس :1234

اون موقع شما میدونید که کاربر چهار روز اول رو انتخاب کرده !!!!!!!!!!!!

اگه مشکلی بود بگو در حد توان کمک میکنم.

ما هم هر چی یاد گرفتیم از همین فروم بوده و یکی از فعال ترین کاربرهای بخش جاوا همین spiderman200700 عزیزه.

seyedreza
یک شنبه 23 مهر 1391, 10:42 صبح
سلام به همگی
چرا میشه
یکی از بچه ها function رو نوشت و کار می کنه

function findeDayOfWeek(result){
var i = 1;
var resultNew = new Array();
var arrayOfDay = new Array();
var resultNew = new Array();
var daysNumber = result.dataList[0].iDays_of_week;
while(daysNumber-i >= 0){
i = i*2;
}
i = i/2;
while(daysNumber > 0){
if(daysNumber-i >= 0){
arrayOfDay.push(i);
daysNumber = daysNumber-i;
}
i = i/2;
}
Ext.each(arrayOfDay, function(v){
i = 1;
while(v > 1){
v /= 2;
i++;
}
resultNew.push(i);
});
resultNew.sort;
return resultNew;
}

spiderman200700
دوشنبه 24 مهر 1391, 13:38 عصر
اولا این کد جاوا اسکریپته و اینجا تالار جاواس.
دوما این اصلا اون چیزی نیست که شما گفتی.
سوما من مثلا عدد 100 رو به شما میدم. شما بگو چه روزایی رو انتخاب کردم.
همونطور که میبینی، نمیشه تشخیص داد. چون ممکنه جمع چندیدن روز مختلف بشه 100 . و من نمیدونم اون روزهایی که کاربر انتخاب کرده چه روزهایی هست.

همایون افشاری
دوشنبه 08 آبان 1391, 16:41 عصر
این کار عملیه. کافیه عدد رو به مبنای دو ببرید. مثلا در مورد عدد 100 جواب میشه 1100100 یعنی روزهای سه شنبه، جمعه و شنبه. یا در مورد 48 : 0110000 یعنی روزهای پنجشنبه و جمعه
البته فرض بر اینه که موقع ذخیره در دیتابیس فقط و فقط با همین روش مقادیر محاسبه شده باشه.
این روش در خیلی از جاها استفاده میشه ...