سبد خرید(کمک)

Allahparast

Member
سلام
من چطوری می تونم با اضافه کردن کالا ، این کالا به سبد خرید اضافه بشه
من یه چیزی نوشتم ولی خیلی کارم قاطی میشه هربار یه آرایه بسازم و فراچ کنم بعد سشن بسازم
PHP:
echo"<form method='POST'><p><input type='submit' value='buy' name='kala1'></p></form>";
if(isset($_POST['kala1'])){
    $kal=array(1=>"os");
    foreach($kal as $num => $name){
    $_SESSION['$num']=$name;
    }
}
echo "<table border='1' width='201' height='127'>
    <tr>
        <td height='30' width='201'>sabad kharid</td>
    </tr>
    <tr>
        <td height='87' width='201'>$num-$name</td>
    </tr>
</table>";

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

Webber

Well-Known Member
سلام
دقیقا وارد این مسئله نشدم ولی احتمالا می تونید هر کالا رو به پایگاه داده اضافه کنید.یعنی برای هر کاربر یک سبد خرید در دیتابیس بسازید و اینها.
 

Sub.Zero

Member
درود بر شما

میتونین از Session یا Cookie استفاده کنید
برای نمونه هم مثال کتاب آقای قمی رو براتون گذاشتم
 

پیوست ها

  • ch14.zip
    126.4 کیلوبایت · بازدیدها: 40

Allahparast

Member
سلام
دقیقا وارد این مسئله نشدم ولی احتمالا می تونید هر کالا رو به پایگاه داده اضافه کنید.یعنی برای هر کاربر یک سبد خرید در دیتابیس بسازید و اینها.
اینم نمیشه آخه می خوام تو فروشگاه حداقل بهینه سازی رو بکنم
:rose: بازم ممنون
 

Allahparast

Member
درود بر شما

میتونین از Session یا Cookie استفاده کنید
برای نمونه هم مثال کتاب آقای قمی رو براتون گذاشتم
سلام ممنون من کتابش رو دارم ممنون دنبال سورسش هم بودم فقط من هرچی به کد نگاه می کنم سر در نمیارم کسی می تونه تجزیه کنه و به مثال ساده در بیاره
PHP:
<?php
  include ('book_sc_fns.php');
  // The shopping cart needs sessions, so start one
  session_start();

  @ $new = $_GET['new'];//0584567

  if($new)
  {
    //new item selected
    if(!isset($_SESSION['cart']))
    {
      $_SESSION['cart'] = array();
      $_SESSION['items'] = 0;
      $_SESSION['total_price'] ='0.00';
    }
    if(isset($_SESSION['cart'][$new]))
      $_SESSION['cart'][$new]++;
    else 
      $_SESSION['cart'][$new] = 1;
    $_SESSION['total_price'] =       
    calculate_price($_SESSION['cart']);
    $_SESSION['items'] = calculate_items($_SESSION['cart']);

  }
  if(isset($_POST['save']))
  {   
    foreach ($_SESSION['cart'] as $isbn => $qty)
    {
      if($_POST[$isbn]=='0')
        unset($_SESSION['cart'][$isbn]);
      else 
        $_SESSION['cart'][$isbn] = $_POST[$isbn];
    }
    $_SESSION['total_price'] = 
    calculate_price($_SESSION['cart']);
    $_SESSION['items'] = calculate_items($_SESSION['cart']);
  }

  do_html_header('Your shopping cart');

  if(@$_SESSION['cart']&& array_count_values(@$_SESSION['cart']))
   {
     echo "OK";
    
    display_cart($_SESSION['cart']);
    }
  else
  {
    echo '<p>There are no items in your cart</p>';
    echo '<hr />';
  }


  $target = 'index.php';

  // if we have just added an item to the cart, continue shopping in that category
  if($new)
  {
    $details =  get_book_details($new);
    if($details['catid'])    
      $target = 'show_cat.php?catid='.$details['catid']; 
  }


   display_button($target, 'continue-shopping', 'Continue Shopping');




//  display_button($target, 'continue-shopping', 'Continue Shopping');  

  // use this if SSL is set up
  // $path = $HTTP_SERVER_VARS['PHP_SELF'];
  // $server = $HTTP_SERVER_VARS['SERVER_NAME'];
  // $path = str_replace('show_cart.php', '', $path);
  // display_button('https://'.$server.$path.'checkout.php', 
  //                  'go-to-checkout', 'Go To Checkout');  

  // if no SSL use below code
  display_button('checkout.php', 'go-to-checkout', 'Go To Checkout');  

  
  do_html_footer();

