сессионная корзина

Изначально у меня получилось нормально работать, попутно продукт id через array_push() функция, идущая от addtocart.php в Shoppingcart.php отображение предметов. Но когда я добавляю больше переменных / в array_push() функция, кроме того, что один продукт id $_GET['id']… на следующей странице, которая получает этот массив, выдает ошибку.

Проблема в:
В оригинале $sql запрос он получал id он должен отображать информацию о продуктах из array_push() и отобразить его на Shoppingcart.php, но когда я добавляю больше переменных / информации в push_array() Я получаю ошибку. Потому что это смущает $sql запрос, из-за WHERE id IN пункт … ID все еще там, сейчас вместе с другой информацией ($_GET['size'] & $_GET['qty']), Я просто не знаю, как получить к нему доступ …

Как я могу добавить больше информации в массив push, но некоторые, как определить его, чтобы я мог получить id для меня $sql запрос, чтобы получить информацию о продукте, но также иметь доступ к size & Qty для меня while() петля.

addtocart.php

array_push($_SESSION['cart'], $_GET['id']); //working MAIN
header('Location:shoppingCart.php');

How 2: array_push($_SESSION['cart'], $_GET['id'], $_GET['size'],  $_GET['qty']);
//Not Working

shoppingcart.php

    <?php
$whereIn = implode(',', $_SESSION['cart']); //working MAIN
$sql = " SELECT * FROM inventory WHERE id IN ($whereIn) "; ?>

<?php while($row = mysql_fetch_array($result)) { ?>

<td  valign="top">
<div id="sc_itemBox">
<p class="sc_itemBox_iTEXT"><strong>SIZE:</strong> “”XL?? <em>(Extra Large??)</em></p>
<div id="sc_itemBox_img"><img src="<?php echo $row['imgThumb'];?>" /></div>
<p class=<p class="sc_itemBox_iTEXT"><strong>STYLE#</strong><?php echo $row['styleNUM']; ?> </p>
</div>
</td>
<?php } ?>

0

Решение

Я думаю, что ваш $_SESSION['cart'] немного сложнее может сделать свое дело. Попробуйте выделить id и такие в свой собственный массив (ы). Может быть что-то вроде

addtocart.php

if(isset($_SESSION['cart'])) {
// Store just ids
// Use array_unique to filter this array
$_SESSION['cart']['id'] = array_unique($_SESSION['cart']['id']);
// Save new cart array with that items basics
$_SESSION['cart'][$_GET['id']]['size'][] = $_GET['size'];
$_SESSION['cart'][$_GET['id']]['qty'][]  = $_GET['qty'];
header('Location:shoppingCart.php');
exit;
}

shoppingcart.php

// Implode just the id array, no other array in the cart session
// (make sure your addtocart checks for is_numeric so you don't get someone
// injecting sql junk into your db
$whereIn    =    implode(',', $_SESSION['cart']['id']);
$sql        =    "SELECT * FROM inventory WHERE id IN ($whereIn)";

РЕДАКТИРОВАТЬ: Вот способ сделать это, чтобы разбить ваши элементы на размеры (например, если вы добавляете несколько элементов с одинаковым идентификатором, но с разными размерами и количеством:

    function AddToCart()
{
// Confirm that an id is being added
// I am assuming there is an "add" trigger
if(isset($_GET['add']) && is_numeric($_GET['id'])) {
// Create the item in the cart
// Record size
if(isset($_SESSION['cart'][$_GET['id']]['size'][$_GET['size']]['qty']))
// Notice here that if there is already this item in the cart
// with the exact same size, it will sum
$_SESSION['cart'][$_GET['id']]['size'][$_GET['size']]['qty']    +=  $_GET['qty'];
else
// If not in cart at this size, it will add qty
$_SESSION['cart'][$_GET['id']]['size'][$_GET['size']]['qty']    =   $_GET['qty'];
}
}

// Fetch ids for your query
function FetchItems()
{
if(isset($_SESSION['cart'])) {
foreach($_SESSION['cart'] as $itemcode => $array) {
$items[]    =   $itemcode;
}

return (isset($items))? $items:false;
}
}

// Start the session
session_start();

// Add to cart
AddToCart();
// This will fetch your ids for your query
$mysqlIds   =   implode(",",FetchItems());

echo '<pre>';
print_r($mysqlIds);
echo '</pre>'; ?>

<!-- These are just for testing. Will generate different sizes and qty-->
<a href="?add=true&id=1&size=<?php echo rand(1,12); ?>&qty=<?php echo rand(0,5); ?>">ID 1</a>
<a href="?add=true&id=2&size=<?php echo rand(1,12); ?>&qty=<?php echo rand(0,5); ?>">ID 2</a>
<a href="?add=true&id=3&size=<?php echo rand(1,12); ?>&qty=<?php echo rand(0,5); ?>">ID 3</a>

ДАМ ТЕБЕ:

// Session array after adding items to it.
Array
(
[cart] => Array
(
[2] => Array
(
[size] => Array
(
[21] => Array
(
[qty] => 1
)

[9] => Array
(
[qty] => 2
)

[8] => Array
(
[qty] => 0
)

[7] => Array
(
[qty] => 20
)

[2] => Array
(
[qty] => 5
)

)

)

[3] => Array
(
[size] => Array
(
[9] => Array
(
[qty] => 3
)

[1] => Array
(
[qty] => 0
)

[7] => Array
(
[qty] => 4
)

[10] => Array
(
[qty] => 6
)

[3] => Array
(
[qty] => 20
)

[2] => Array
(
[qty] => 10
)

[12] => Array
(
[qty] => 2
)

[6] => Array
(
[qty] => 10
)

)

)

[1] => Array
(
[size] => Array
(
[11] => Array
(
[qty] => 1
)

[3] => Array
(
[qty] => 3
)

[2] => Array
(
[qty] => 2
)

)

)

)

)

// This is for the ids for your mysql query
2,3,1
1

Другие решения

Других решений пока нет …