2013-11-01 1 views
0

Я пытаюсь реализовать корзину покупок с помощью php и html. Проблема, с которой я столкнулась, заключается в сохранении идентификатора продукта, который будет храниться с помощью сеанса. Ниже приведен код, который у меня есть на данный момент:Добавление товара в корзину с помощью php и html

<?php 
session_start(); 
?> 
//There are three HTML Forms that take and display input, and output. 

<?php 
$_SESSION['cart'] = array(); 

if(isset($_GET['search'])){ 
    echo "<table border=1>"; 
    echo "<th>Product Image</th>"; 
    echo "<th>Product Name</th>"; 
    echo "<th>Price</th>"; 

    foreach($xml->categories->category->items->product as $product){ 
    $imageURL = $product->images->image[0]->sourceURL; 
    $id = $product['id']; 
    echo "<tr>"; 
    echo "<td><a href= 'buy.php?buy=".$id."'><img src=".$imageURL."></img></a></td>"; 
    echo "<td>".$product->name."</td>"; 
    echo "<td>".'$'.$product->minPrice."</td>"; 
    } 
} 

if(isset($_GET['buy'])){ 
    $product_id = $_GET['buy']; 
    if(isset($_SESSION['cart'])){ 
    array_push($_SESSION['cart'],$product_id); 
    } 
} 

print_r ($_SESSION); 
?> 

Что первое, если заявление делает то, что он получает слово для поиска, и получают самые близкие результаты. Затем он отображает изображение, имя и цену. Когда вы нажимаете на изображение, есть href, и его предполагается добавить в корзину. Вот где вступает в игру второе заявление. Если изображение было нажато, я хочу получить идентификатор и сохранить его в сеансе. Он сохраняет идентификатор продукта при нажатии, но когда я возвращаюсь, чтобы добавить другой элемент, предыдущий идентификатор заменяется новым идентификатором. Может ли кто-нибудь объяснить мне, где я ошибся? Любая помощь будет принята с благодарностью.

+0

Перед тем, как назначить пустой массив, проверьте корзину сеанса. Проверьте мой код ниже. Это решение работает для вас? – kidz

ответ

2

Ваша проблема в этой строке: $ _SESSION [ 'телега'] = массив();

проверить так:

if(empty($_SESSION['cart'])) 
    $_SESSION['cart'] = array(); 

Это должно решить его

+0

Большое спасибо, поскольку вы заявили, что моя проблема решена. – user2659117

1

Сначала вы должны назначить массив для вашего $ _SESSION ['cart']. В противном случае он сохранит только одно значение.

$ids = array(); 

$_SESSION['cart'] = $ids; 

Тогда это сработает.

+0

Я попытался сделать это, но первое значение по-прежнему заменяется значениями после него. – user2659117

+0

Можете ли вы обновить вопрос своим последним кодом? – Dilantha

+0

Я обновил код. – user2659117

1

Вы должны использовать массив для хранения нескольких значений:

$shop_array= array(); // this is create the array with the name shop_array 
// now create the session and assign the shop_array to creating session 
$_session['mycart'] = $shop_array; 

Вы можете проверить сохраненные значения с помощью функции print_r():

print_r($_session['mycart']); 

Вы получите результирующий набор сохраненных идентификаторов.

+0

Спасибо за предложение, но я уже знал об этом. Вот почему я знаю, что элементы массива заменяются. Это было одно и то же предложение кого-то другого и, похоже, не работает для меня. – user2659117

0

Можете ли вы попробовать это,

  if(isset($_GET['buy'])){ 
       $product_id = $_GET['buy'];  
        if(!in_array($product_id, $_SESSION['cart'])){ 
         $_SESSION['cart'][]=$product_id; 
        }    
      } 
+0

Спасибо за ответ, однако он все равно заменяет старое значение новым значением, а не накапливает их. – user2659117

0

вы должны опции магазина корзины - сессии и печенье я лично предпочитаю сессию попробовать этот код для хранения телеги сессий

if(isset($_POST['item_src'])) 
{ 
    $_SESSION['name'][]=$_POST['item_name']; 
    $_SESSION['price'][]=$_POST['item_price']; 
    $_SESSION['src'][]=$_POST['item_src']; 
    echo count($_SESSION['name']); 
    exit(); 
} 

полный учебник для создания в корзине системы http://talkerscode.com/webtricks/simple-add-to-cart-system-using-jquery-ajax-and-php.php

Смежные вопросы