Изначально у меня получилось нормально работать, попутно продукт 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 } ?>
Я думаю, что ваш $_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
Других решений пока нет …