View Full Version : مشکل در ذخیره چک باکس در دیتابیس
majidbayat
جمعه 23 اسفند 1398, 23:36 عصر
سلام و عرض ادب
مبتدیم و قصد دارم با لاراول سایت مشاور املاک طراحی کنم
در بخش فرم ثبت ملک حدود 20 چک باکس مثل آسانسور، پارکینگ و .... هست
قصدم این بود که برای هر چک باکس یک ستون در جدول از نوع BIT ایجاد کنم ولی متوجه شدم که این امکان در لاراول نیست
از طرفی استفاده از ستون از نوع boolean باعث هدر رفت فضای دیتابیس میشه ( 8 بیت برای true و false زیاده)
ایده ای که دارم اینه که که یک ستون از نوع int ایجاد کنم و هر بیت رو به یک چک باکس اختصاص بدم، (البته هنوز نمیدونم چطور این کارو کنم)
حالا سوالم اینه نظرتون در مورد ایده کلی چیه؟
ایده بهتری دارین؟
plague
شنبه 24 اسفند 1398, 16:53 عصر
بولین همون int(1) هستش
true , false واقعی نیست ....... 0 و1 هستش
majidbayat
شنبه 24 اسفند 1398, 20:56 عصر
بولین همون int(1) هستش
true , false واقعی نیست ....... 0 و1 هستش
میدونم احتمالا بد نوشتم
منظورم این بود در هر حال 8 بیته و برای نشون دادن true and false فقط یک بیت هم کفایت میکنه
hamedarian2009
یک شنبه 25 اسفند 1398, 11:51 صبح
برای سایتی مثل مشاور املاک بهتره از فیلد ساز استفاده کنید مثلا برای این چک باکس هایی که می گید بهتره برای هر نوع ملک مثل آپارتمان خود مدیر سایت یکسری فیلد تعریف کنه بعدش از طریق جدول واسط و رابطه چند به چند کافیه آیدی اون فیلد و آیدی آگهی ملک رو قرار بدین اینجوری داینامیک هم میشه و بعدا دیگه نیاز نیست برای درج یا ویرایش نام فیلد از برنامه نویس بخوان اینکارو بکنه
plague
دوشنبه 26 اسفند 1398, 02:06 صبح
همون بولین بزار خودت رو درگیر نکن فکر نمیکنم راه ساده ای برای این کار باشه
majidbayat
چهارشنبه 28 اسفند 1398, 20:51 عصر
همون بولین بزار خودت رو درگیر نکن فکر نمیکنم راه ساده ای برای این کار باشه
راهش رو پیدا کردم ولی خوب دردسرش زیاده
تصمیم گرفتم همون boolean بزارم
در هر حال از کمکتون ممنونم
majidbayat
چهارشنبه 28 اسفند 1398, 20:52 عصر
برای سایتی مثل مشاور املاک بهتره از فیلد ساز استفاده کنید مثلا برای این چک باکس هایی که می گید بهتره برای هر نوع ملک مثل آپارتمان خود مدیر سایت یکسری فیلد تعریف کنه بعدش از طریق جدول واسط و رابطه چند به چند کافیه آیدی اون فیلد و آیدی آگهی ملک رو قرار بدین اینجوری داینامیک هم میشه و بعدا دیگه نیاز نیست برای درج یا ویرایش نام فیلد از برنامه نویس بخوان اینکارو بکنه
ممنون رفیق
majidbayat
چهارشنبه 28 اسفند 1398, 21:04 عصر
در ضمن در مورد راه حل هم ی توضیح کوچیک میدم شاید بکار بقیه بیاد
فرض کنید 3 تا چک باکس داریم
1.آسانسور 2.پارکینگ 3.انباری
حالا ی متغیر 8 بیتی هم داریم به نام x
با ارزش ترین بیت رو اختصاص میدیم به آسانسور اگر آسانسور داشت 1 میشه و اگر آسانسور نداشت 0 میشه
بقیه هم به همین صورت
$x=0;
if($asansor==1) $x=$x+128;
if($parking==1) $x=$x+64;
if($anbari==1) $x=$x+32;
نتیجه نهایی ذخیره میشه
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.