تالار گفتمان مانشت

نسخه‌ی کامل: سؤال در مورد چک باکس در PHP
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام دوستان
یکی از مسائلی که برام پیش اومده اینه که وقتی بخوام اطلاعات چک باکس رو توی دیتابیس ذخیره کنم، همیشه آخرین انتخاب توی ستون مربوط به "علایق" (به عنوان مثال) ذخیره میشه. به کد زیر نگاه کنید :
کد php:
علایق:<br />

ورزش<input name="intrest" type="checkbox" value="ورزش" />
هنر<input name="intrest" type="checkbox" value="هنر" />
تفریح<input name="intrest" type="checkbox" value="تفریح" />
تحصیل<input name="intrest" type="checkbox" value="تحصیل" /> 

به نظرتون باید چه تنظیماتی توی ستون table مربوط به "علایق" اانجام بدم که وقتی چند گزینه با هم انتخاب بشه، توی دیتابیس هم هر چند گزینه ذخیره بشه ؟
مشکل اینجاست که شما نام همه ی چک باکس ها رو گذاشتین intrest ، واسه همین همیشه آخری ذخیره میشه چون میاد جای قبلیش ، برای حل مشکل ، اسم چک باکس هاتون رو بزارین intrest1 , intrest 2 الی آخر و بعد هم وقت اینزرت کردن تو دیتا بیس ، تک تک هر چک باکس رو چک کنید و وارد دیتا بیس کنید ، برای مثال اگه intrest1 تیک خورده باشه تو دیتابیس مقدار true و اگه فرضا intrest2 تیک نخورده باشه مقدار false ذخیره میشه ، اگه باز مشکلی بود بپرسین
(20 فروردین 1392 08:24 ب.ظ)phoenix021 نوشته شده توسط: [ -> ]مشکل اینجاست که شما نام همه ی چک باکس ها رو گذاشتین intrest ، واسه همین همیشه آخری ذخیره میشه چون میاد جای قبلیش ، برای حل مشکل ، اسم چک باکس هاتون رو بزارین intrest1 , intrest 2 الی آخر و بعد هم وقت اینزرت کردن تو دیتا بیس ، تک تک هر چک باکس رو چک کنید و وارد دیتا بیس کنید ، برای مثال اگه intrest1 تیک خورده باشه تو دیتابیس مقدار true و اگه فرضا intrest2 تیک نخورده باشه مقدار false ذخیره میشه ، اگه باز مشکلی بود بپرسین

ممنون از راهنماییتون
برای اینکه هر کدوم از عناصر چک باکس که تیک بخوره ، true و اگر تیک نخوره false ذخیره بشه، باید نوع ستون مربوط به اون ها رو توی دیتابیس چی انتخاب کنیم؟ من binary انتخاب کردم ولی دو تا صفر ذخیره میشه واسه همه ی گزینه ها Undecided
(20 فروردین 1392 09:47 ب.ظ)simorghsimorgh نوشته شده توسط: [ -> ]
(20 فروردین 1392 08:24 ب.ظ)phoenix021 نوشته شده توسط: [ -> ]مشکل اینجاست که شما نام همه ی چک باکس ها رو گذاشتین intrest ، واسه همین همیشه آخری ذخیره میشه چون میاد جای قبلیش ، برای حل مشکل ، اسم چک باکس هاتون رو بزارین intrest1 , intrest 2 الی آخر و بعد هم وقت اینزرت کردن تو دیتا بیس ، تک تک هر چک باکس رو چک کنید و وارد دیتا بیس کنید ، برای مثال اگه intrest1 تیک خورده باشه تو دیتابیس مقدار true و اگه فرضا intrest2 تیک نخورده باشه مقدار false ذخیره میشه ، اگه باز مشکلی بود بپرسین

ممنون از راهنماییتون
برای اینکه هر کدوم از عناصر چک باکس که تیک بخوره ، true و اگر تیک نخوره false ذخیره بشه، باید نوع ستون مربوط به اون ها رو توی دیتابیس چی انتخاب کنیم؟ من binary انتخاب کردم ولی دو تا صفر ذخیره میشه واسه همه ی گزینه ها Undecided

