Обновление переменной сеанса для корзины покупок - PullRequest
1 голос
/ 27 июня 2011

Я новичок в php (играю с ним всего пару месяцев), и я создаю другу действительно простой веб-сайт электронной коммерции, для которого я создаю столь же простую корзину для покупок.

Вот основная идея корзины: в настоящее время пользователь просматривает страницу продуктов (на основе productID), выбирает цвет для элемента (который выбирает ProdOptID, который уникален для каждого отдельного элемента), а затем отправляет информация в $ _SESSION ['Cart'] посредством публикации через форму. Затем эта информация используется для доступа к базе данных mysql для извлечения всей остальной информации о продукте, которая затем отображается в мини-корзине. До этого момента все работало нормально. Только когда я пытаюсь создать страницу рецензирования / редактирования, где меня спотыкают. По какой-то причине я могу обновить только последний. У кого-нибудь есть идеи или есть проблемы?

Код для просмотра / редактирования страницы:

<div class="ReviewCheckout_Main">
<h1 class="ReviewCheckout_Title">Review Your Cart</h1>
<div class="ReviewCheckout_Form">
    <form action="/BeautifulUrns/includes/ReviewCheckout_Processing.php" method="post">
        <?php
            if (isset($_SESSION['Cart'])) {
                foreach ($_SESSION['Cart'] as $ID => $QTY){
                    $Query = "SELECT *
                        FROM ProductsOptions
                        LEFT OUTER JOIN Products
                        ON ProductsOptions.ProductID=Products.ProductID
                        WHERE ProdOptID = $ID";
                    $Result = mysql_query($Query, $Connection);
                    $Row = mysql_fetch_array($Result);

                    echo "<input type='text' name='Edit_Qty' value=" . $QTY . " />";
                    echo "<b>" . $Row['ProductName'] . "</b> ";
                    echo "<b> - " . $Row['POName'] . "</b> ";
                    echo "<input type='hidden' name='Edit_ID' value='{$Row['ProductID']}' />";
                    echo "<input type='hidden' name='Edit_ProdOptID' value='{$Row['ProdOptID']}' />";
                    echo "<br />";
                }
            }
        ?>

        <input type="submit" />
    </form>
    <a href="/BeautifulUrns/index.php">Return Home</a>
</div>    

Код для страницы обработки:

<?php session_start();
$ID = mysql_real_escape_string((int)$_POST['Edit_ProdOptID']); // GRABS PRODOPT ID
$PRODUCTID = mysql_real_escape_string((int)$_POST['Edit_ID']);  //GRABS PRODUCT ID
$QTY = mysql_real_escape_string((int)$_POST['Edit_Qty']); // GRABS QUANTITY            

if(isset($ID)) {
   if (isset($QTY) && $QTY > 0){
    if (isset($_SESSION['Cart'])) {
        $_SESSION['Cart'][$ID] = $QTY;
    }
    else {
        $_SESSION['Cart'] = NULL;
        $_SESSION['Cart'][$ID] = $QTY;
        }
    }
}
?>

Ответы [ 2 ]

1 голос
/ 27 июня 2011

Кажется, что все ваши входные html-имена абсолютно одинаковы, поэтому последнее переопределяет предыдущие.Что вы должны сделать, это добавить идентификатор к имени ввода, например,

echo "<input type='hidden' name='Edit_ID_{$Row['ProductID']}' value='{$Row['ProductID']}' />"

Затем вы должны использовать переменные переменные для извлечения ваших данных из каждого поля ввода.http://php.net/manual/en/language.variables.variable.php

0 голосов
/ 27 июня 2011

Вы можете создать временную таблицу для хранения выбранных пользователем предметов, а когда заказ будет завершен, вы можете загрузить все записи в свой запрос или таблицу заказов.

Используя временную таблицу, вы можете легко обновлять или удалять любые записи

Таблица: временный порядок

Temp_id: $ _SESSION ['temp_id'] = любое случайное значение;

id  userid   product_id  quantity temp_id   date
1   1        1            2        123456    2011-06-27 
2   1        2            1        123456    2011-06-27
3   2        1            2        789456    2011-06-27 
4   2        2            3        789456    2011-06-27

Вам нужно только передать temp_id, чтобы получить выбранную пользователем запись из временной таблицы

...