• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
خطای " Undefined offset: 1 " در کار با آرایه
#1
با سلام و درود خدمت اساتید محترم
دو سه روزه درگیر ساخت فرم ایجاد فاکتور هستم ، پاک کلافم کرده
هدفم : میخوام مدیریت برای همه یا بعضی از مشتریان که میخواد یه فاکتور با آیتم های مد نظر خودش ایجاد کنه و این فاکتور زمانی توی دیتابیس ذخیره بشه که مدیریت آیتم ها انتخاب ، کاربران رو برگزیده و کلید ایجاد فاکتور رو بزنه
راهی که مد نظر من بوده و این دو سه روزه درگیرشم اینکه اومدم یه آرایه چند بعدی ایجاد کردم و کد آیتم و یه سری مقدار رو داخلش ریختم که هنگام ذخیره یا پاک کردن اون سطر مد نظرم یه پیام عجیبی میده که پاک گیجم کرده از استاتید و دوستان میخوام راهنماییم کنند
پیام خطایی که دائما با اون برخورد میکنم
کد:
SCREAM: Error suppression ignored for
Notice: Undefined offset: 1 in D:\wamp\...\Invoice_add.php on line 47
و اینم کدهای من
کد پی‌اچ‌پی:
<?php    
# حذف
if ( isset($_POST['btnDelete']) ) {
    
$_invoice_cart unserialize($_POST['cartArray']);
    unset(
$_invoice_cart[$_POST['IdArray']]);
    
var_dump($_invoice_cart); 
}
if ( isset(
$_POST['btnAdd']) ) {
    if ( !isset(
$_POST['add']) ) { $_i 1; } else { $_i $_POST['add'] + 1; }
    if ( !isset(
$_POST['cartArray']) ) {
        unset(
$_invoice_cart);
        
$_invoice_cart = array( $_i => array( 'id' => $_POST['sltItemId'], 'qty' => '1'));
    } else {
        
$_invoice_cart unserialize($_POST['cartArray']);
        
$newdata =  array ( 'id' => $_POST['sltItemId'], 'qty' => '1' );
        
$_invoice_cart[$_i] = $newdata;
    }
?>
<table class="table table-striped table-advance table-hover">
  ...
<?php    
# نمایش    
if ( isset($_invoice_cart) ) { 
    
$_c 1;
    
$arrlength count($_invoice_cart);
    while ( 
$_c <= $arrlength ) {
        
$id $_invoice_cart[$_c]['id']; // خطی که دائما خطا به اون اشاره میکنه
        
$_row getFieldFromItemByWhere('*',"Where `Id`='$id'",1); ?>
...
</table>
<form action="" method="post">
        <div class="input-group form-group">
                 <span class="input-group-addon">انتخاب آیتم</span>
                 <select name='sltItemId'class="form-control" >
<?php        $_sql mysql_query("select * from `item` order by `Title`");
            while ( 
$_row mysql_fetch_array($_sql) ) { ?>
                               <option value='<?php echo $_row['Id'?>'><?php echo $_row['Title'?></option>
<?php        ?>
                 </select> 
         </div>
<?php    if ( isset($_invoice_cart) ) { ?>
                       <input type="hidden" name="cartArray" value="<?php echo htmlentities(serialize($_invoice_cart)); ?>" />
<?php    ?>
                <input type="hidden" name="add" value="<?php echo @$_i ?>" />
                          <button name="btnAdd" type="submit" class="btn btn-default">ایجاد</button>
</form> 
  پاسخ
تشکر شده توسط :
#2
سلام مجدد
یه سرچ از رو خطا زدم مشکلم حل شد ، مشکلش این بود که باید وقتی حذف میکردم باید اونو برابر با NULL قرار میدادم ...
کد پی‌اچ‌پی:
if ( isset($_POST['btnDelete']) ) {
    
$_invoice_cart unserialize($_POST['cartArray']);
    unset(
$_invoice_cart[$_POST['IdArray']]);
    
$_invoice_cart[$_POST['IdArray']] = NULL// خطی که مشکلم را حل کرد

  پاسخ
تشکر شده توسط :
#3
سلام مجدد
برای هنگام ویرایش ، خطای دیگه ای که میداد
کد:
unserialize() [<a href='function.unserialize'>function.unserialize</a>]: Error at offset ...

خط زیر مشکلم رو حل کرد
کد پی‌اچ‌پی:
$data preg_replace('!s:(\d+):"(.*?)";!e'"'s:'.strlen('$2').':\"$2\";'"$_POST['cartArray']); // محاسبه مجدد آرایه
$_invoice_cart unserialize($data); 
اما الان یه مشکلی پیش اومده برام آرایه اگه حروف فارسی داخلش باشه بصورت زیر نشون میده
کد:
array (size=2)
  1 =>
    array (size=5)
      'id' => string '2' (length=1)
      'qty' => string '1' (length=1)
      'text' => string 'Ã���Ã��� Ã��Ã�´Ã��Ã�³Ã���Ã��Ã�´Ã��Ã�³Ã���' (length=173)
      'discount' => string '' (length=0)
      'price' => string '0' (length=1)
  2 =>
    array (size=5)
      'id' => string '3' (length=1)
      'qty' => string '1' (length=1)
      'text' => string 'Ã���Ã���Ã���Ã��Ã�´ Ã��Ã�´Ã��Ã�³Ã���' (length=153)
      'discount' => string '' (length=0)
      'price' => string '0' (length=1)

خواهشمندم در این زمینه کمکم کنید...
  پاسخ
تشکر شده توسط :
#4
سلام مجدد
لطفا یکی منو تو این موضوع راهنمایی کنه Huh
  پاسخ
تشکر شده توسط :


پرش به انجمن:


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