شما توی تعریف table تون ، برای هر سطر ، id = " interest1 رو توی سطر اول و id = "interest2" و الی آخر رو بنویسید ، بعد بر اساس اون نام id مقدار بگیرین از هر چک باکس ، ببینین مشکل حل نمیشه ؟
(20 فروردین 1392 08:24 ب.ظ)phoenix021 نوشته شده توسط: [ -> ]مشکل اینجاست که شما نام همه ی چک باکس ها رو گذاشتین intrest ، واسه همین همیشه آخری ذخیره میشه چون میاد جای قبلیش ، برای حل مشکل ، اسم چک باکس هاتون رو بزارین intrest1 , intrest 2 الی آخر و بعد هم وقت اینزرت کردن تو دیتا بیس ، تک تک هر چک باکس رو چک کنید و وارد دیتا بیس کنید ، برای مثال اگه intrest1 تیک خورده باشه تو دیتابیس مقدار true و اگه فرضا intrest2 تیک نخورده باشه مقدار false ذخیره میشه ، اگه باز مشکلی بود بپرسین

فعلا با همین راهنمایی کارم راه افتاد بسیار متشکرم از همکاری تون Smile
می نویسم تا اگه کسی مشکل مشابه داشت برطرف شه...
شما باید name رو بصورت آرایه بنویسین یعنی بصورت زیر:
کد php:
علایق:<br />

ورزش<input name="intrest[]" type="checkbox" value="ورزش" />
هنر<input name="intrest[]" type="checkbox" value="هنر" />
تفریح<input name="intrest[]" type="checkbox" value="تفریح" />
تحصیل<input name="intrest[]" type="checkbox" value="تحصیل" /> 
و بعد سمت سرور با استفاده از foreach مقادیر را گرفته و مثلا با ; بهم بچسبانید و رشته حاصل ( در اینجا a$) را در ستون مورد نظر ذخیره کنید.
بعدا هر وقت خواستید از دیتابیس مقادیر را بخوانید بر اساس ; ، explode می کنید.
کد php:
$a "";
foreach (
$_POST['intrest'] as $intrest)
{
$a .=$intrest.";";

(20 خرداد 1394 12:26 ق.ظ)gogooli نوشته شده توسط: [ -> ]می نویسم تا اگه کسی مشکل مشابه داشت برطرف شه...
شما باید name رو بصورت آرایه بنویسین یعنی بصورت زیر:
کد php:
علایق:<br />

ورزش<input name="intrest[]" type="checkbox" value="ورزش" />
هنر<input name="intrest[]" type="checkbox" value="هنر" />
تفریح<input name="intrest[]" type="checkbox" value="تفریح" />
تحصیل<input name="intrest[]" type="checkbox" value="تحصیل" /> 
و بعد سمت سرور با استفاده از foreach مقادیر را گرفته و مثلا با ; بهم بچسبانید و رشته حاصل ( در اینجا a$) را در ستون مورد نظر ذخیره کنید.
بعدا هر وقت خواستید از دیتابیس مقادیر را بخوانید بر اساس ; ، explode می کنید.
کد php:
$a "";
foreach (
$_POST['intrest'] as $intrest)
{
$a .=$intrest.";";


اگر همین چک باکس ها داخل یه حلقه باشه و به تعداد کاربرای موجود تکرار بشه.اون موقع هم همین کده شما جواب میده؟یا باید از یه روش دیگه استفاده کنیم؟
(24 دى 1396 01:48 ب.ظ)sevda_z13 نوشته شده توسط: [ -> ]اگر همین چک باکس ها داخل یه حلقه باشه و به تعداد کاربرای موجود تکرار بشه.اون موقع هم همین کده شما جواب میده؟یا باید از یه روش دیگه استفاده کنیم؟
منظورتون اینه که داشته باشیم.
کاربر۱:
چک باکس ورزش
چک باکس هنر
چک باکس تفریح
چک باکس تحصیل
کاربر ۲:
چک باکس ورزش
چک باکس هنر
چک باکس تفریح
چک باکس تحصیل
کاربر۳:
چک باکس ورزش
چک باکس هنر
چک باکس تفریح
چک باکس تحصیل
؟
اون وقت name همچنان آرایه است منتهی باید طوری در نظر بگیرید name رو که برای هر user متفاوت باشد. از user_id در name چک باکس ها استفاده شود و موقع ذخیره سازی هم یک ستون به نام user_id اضافه می شه.
کد:
<input name="intrest<?php echo $user_id; ?>[]" type="checkbox" value="ورزش" />
لینک مرجع