PDA

View Full Version : سوال: ارایه ها



kafco00
جمعه 10 آبان 1392, 09:35 صبح
سلام خدمت دوستان

بنده دارم یک سیستم فروشگاهی می نویسم که یک جا به مشکل بر خوردم
به طور کلی بنده دارم وقتی اضافه به سبد خرید رو که می زنم مشخصات محصول وارد یک ارایه شود و در session ذخیره شود.
حال اگر کاربر چند انتخاب داشت می باید در هر بار که محصول در ارایه ذخیره می شود ان ارایه درون یک ارایه چند بعدی ذخیره شود. کد زیر را نوشتم
$arr=array('id'=>$id,'name'=>$name,'price'=>$price,'img_path'=>$img,'count'=>1);
مشخصات ذخیره می شود سپس درون یک ارایه چند بعدی ذخیره می کنم اینگونه :
$arr2[]=$arr;
بعد همان ارایه چند بعدی را می خواهم در یک session ذخیره کنم اینگونه
$_SESSION['order']=$arr2[];
ولی خطای زیر را می دهد
Fatal error: Cannot use [] for reading in
من کجا را اشتباه کردم ؟ ممنون می شوم اشتباه بنده رو بگید و راه حلش رو هم بنویسید
سپاس گذارم

SA_Developer
جمعه 10 آبان 1392, 10:40 صبح
سلام
برای ذخیره آرایه باید به این شکل عمل کنید:


$_SESSION['order']=$arr2;

موفق باشید

kafco00
شنبه 11 آبان 1392, 15:31 عصر
سلام

مشکلی دیگر برام ایجاد شده است.
همان طور که می دانید کاربر با هر بار زدن باید مقدار هر محصول در session ثبت شود.
ولی برای بنده آخرین محصولی که اضافه شدن به سبد کردن روش کلیک شد ثبت می شود.
لطفن راهنمایی فرمایید که چگونه اگر روی مثلن 5 تا اضافه کردن به محصول از 5 محصول مختلف کلیک شد اطلاعات هر 5 تا در ارایه و در session ذخیره بماند؟
کدی که بنده نوشتم :
$arr=array('id'=>$id,'name'=>$name,'cat'=>$cat,'price'=>$price,'img_path'=>$img,'count'=>1);
$arr2[]=$arr;
$_SESSION['order']=$arr2;

سپاس

AliRezaPro
شنبه 11 آبان 1392, 16:03 عصر
خوب همانند کدهای خودتان آرایه های درست شده ی جدید را به قبلی اضافه کنید و سشن بریزید . برای اضافه کردن هم میتوانید از + اضافه کنید و هم array_push و هم دقیقا همانند کد بالا

kafco00
شنبه 11 آبان 1392, 21:19 عصر
سلام

راستش من متوجه شدم که منظورتون چیه.
ولی نحوه نوشتن کد را نمی دونم. چجوری که هر بار مقادیر جدید در ارایه $arr2 بماند.
من می نویستم
$arr2.=$arr
ولی خطا می ده که این متغیر تعریف شده نیست.!
ممنون می شوم راهنمایی ام کنید.

AliRezaPro
شنبه 11 آبان 1392, 21:42 عصر
شما با این کد مشکلتون حل نمیشه ؟

$arr[0]=array('id'=>'12','name'=>'34d','cat'=>'45','price'=>'65','7d6'=>'bfgb','count'=>1);
$arr[1]=array('id'=>'12ff','name'=>'34d','cat'=>'45','price'=>'65','7d6'=>'bfgb','count'=>1);


echo $arr[1]['id'];

دز هز لحظه میتوتید آخرین اندیس رو بدست بیاردید و یکی به آن اضافه کنید و در سشن قرار بدید :

$key = end(array_keys($arr));
در آخر بدیت صورت استفاده کنید و در سشن قرار بدید

$arr[0]=array('id'=>'12','name'=>'34d','cat'=>'45','price'=>'65','7d6'=>'bfgb','count'=>1);
$arr[1]=array('id'=>'12ff','name'=>'34d','cat'=>'45','price'=>'65','7d6'=>'bfgb','count'=>1);
$arr[2]=array('id'=>'dsdsd','name'=>'34d','cat'=>'45','price'=>'65','7d6'=>'bfgb','count'=>1);


$key = @end(array_keys($arr));
$arr[$key+1] = array('id'=>'dddd','name'=>'34d','cat'=>'45','price'=>'65','7d6'=>'bfgb','count'=>1);
var_dump($arr);

kafco00
شنبه 11 آبان 1392, 22:16 عصر
سلام

شما کد رو دو بار نوشتید! نمی دونم منظور خاصی داشتید یا اشتباهی شده. به هر حال خیر برای من کار نمی کنه. یعنی اخرین محصولی که اضافه شد فقط در سشن باقی می ماند. ولی می باید تمام محصولاتی که کلیک شد باقی بماند
کل کد من برای ذخیره اینه :


session_start();
require('connection.php');
$id=$_GET['id'];
$result=$conn->query("select * from product where id='$id'");
if($rows=$result->fetch_array()){
$id=$rows['id'];
$name=$rows['name'];
$price=$rows['price'];
$img=$rows['img_path'];
$cat=$rows['product_id'];
$arr=array('id'=>$id,'name'=>$name,'cat'=>$cat,'price'=>$price,'img_path'=>$img,'count'=>1);
$arr2[]=$arr;
$_SESSION['order']=$arr2;
header("location: index.php");
}
?>
در نحوه نگه داشتن اطلاعات مشکل دارم!

AliRezaPro
شنبه 11 آبان 1392, 23:30 عصر
پست قبلی بنده رو ببینید