2015-05-02 4 views
0

Я пытаюсь сделать корзину покупок в php, используя сеансы. У меня возникли проблемы с этим, когда вы добавляете в корзину больше одного товара, чтобы отобразить ВСЕ предметы, которые добавлены в корзину. На данный момент у меня есть так, что только одна вещь может быть в корзине покупок, и когда вы покидаете страницу или добавляете другой элемент, последний элемент перезаписывается. Я знаю, что должен добавить сеанс вроде $ _SESSION ['cart'] и сохранить информацию там, когда он будет распечатан, но я не уверен, как это сделать. Любая помощь будет оценена по достоинству.easy PHP корзина

$prodid=$_GET['pid']; 
$quan=$_GET['quantity']; 

$query="select * from Products where ProductID = '$prodid'"; 
$result=mysql_query($query); 
$numOfRows=mysql_numrows($result); 

for($i=0;$i<$numOfRows;$i++) 
{ 
    $productID=mysql_result($result, $i, "ProductID"); 
    $prodTitle=mysql_result($result, $i, "Title"); 
    $prodAuthor=mysql_result($result, $i, "Author1"); 
    $prodPrice=mysql_result($result, $i, "Price"); 

    Print"<h4>ID: $productID \n  </h4>"; 
    Print"<h4>Title: $prodTitle \n  </h4>"; 
    Print"<h4>Author: $prodAuthor \n </h4>"; 
    Print"<h4>Price: $ $prodPrice \n </h4>"; 
} 

EDIT:

$prodid=$_GET['pid']; 
    $quan=$_GET['quantity']; 
Print"$prodid"; 
Print"<br/>"; 
Print"$quan"; 

$query="select * from Products where ProductID = '$prodid'"; 
$result=mysql_query($query); 
$numOfRows=mysql_numrows($result); 

for($i=0;$i<$numOfRows;$i++) 
{ 
    $productID=mysql_result($result, $i, "ProductID"); 
    $prodTitle=mysql_result($result, $i, "Title"); 

    $prodPrice=mysql_result($result, $i, "Price"); 

} 

$arr = array(
['id'] => "$productID", 
['title'] => "$prodTitle", 
['count'] => "$quan", 
['price'] => "$prodPrice" 
); 
echo "id is " . $arr['id']; 

ответ

1

Можно просто сформировать массив необходимых деталей элементов в нем:

$arr = array(
    ['id'] => 123 
    ['title'] => 'some title' 
    ['count'] => 1 
    ['price'] => 9.99 
); 

Вы затем сохранить этот массив $_SESSION с

$_SESSION['cart'] = $arr; 

Когда вы е готов добавить еще один пункт в корзину, создать другой массив с теми же ключами, как $arr - $newArr - и добавить этот массив в переменной сеанса:

$_SESSION['cart'][] = $newArr; 

Теперь, когда вы будете готовы, чтобы прочитать все пункты в корзине, у вас есть ассоциативный массив для чтения из:

for($x = 0; $x < count($_SESSION['cart']); $x++) { 
    echo $_SESSION['cart'][$x]['title']; 
} 
+0

Хорошо, спасибо. Однако, как будет знать код, когда нужно добавить другой товар в корзину? – jskozerino

+0

Если вы хотите добавить товар в корзину, вы можете передать идентификатор элемента с помощью параметра $ _GET, затем проверить идентификатор и, наконец, получить другие данные из базы данных и добавить их в корзину с помощью метода выше. – Adviov

+0

Я обновил свой код в вопросе. Есть ли в любом случае что-то из базы данных в массив? Потому что по какой-то причине массив ничего не читает. – jskozerino

0

Один из лучших способов для корзины является использование таблицы базы данных. 1) просто создать таблицу корзинку (идентификатор, гостевой идентификатор, продукт-идентификатор, дату) 2) порождает гостевой идентификатор и назначить сессию один раз гость щелкнул добавить в корзину

пример:

if(isset($_GET['adtocart'])){ 
if(!isset($_SESSION['guest'])){ 
    $ipaddress = $_SERVER['REMOTE_ADDR']; 
    $id = uniqid(rand()); 
    $addnewguest = mysql_query("insert into guest values('$id', '$ipaddress', sysdate())"); 
    if($addnewguest) 
     $_SESSION['guest'] = $id; 
    else 
    header('location: ../en/systemnotify.php?case=002'); 
} 

$cartid = uniqid(rand()); 
$guestid = $_SESSION['guest']; 
$productid = $_GET['adtocart']; 

$getproduct = mysql_fetch_array(mysql_query("select * from product where id = '$productid'")); 
$url = $getproduct['url']; 
$title = mysql_real_escape_string($getproduct['title']); 
$price = $getproduct['price']; 
$image = $getproduct['image']; 
$info = mysql_real_escape_string($getproduct['info']); 
$cartid = uniqid(rand()); 
$addtocart = mysql_query("insert into cart values('$cartid', '$guestid', '$productid', '$url', '$title', '$price', '$image', '$info', sysdate()) "); 
if($addtocart){ 
    header('location: '.$_SERVER['HTTP_REFERER'].$gpath.'added'); 
} 
else 
print mysql_error(); 

}