• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ذخیره مقادیر checkbox برای یک رکورد در mysql با php
#1
سلام دوستان
من یه مشکل جدی دارم تو ذخیره مقادیر checkbox برای یک رکورد در mysql با php
مشکل اینجاست که مقادیر چکباکس رو تو آرایه میگیرم و insert میکنم تو db برای یک رکورد خاص! اما فقط مورد آخری که تیک خورده رو ذخیره میکنهSad


نمونه کد من اینه:


کد پی‌اچ‌پی:
@$checkbox implode(';' ,  $_POST['checkbox']);
$arrlength count($checkbox);

if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "form")) {
$i=0;
foreach (
$_POST['checkbox'] as $checkbox){
$insertSQL sprintf("INSERT INTO pro_st (prost_proid, prost_stid) VALUES (%s, %s)",
                       
GetSQLValueString($row_rsPages['pro_id'], "int"),
                       
GetSQLValueString(isset($checkbox) ? "true" """defined","'$checkbox'","'N'"));
            
$i $i+1;
    } 
  پاسخ
تشکر شده توسط :
#2
نام checkbox ها در html بصورت آرایه هستش؟؟ مثلا اینجوری باید باشه

کد:
<input type="checkbox" name="checkbox[]" value="1" />
<input type="checkbox" name="checkbox[]" value="2" />
<input type="checkbox" name="checkbox[]" value="3" />
<input type="checkbox" name="checkbox[]" value="4" />
اگه کفشت پاتو می زد و از ترس قضاوت مردم پابرهنه نشدی و درد رو به پات تحمیل کردی دیگه در مورد آزادی شعار نده !
آلبر کامو
  پاسخ
تشکر شده توسط :
#3
من یه جدول محصول دارم
و یه جدول استاندارد
رابطه اینجوریه که برای هر محصول چند استاندارد باید تعریف بشه
من یه جدول تعریف کردم با id این دو جدول که به ازای مثلا محصول با id=1 چندین استاندارد insert بشه
لیست استانداردهارو هم اینجوری میگیرم:
کد پی‌اچ‌پی:
<?php
while($rows=mysql_fetch_array($rsNav)){
?>
  <tr>
    <td><input name="checkbox[]" type="checkbox" value="<?php echo $rows['st_id']; ?>" /></td>
    <td><?php echo $rows['st_id']; ?></td>
    <td><?php echo $rows['st_name']; ?></td>
    <td><?php echo $rows['st_disc']; ?></td>          
  </tr>
<?php
}
?>

تو پایگاه داده محصول 1 ذخیره میشه اما مثلا از 5 مورد استانداردی که من تیک زدم تنها آخرین مورد ذخیره میشه
تو تصویر شماره 1 لیست محصولات رو نشون میده که با کلیک روی استاندارد میره به عکس شماره 2 و هرچندتا استاندارد که بخوایم انتخاب میشه و برای همون محصول ذخیره میشه

شکل 1:
[عکس: pdfh_1.jpg]
شکل 2:
[عکس: brht_2.jpg]
  پاسخ
تشکر شده توسط :
#4
اول باید مطمئن بشی که امکان مالتی کوئری توسط درایور مربوطه پشتیبانی میشه!
حالا در مورد کدت که من دیدم شما داری متغییرت رو این شکلی پیاده میکنی

کد پی‌اچ‌پی:
$insertSQL sprintf("INSERT INTO pro_st (prost_proid, prost_stid) VALUES (%s, %s)",
                       
GetSQLValueString($row_rsPages['pro_id'], "int"),
                       
GetSQLValueString(isset($checkbox) ? "true" """defined","'$checkbox'","'N'")); 

این در حالی هست که وقتی توی یک حلقه میخوای یک متغییر رو مقدار بدی به اضافه ی مقدار قبلش باید از . استفاده کنی یعنی
کد پی‌اچ‌پی:
$insertSQL .= sprintf("INSERT INTO pro_st (prost_proid, prost_stid) VALUES (%s, %s)",
                       
GetSQLValueString($row_rsPages['pro_id'], "int"),
                       
GetSQLValueString(isset($checkbox) ? "true" """defined","'$checkbox'","'N'")); 

ولی بنظرم بهتر هست شما بجای اجرای مالتی کوئری تک تک اینزرت رو انجام بدی یعنس بعد همون انتساب متغییر اینزرت رو انجام بده
کد پی‌اچ‌پی:
$insertSQL sprintf("INSERT INTO pro_st (prost_proid, prost_stid) VALUES (%s, %s)",
                       
GetSQLValueString($row_rsPages['pro_id'], "int"),
                       
GetSQLValueString(isset($checkbox) ? "true" """defined","'$checkbox'","'N'"));
$pdo->exec($insertSQL

ولی اگر علاقه به اجرای یک کوئری هستی ( من هم معمولا همین کار رو میکنم اونجا باید از prepare در pdo استفاده کنی ( البته به شرط اینکه درایور pdo داری استفاده میکنی) در اینصورت کامند دیتابیست این میشه

کد:
$insertSQL = "INSERT INTO pro_st (prost_proid, prost_stid) VALUES";
foreach ($_POST['checkbox'] as $checkbox){
        sprintf("(%s, %s),",
            GetSQLValueString($row_rsPages['pro_id'], "int"),
            GetSQLValueString(isset($checkbox) ? "true" : "", "defined","'$checkbox'","'N'")
        );
}
$insertSQL = rtrim($insertSQL,',');



/*
INSERT INTO pro_st (prost_proid, prost_stid) VALUES (1,1),(1,2),(1,3),(1,4),(1,5),.....
*/
اگه کفشت پاتو می زد و از ترس قضاوت مردم پابرهنه نشدی و درد رو به پات تحمیل کردی دیگه در مورد آزادی شعار نده !
آلبر کامو
  پاسخ
تشکر شده توسط : kasbookar


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان