[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Криво работает корзина
RCuPeR
Всем привет.
Накидал скрипт корзины, но что-то он не очень хорошо работает. При обновлении, слетает зараза.
Много говорить не буду, посмотреть можно тут.

Функция корзины:


function getBasket(){

session_start();
$sessionID = $_COOKIE['PHPSESSID'];

$query = "SELECT * FROM baskets WHERE basketSession = '" . $sessionID . "' GROUP BY productID ORDER By basketID DESC";
$result = mysql_query($query);
//echo $query;

while($row = mysql_fetch_assoc($result))
{

$query2 = "SELECT * FROM products WHERE productID = " . $row['productID'];
$result2 = mysql_query($query2);
$row2 = mysql_fetch_array( $result2 );

$productID = $row2['productID'];
$productPrice = $row2['productPrice'];
$productName = $row2['productName'];

$query2 = "SELECT COUNT(*) AS totalItems FROM baskets WHERE basketSession = '" . $sessionID . "' AND productID = " . $productID;
$result2 = mysql_query($query2);

$array_count = mysql_fetch_assoc($result2);
$totalItems = $array_count['productID'];
$productPrice = $array_count['productPrice'];
$basketText = $basketText . '<li id="productID_' . $productID . '"><a href=inc/functions.php?action=deleteFromBasket&productID=' . $productID . ' onClick="return false;"><img src="images/delete.png" id="deleteProductID_' . $productID . '"></a> ' . $productName . '(' . $totalItems . ' items) - $' . ($totalItems * $productPrice) . '</li>';

}
echo $basketText;
}


Вот дамп таблицы корзины:


--
-- Структура таблицы `baskets`
--

CREATE TABLE IF NOT EXISTS `baskets` (
`basketID` int(11) NOT NULL AUTO_INCREMENT,
`basketSession` varchar(50) COLLATE utf8_bin DEFAULT NULL,
`productID` int(11) DEFAULT NULL,
`productPrice` float(7,2) DEFAULT NULL,
PRIMARY KEY (`basketID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=362 ;

--
-- Дамп данных таблицы `baskets`
--

INSERT INTO `baskets` (`basketID`, `basketSession`, `productID`, `productPrice`) VALUES
(356, 'hgl9kpgfbgt0755r26ceijqoq6', 8, 20.10),
(357, 'hgl9kpgfbgt0755r26ceijqoq6', 7, 700.00),
(358, 'hgl9kpgfbgt0755r26ceijqoq6', 5, 0.00),
(359, 'hgl9kpgfbgt0755r26ceijqoq6', 10, 644.00),
(360, 'hgl9kpgfbgt0755r26ceijqoq6', 12, 3.00),
(361, 'hgl9kpgfbgt0755r26ceijqoq6', 7, 700.00);






Спустя 29 минут, 35 секунд (21.03.2011 - 01:36) inpost написал(а):
Зачем session_start(); засунул в функцию? Функция для того и существует, чтобы можно было несколько раз вызывать, а у тебя какая-то она не практичная, второй раз и ошибка!

Спустя 12 минут, 58 секунд (21.03.2011 - 01:49) RCuPeR написал(а):
Ну да, не очень хорошо.
Но это явно не причина ошибки.

Спустя 2 минуты, 53 секунды (21.03.2011 - 01:52) inpost написал(а):
RCuPeR
Храни товары не в таблице, а в кукисах, иначе переполнение будет ненужной информации в таблицах!

Спустя 1 минута, 52 секунды (21.03.2011 - 01:54) inpost написал(а):
RCuPeR
Ты бы хоть писал, что именно слетает! В данном случае только сумма товаров слетала.

Спустя 4 минуты, 2 секунды (21.03.2011 - 01:58) RCuPeR написал(а):
Оу...Кукисы, дай хоть в этом раздуплится. biggrin.gif

Смотри, ты же, я надеюсь был на сайте ?
Когда добавляю товар - всё гуд, выводится выбранное количество, сумма, ну короче всё что нужно. Но вот когда обновляю страницу - слетает сумма и количество выбранного товара.

Спустя 7 минут, 48 секунд (21.03.2011 - 02:06) inpost написал(а):
RCuPeR
Ты где хранишь количество и цену? В БД? Тогда открой БД через PMA и смотри за изменениями, что происходит при каждом твоём клике. Тут не понятно, как выводятся те или иные вещи по твоему коду. Но ты можешь проследить за этим сам, может ты при помощи JS на страницу выводишь число суммы, а в БД не добавляешь, или ещё что-то в этом роде.

Спустя 2 минуты, 57 секунд (21.03.2011 - 02:09) tomash написал(а):
		$totalItems = $array_count['productID'];
$productPrice = $array_count['productPrice'];


откуда в массиве array_count возьмутся эти элементы? правильно будет так

$query2  = "SELECT COUNT(*) AS totalItems FROM baskets WHERE basketSession = '" . $sessionID . "' AND productID = " . $productID;
$result2 = mysql_query($query2);

$array_count = mysql_fetch_assoc($result2);
$totalItems = $array_count['totalItems '];
$basketText = $basketText . '<li id="productID_' . $productID . '"><a href=inc/functions.php?action=deleteFromBasket&productID=' . $productID . ' onClick="return false;"><img src="images/delete.png" id="deleteProductID_' . $productID . '"></a> ' . $productName . '(' . $totalItems . ' items) - $' . ($totalItems * $productPrice) . '</li>';

Спустя 9 минут, 43 секунды (21.03.2011 - 02:19) RCuPeR написал(а):
Вот, в базе всё верно.

Скрытый текст
--
-- Структура таблицы `baskets`
--

CREATE TABLE IF NOT EXISTS `baskets` (
  `basketID` int(11) NOT NULL AUTO_INCREMENT,
  `basketSession` varchar(50) COLLATE utf8_bin DEFAULT NULL,
  `productID` int(11) DEFAULT NULL,
  `productPrice` float(7,2) DEFAULT NULL,
  PRIMARY KEY (`basketID`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=437 ;

--
-- Дамп данных таблицы `baskets`
--

INSERT INTO `baskets` (`basketID`, `basketSession`, `productID`, `productPrice`) VALUES
(360, 'hgl9kpgfbgt0755r26ceijqoq6', 12, 3.00),
(362, '14kefo5ep83it090peatgpsli3', 8, 20.10),
(363, '14kefo5ep83it090peatgpsli3', 7, 700.00),
(364, '14kefo5ep83it090peatgpsli3', 5, 0.00),
(365, '14kefo5ep83it090peatgpsli3', 10, 644.00),
(366, '14kefo5ep83it090peatgpsli3', 7, 700.00),
(367, '14kefo5ep83it090peatgpsli3', 10, 644.00),
(368, '14kefo5ep83it090peatgpsli3', 12, 3.00),
(369, '14kefo5ep83it090peatgpsli3', 7, 700.00),
(370, '14kefo5ep83it090peatgpsli3', 8, 20.10),
(371, '14kefo5ep83it090peatgpsli3', 10, 644.00),
(372, '14kefo5ep83it090peatgpsli3', 10, 644.00),
(373, '14kefo5ep83it090peatgpsli3', 8, 20.10),
(374, '14kefo5ep83it090peatgpsli3', 7, 700.00),
(375, '14kefo5ep83it090peatgpsli3', 2, 38.00),
(376, '14kefo5ep83it090peatgpsli3', 1, 95.00),
(377, '14kefo5ep83it090peatgpsli3', 4, 443.00),
(378, '14kefo5ep83it090peatgpsli3', 6, 200.00),
(379, '14kefo5ep83it090peatgpsli3', 4, 443.00),
(380, '14kefo5ep83it090peatgpsli3', 3, 129.00),
(381, '47b6c9og6td1i66blghj6pdb35', 4, 443.00),
(382, '47b6c9og6td1i66blghj6pdb35', 4, 443.00),
(383, '47b6c9og6td1i66blghj6pdb35', 4, 443.00),
(384, '47b6c9og6td1i66blghj6pdb35', 4, 443.00),
(385, '47b6c9og6td1i66blghj6pdb35', 4, 443.00),
(386, '47b6c9og6td1i66blghj6pdb35', 4, 443.00),
(387, '47b6c9og6td1i66blghj6pdb35', 4, 443.00),
(388, '47b6c9og6td1i66blghj6pdb35', 4, 443.00),
(389, '47b6c9og6td1i66blghj6pdb35', 4, 443.00),
(390, '47b6c9og6td1i66blghj6pdb35', 6, 200.00),
(391, '47b6c9og6td1i66blghj6pdb35', 6, 200.00),
(392, '47b6c9og6td1i66blghj6pdb35', 6, 200.00),
(393, '47b6c9og6td1i66blghj6pdb35', 2, 38.00),
(394, '47b6c9og6td1i66blghj6pdb35', 2, 38.00),
(395, 'hgl9kpgfbgt0755r26ceijqoq6', 10, 644.00),
(396, 'hgl9kpgfbgt0755r26ceijqoq6', 8, 20.10),
(397, 'hgl9kpgfbgt0755r26ceijqoq6', 10, 644.00),
(398, 'hgl9kpgfbgt0755r26ceijqoq6', 8, 20.10),
(399, 'hgl9kpgfbgt0755r26ceijqoq6', 7, 700.00),
(401, 'ispvu571app7uh5a11p2h93op5', 8, 20.10),
(402, 'ispvu571app7uh5a11p2h93op5', 3, 129.00),
(403, 'ispvu571app7uh5a11p2h93op5', 4, 443.00),
(404, 'ispvu571app7uh5a11p2h93op5', 6, 200.00),
(405, 'ispvu571app7uh5a11p2h93op5', 6, 200.00),
(406, 'ispvu571app7uh5a11p2h93op5', 6, 200.00),
(407, 'ispvu571app7uh5a11p2h93op5', 6, 200.00),
(408, 'ispvu571app7uh5a11p2h93op5', 3, 129.00),
(409, 'ispvu571app7uh5a11p2h93op5', 3, 129.00),
(410, '8ls5o9qr4l8uiboarje42tf3g5', 5, 0.00),
(411, '8ls5o9qr4l8uiboarje42tf3g5', 7, 700.00),
(412, '8ls5o9qr4l8uiboarje42tf3g5', 12, 3.00),
(413, '8ls5o9qr4l8uiboarje42tf3g5', 7, 700.00),
(414, 'gug46dcrvmidf5j1h5lit3vs57', 8, 20.10),
(415, 'gug46dcrvmidf5j1h5lit3vs57', 8, 20.10),
(416, 'gug46dcrvmidf5j1h5lit3vs57', 8, 20.10),
(417, 'gug46dcrvmidf5j1h5lit3vs57', 8, 20.10),
(418, 'gug46dcrvmidf5j1h5lit3vs57', 7, 700.00),
(419, 'gug46dcrvmidf5j1h5lit3vs57', 12, 3.00),
(420, 'gug46dcrvmidf5j1h5lit3vs57', 10, 644.00),
(421, 'gug46dcrvmidf5j1h5lit3vs57', 8, 20.10),
(422, 'gug46dcrvmidf5j1h5lit3vs57', 8, 20.10),
(423, 'gug46dcrvmidf5j1h5lit3vs57', 5, 0.00),
(424, '8ls5o9qr4l8uiboarje42tf3g5', 10, 644.00),
(425, '8ls5o9qr4l8uiboarje42tf3g5', 8, 20.10),
(426, '8ls5o9qr4l8uiboarje42tf3g5', 10, 644.00),
(427, '8ls5o9qr4l8uiboarje42tf3g5', 10, 644.00),
(428, '8ls5o9qr4l8uiboarje42tf3g5', 12, 3.00),
(429, 'hgl9kpgfbgt0755r26ceijqoq6', 5, 0.00),
(430, 'hgl9kpgfbgt0755r26ceijqoq6', 5, 0.00),
(431, 'hgl9kpgfbgt0755r26ceijqoq6', 5, 0.00),
(432, 'hgl9kpgfbgt0755r26ceijqoq6', 5, 0.00),
(433, 'hgl9kpgfbgt0755r26ceijqoq6', 12, 3.00),
(434, 'hgl9kpgfbgt0755r26ceijqoq6', 12, 3.00),
(435, 'hgl9kpgfbgt0755r26ceijqoq6', 12, 3.00),
(436, 'hgl9kpgfbgt0755r26ceijqoq6', 12, 3.00);


Кажется, что-то в запросе не так:

$$query2 = "SELECT COUNT(*) AS totalItems FROM baskets WHERE basketSession = '" . $sessionID . "' AND productID = " . $productID;
$result2 = mysql_query($query2);

Спустя 4 минуты, 49 секунд (21.03.2011 - 02:23) tomash написал(а):
или так

query2  = "SELECT COUNT(*) AS totalItems, productPrice FROM baskets WHERE basketSession = '" . $sessionID . "' AND productID = " . $productID;
$result2 = mysql_query($query2);

$array_count = mysql_fetch_assoc($result2);
$totalItems = $array_count['totalItems'];
$productPrice = $array_count['productPrice'];


но тогда непонятно зачем два раза цену тянуть?

Спустя 5 минут, 42 секунды (21.03.2011 - 02:29) RCuPeR написал(а):
Таааак! По-немногу начинает работать, зайди глянь результаты.

Спустя 1 минута, 59 секунд (21.03.2011 - 02:31) RCuPeR написал(а):
Но ещё что-то всё таки тупит...

Спустя 6 часов, 6 минут, 6 секунд (21.03.2011 - 08:37) nugle написал(а):
могу подсказать что еще не работает, когда нажмаешь на добавить первый раз не добавляется(назовём его товар1), когда нажимаешь на другой товар(назовём его товар2) появляется товар1, на 3товар кликаем тавар2 появляется и т.д.

Спустя 9 минут, 35 секунд (21.03.2011 - 08:47) RCuPeR написал(а):
Аааа!!! mad.gif


_____________
Гнусный социопат с комплексом Бога.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.