За последние 24 часа нас посетили 54039 программистов и 1733 робота. Сейчас ищут 795 программистов ...

Отображение количества товаров в корзине

Тема в разделе "PHP для новичков", создана пользователем Алексей, 6 май 2009.

  1. Алексей

    Алексей Активный пользователь

    С нами с:
    24 апр 2009
    Сообщения:
    27
    Симпатии:
    0
    Добрый вечер.

    Столкнулся с вопросом, на который не могу найти ответ.
    Почему-то в корзине отображается общее количество товара в два раза больше, чем было добавленно на самом деле.

    Исходные данные:
    Создаю PHP файл в котором размещаю все последующие скрипты:

    <?php
    session_start();
    //Корзина
    if (isset($_POST['new'])) //new - новый товар
    {

    @$new = $_POST['new'];
    @$quant = $_POST['quant']; //quant - количество товара

    //Создание корзины
    if (!isset($_SESSION['cart']))
    {$_SESSION['cart'] = array();}

    //Выбран новый элемент
    if (isset($_SESSION['cart'][$new]))
    {$_SESSION['cart'][$new] += $quant;} //Вот тут я увеличиваю количество товара в корзине
    else
    {$_SESSION['cart'][$new] = 1;}
    }

    ......

    На этой же PHP странице вывожу форму с перечнем товаров, при нажатии на которые форма методом POST передает информацию о добавленном товаре. У формы параметр action - имя этого же php файла.

    .......
    do
    {
    printf ("
    <form action='file.php' method='post' name='name'>
    <tr>
    <td><input name='quant' type='text' value='1'></td>
    <td><input name='submit_img' type='image' onClick='form.submit();' src='img/icon/basket_put.png'>
    <input name='new' type='hidden' value='%s'></td>
    </tr>
    </form>
    ",
    $goods['item_code']);
    }

    while (------------);

    Почему так происходит? Нигде умножения на два нету.

    Спасибо.
     
  2. vital

    vital Активный пользователь

    С нами с:
    18 дек 2006
    Сообщения:
    162
    Симпатии:
    0
    Адрес:
    Минск
    ну во первых
    HTML:
    1. <td><input name='submit_img' type='image' onClick='form.submit();' src='img/icon/basket_put.png'>
    type=image всегда работает как submit и onClick='form.submit();' необязательно ))

    PHP:
    1. {$_SESSION['cart'][$new] += $quant;}
    += ?
     
  3. vital

    vital Активный пользователь

    С нами с:
    18 дек 2006
    Сообщения:
    162
    Симпатии:
    0
    Адрес:
    Минск
    PHP:
    1. $_SESSION['cart'][$new] = $_SESSION['cart'][$new] + $quant;
     
  4. Алексей

    Алексей Активный пользователь

    С нами с:
    24 апр 2009
    Сообщения:
    27
    Симпатии:
    0
    $_SESSION['cart'][$new] += $quant; - аналогично $_SESSION['cart'][$new] = $_SESSION['cart'][$new] + $quant;
     
  5. vital

    vital Активный пользователь

    С нами с:
    18 дек 2006
    Сообщения:
    162
    Симпатии:
    0
    Адрес:
    Минск
    прикольно )) буду знать )))
     
  6. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Для информации:

    -=, %=, ^=, &=
     
  7. vital

    vital Активный пользователь

    С нами с:
    18 дек 2006
    Сообщения:
    162
    Симпатии:
    0
    Адрес:
    Минск
    примного благодарен )))
     
  8. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    vital
    Алексей
    вы прямо-таки дополняете друг друга))

    Apple
    забыл про .= (конкатенация строк) :D
     
  9. vital

    vital Активный пользователь

    С нами с:
    18 дек 2006
    Сообщения:
    162
    Симпатии:
    0
    Адрес:
    Минск
    вот это я знал )))
     
  10. Алексей

    Алексей Активный пользователь

    С нами с:
    24 апр 2009
    Сообщения:
    27
    Симпатии:
    0
    Коллеги,

    Есть идеи по этой теме? Переписывать код не хочется. В любом случае надо разобраться в чем проблема.

    Т.е. каким-то образом, после нажатия кнопки submit, скрипт увеличивает кол. товара в 2-а раза. Может тут какой-то Bug? Или я чего-то не понимаю?

    С нетерпением жду ваши комментарии.
     
  11. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Обычная тема, отладка. Просмотреть всю логику, просмотреть инициализацию, вывести значения переменных, посомтреть где изменяются.
    Первый вопрос: два раза записывается или записывается количество 2? Ну и так далее…