2013-05-07 3 views
0

Я делал корзины покупок, прежде чем каждый элемент не имел каких-либо специальных атрибутов, таких как цвет или размер, но мой текущий проект имеет атрибут цвета. В прошлом я использовал переменные сеанса, названные в честь идентификатора продукта, для хранения количества. Как так:Справочная информация по корзине PHP - дополнительные опции

На включаемой страницу вверх в верхней части моей страницы продуктов:

/* initialize all quantities to 0 */ 
for ($i=0; $i <=$maxID; $i++) { 
    if (!isset($_SESSION['product'.$i])) 
    $_SESSION['product'.$i] = 0; 
} 

/* keeps a running total of the number of products to be purchased */ 
for ($j=0; $j<=$maxID; $j++) { 
    $cartCount += $_SESSION['product'.$j]; 
} 

и на странице продуктов у меня есть:

if (isset($_POST['addtocart'])) { 
    $_SESSION['product'.$id] += 1; 
    header ("Location: products.php?id=$id"); 
    } 

Затем на странице проверки я использовал для цикла, чтобы пройти через корзину по $ id.

Однако теперь я застреваю, потому что мне не только нужно экономить количество каждого продукта, но и цвет, при этом элемент # является тем же. Может ли кто-нибудь помочь мне преобразовать вышеприведенный код во что-то, что будет делать то же самое, с добавленной особенностью также отслеживания заказа цвета? Например, я могу купить один зеленый элемент №1 и один синий элемент №1. Они должны быть показаны отдельно, так как цвет отличается, хотя номер позиции тот же. Кроме того, нет окна количества, только кнопка «Добавить в корзину», поэтому, если вы хотите приобрести два одинаковых элемента, вам нужно дважды нажать «Добавить в корзину». Таким образом,

$_SESSION['product'.$id] += 1; 

вместо

$_SESSION['product'.$id] = $qty; 

Видимо, чтобы следить как цвет и количество, мне нужно использовать многомерный массив для хранения и другое, но я не могу понять, как инициализировать его или установить значения. Любая помощь будет принята с благодарностью. Извините, если я не очень хорошо объяснил свою проблему, я собираюсь около 17 часов без сна, пытаясь понять это!

ответ

0

Почему просто не изменить ключ продукта для Somethin как это:

$_SESSION['product'.$i.'_'.$color] += $colorQty; 

и т.д.

Для итерация использовать

foreach

foreach ($_SESSION as $key => $value) 
{ 
    //do something with $_SESSION[$key], which is product0_red, product0_green etc. 
} 
+0

Тогда это не было бы динамичным. Каждый элемент имеет разные цветовые решения. Я не обязательно уверен, что элемент $ i приходит в красный цвет, поэтому я не могу записать код «_red» там. –

+0

@JohnO вам не нужно жестко кодировать его, используйте значение из базы данных аналогично тому, как вы используете $ id. – Ryan

+0

$ id - число, поэтому я могу взаимодействовать через него с циклом for. Как выполнить итерацию через $ _SESSION ['product'. $ I. $ Color]? Если я использую свой обычный цикл, он не будет различать красный идентификатор 1 и зеленый идентификатор 1. –

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