رفتن به مطلب

مشکل با foreach


پست های پیشنهاد شده

مشکل این کد چیه:


$MerchantID = '1';
if($MerchantID = '1'){
$trak = $result['RefID'];
$T = array();
$date = time();
$next_d = array('one'=>60*60*24*30,'tree'=>60*60*24*90,'six'=>60*60*24*180,'tw'=>60*60*24*320);
foreach($basteha as $t=>$vl){
if($t !== 'amount' && $n = $this->network->get_vips_by_name($t)){
$sarresid = $next_d[$vl->vipprd]+$date;
$db2->query('INSERT INTO users_vip SET
user_id="'.$vl->vipuser.'",
vip_id="'.$n->id.'",
vip_name="'.$n->name.'",
vip_p="'.$vl->vipprd.'",
date="'.$date.'",
next_date= "'.$sarresid.'" ,
rkey="'.$vl->viprand.'",
trak="'.$trak.'",
amount="'.$vl->vipamount.'"
');
$this->network->get_user_vip_by_id($n->id,$vl->vipuser,true);

}

}
}

این خطا رو میده:


warning:: Invalid argument supplied for foreach()

کد رو توی دیتابایس ذخیره میکنه ولی وقتی ذخیره شد توی صفحه سفید خطای بالا رومیده

ویرایش شده توسط kingblog
لینک به ارسال

سلام. $basteha توی این کدی که گذاشتید اصلا نیستش. مشکل هم احتمالا اینه که توی حالت خاصی چیزی که باید توی متغییرتون قرار میگرفته ، نگرفته و باعث شده که متغییر بسته ها آرایه نباشه.

موفق باشید.

لینک به ارسال

این کل کد هست:


<?php

if( !$this->network->id ) {
$this->redirect('home');
}
if( !$this->user->is_logged ) {
$this->redirect('signin');
}
$D->submit = true;
$D->error = true;
$D->errmsg = "";
$this->load_langfile('inside/global.php');
$this->load_langfile('inside/settings.php');

$D->page_title = $this->lang('settings_profile_pagetitle', array('#SITE_TITLE#'=>$C->SITE_TITLE));

include_once('helpers/lib/nusoap.php');
$D->doreha = array('one'=>'یک ماهه','tree'=>'سه ماهه','six'=>'شش ماهه','tw'=>'یک ساله');
$D->boxes = $this->network->get_box_vips();

if($this->param('from') == "ajax" && isset($_POST['id']) && isset($_POST['priud']) ){
$vid= intval($_POST['id']);
$prd = trim($_POST['priud']);
if($this->network->get_user_vip_by_id($vid,$this->user->id)){
echo 'ERROR"';echo 'قبلا خریداری شده است';
return;
}
if(!$baste = $this->network->get_vips_by_id($vid)){
echo 'ERROR:';
echo 'چنین بسته ای مجود نیست';
return;
}
$sabad = new stdClass;

$sabad->vipname = $baste->name;
$sabad->vipid = $baste->id;
$sabad->vipprd = $prd;
$sabad->vipamount = $baste->$prd;
$sabad->vipuser =$this->user->id;
$sabad->viprand = md5(time().rand(0,100000).$this->user->info->username.$baste->name);
$sabad->viptrak= '';
$sabad->vipdate= time();
$this->user->sess['VIP_SABAD'][$baste->name] = $sabad;

echo $baste->title.' به سبد خرید اضافه شد';
return;
}
if($this->param('from') == "ajax" && isset($_POST['name']) && $this->param('delsabad') == $_POST['name'] ){
$this->user->sess['VIP_SABAD'][$_POST['name']] = false;
unset($this->user->sess['VIP_SABAD'][$_POST['name']]);
echo 'OK';
return;
}
if($this->param('from') == "pay" && isset($_GET['rand']) ){
if(empty($this->user->sess['VIP_SABAD'])){
$D->error = true;
$D->errmsg .= 'سبد خرید شما خالیست';

$this->load_template('settings_vip.php');
return;
}
$D->bv = $this->user->sess['VIP_SABAD'];
$this->load_template('settings_vip-pay.php');
return;
}
if( isset($_POST['pay_vip_last']) && $_POST['rand2'] == $this->param('from') ){
if(empty($this->user->sess['VIP_SABAD'])){
$D->error = true;
$D->errmsg .= 'سبد خرید شما خالیست';

$this->load_template('settings_vip.php');
return;
}
$Amount = intval($_POST['amount']);
$Description = 'خرید بسته ویژه'; // Required
$Email = $this->user->info->email; // Optional
$Mobile =''; // Optional
$CallbackURL = $C->SITE_URL.'settings/vip';
$this->user->sess['VIP_USER_RES'] = $result['Authority'];
$this->user->sess['VIP_SABAD']['amount'] = intval($_POST['amount']);
$this->user->sess[$result['Authority']] = $this->user->sess['VIP_SABAD'];
}
$basteha = $this->user->sess[$_GET['au']];
$Authority = $this->user->sess['VIP_USER_RES'];
$au =$Authority;
$basteha = $this->user->sess[$au];
$Amount = $amount = $basteha['amount'];
$pri = $basteha['pri'];
$trak = '';//$_GET['refID'];
$trak = $result['RefID'];
$T = array();
$date = time();
$next_d = array('one'=>60*60*24*30,'tree'=>60*60*24*90,'six'=>60*60*24*180,'tw'=>60*60*24*320);
foreach($basteha as $t=>$vl){
if($t !== 'amount' && $n = $this->network->get_vips_by_name($t)){
$sarresid = $next_d[$vl->vipprd]+$date;
$db2->query('INSERT INTO users_vip SET
user_id="'.$vl->vipuser.'",
vip_id="'.$n->id.'",
vip_name="'.$n->name.'",
vip_p="'.$vl->vipprd.'",
date="'.$date.'",
next_date= "'.$sarresid.'" ,
rkey="'.$vl->viprand.'",
trak="'.$trak.'",
amount="'.$vl->vipamount.'"
');
$this->network->get_user_vip_by_id($n->id,$vl->vipuser,true);
}
}
unset($this->user->sess['VIP_USER_RES']);
unset($this->user->sess[$_GET['au']]);
unset($this->user->sess['VIP_SABAD']);
$this->load_template('settings_vip.php');

?>

الان کد زیر رو از آخر کدها حذف کردم درست شد:


$this->load_template('settings_vip.php');

ولی پیغام زیر بالای صفحه نشون داده میشه:


Warning: Invalid argument supplied for foreach()

لینک به ارسال

متغییر $basteha مقادیر درستی نداره و یا شاید خالی هست

لینک به ارسال

کد رو اینجوری تغییر دادم درست شد:


if (is_array($basteha)) {
foreach ($basteha as $t=>$vl) {
//do something
}
}

درسته؟ مشکلی که اینجوری نداره؟

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...