?>
تو کتاب اینو براش نوشته و توضیح هم نداده
قابلیت سبد خرید ، با متغییر تماس کارت انجام می شود. کارت یک آرایه انجمنی است که کلید آن آی اس بی ان کتاب است که تعداد آن به عنوان مقدار این کلید است ، به عنوان مثال ، اگر کتابی با شماره 0672317842 و با تعداد یک در آرایه باشد داریم:
1<=0672317842
وقتی کتابها را به سبد خرید اضافه می کنیم به آرایه اضافه می شوند. وقتی سبد را می بینیم، با استفاده از آرایه کارت جزئیات کامل کتاب را در بانک اطلاعلای میابیم. با استفاده از دو متغیر تماس دیگربه نامهای آیتمز و توتال _ پریس به ترتیب تعداد کل کتابها و قیمت کل سبد خرید نمایش میدهیم
ممنون میشم تجزیه کنید و به مثال کوچیک تبدیلش کنید:rose:
 
آخرین ویرایش:

madisline

Member
به نظر من اگه از بانک اطلاعاتی استفاده کنی بهتره. هیچ ارتباطی هم به قضیه بهینه سازی نداره چون در هر دو حالت اطلاعات باید از روی یک فایل خونده بشه با این تفاوت که در جلسه برای هر کاربر یک فایل ساخته میشه. از از لحاظ امنیتی هم که اصلا قابل قیاس با بانک اطلاعاتی نیست. الان در سایت های بزرگ هم جلسه ها رو در پایگاه ثبت میکنند.
 

Sub.Zero

Member
درود بر شما
استفاده از بانک اطلاعاتی توصیه نمیشه !
بعدا مشکل ساز میشه
موفق باشید
 

madisline

Member
میشه بگید یعنی چی که مشکل ساز میشه؟ چه مشکلاتی مثلا بوجود میاد؟
 

Sub.Zero

Member
میشه بگید یعنی چی که مشکل ساز میشه؟ چه مشکلاتی مثلا بوجود میاد؟

مشکل اینه که فشار به سرور زیاد میاد !
شما هی باید کوئری بگیرید و افزایش دیتابیس !!!
و ...
 

madisline

Member
فکر نکنم تفاوتی بین خوندن اطلاعات از یک دیتابیس با مثلا یک فایل جلسه وجود داشته باشه چه بسا که خوندن از دیتابین به خاطر ساختار بهینه شده ی سریعتر هم باشه. در ضمن نیازی به چندین کوئری نیست چون اگر طراح کمی ذوق و سلیقه داشته باشه و همچنین دیتابیس رو به خوبی طراحی کرده باشه اکثر کارها را میتوان با یک کوئری یا نهایتا دو کوئری انجام داد. درضمن شما مسئله امنیتی رو هم در نظر بگیرید که مسلما امنیت دیتابیس خیلی بیشتر از جلسه است به خصوص اینکه نیاز باشه با اطلاعاتی کار کنیم که برای کاربر مهم و حیاتی میباشد.
 

Sub.Zero

Member
ولی من فرقشونو احساس کردم !
بیشترین فشار رو سرور رو دیتابیس میاره !
اگه کار بلد باشی فک نکنم با جلسه به مشکل امنیتی برخورد کنی ! درضمن چیز زیادی تو جلسه ذخیره نمیکنی ! نام جنس ! تعداد ! قیمت هر عدد !
اگه جلسه مشکل امنیتی داره چرا برای ورود خروج ازش استفاده می کنین ؟
 

MDP

Well-Known Member
نمی دونم خبر دارید یا نه ولی این بحث سبد خرید یکی از بزرگترین مشکل های برنامه نویس های وب هست.
در مورد همین سبد خرید و روش های ذخیره اطلاعاتش صد ها کتاب نوشته شده.
برای هر زبانی یه راهکاری وجود داره.
ساده ترین روش برای کلیه زبان ها همون جلسات هستند.
در دات نت هم بهترین روش استفاده از کش برای این مسئاله هست.

موفق باشید.
.:مسعود
:rose:
 

جدیدترین ارسال ها

بالا