Функция №2: Добавление товара и состояние корзины
function cartStatus() {
/* часть первая – добавление товара в корзину */
$cart="";
/* создаем переменную $cart, в которую запишем корзину */
if (@$_COOKIE['cart']) { $cart=$_COOKIE['cart']; }
/* если существует переменная «cart» в cookies, то присвоим её значение переменной $cart */
if (@$_GET[addtocart]) {
/* если существует переменная «addtocart» в адресной строке (метод GET), то */
if (!@$_COOKIE['cart']) {
/* если не существует переменной «cart» в cookies */
$cart=$_GET['addtocart'];
/* присвоим переменной $cart идентификатор добавляемого в корзину товара */
}
else {
/* если существует переменная «cart» в cookies, нужно поставить разделительный знак между идентификаторами (мы решили, что это будет знак | ), и только потом добавить новый идентификатор */
$cart=$cart."|". $_GET['addtocart'];
}
setCookie("cart","$cart");
/* заменим переменную «cart» в cookies на $cart с новым, изменённым содержанием корзины */
}
/* часть вторая – получение количества товаров в корзине */
if ($cart=="") { $cartCount="0"; }
/* если переменная $cart, полученная ранее из cookies, является пустой строкой, значит, корзина пуста и переменной содержащей количество товаров, назовём её $cartCount нужно присвоить значение 0 */
else {
/* если же переменная $cart не пуста и в корзине находятся товары… */
$cartArr=explode("|",$cart);
/* …нужно создать массив с идентификаторами товаров. Для этого используем стандартную функцию explode(). Её работа заключается в разбиении строки на подстроки в соответствии с указанным разделителем и помещение полученных данных в массив. Следовательно, товаров в корзине столько, сколько элементов в массиве */
$cartCount=count($cartArr);
/* стандартная функция count() возвращает количество элементов в указанном в скобках массиве; присвоим это значение переменной $cartCount */
}
return $cartCount;
/* функция возвращает количество товаров в корзине */
}
Функция написана, помещена в нужно место в файле, но не запущена. Можно запустить её простым вызовом cartStatus(), но тогда она будет только добавлять товар в корзину, а она умеет еще и возвращать количество товаров в корзине. Поэтому будем запускать её следующим образом:
<?
@mysql_connect("имя хоста","имя пользователя","пароль") or die("MySQL Connection Failed");
@mysql_select_db("имя базы данных") or die("MySQL Database Selection Failed");
function cartStatus() {
.....
}
function catalogue() {
.....
}
$cartCount=cartStatus();
/* запускаем функцию и возвращаем её значение в переменную $cartCount */
echo "Количество товаров в корзине: ".$cartCount." шт.<br/><br/><br/>";
/* теперь в самом верху страницы с каталогом будет указано количество товаров в корзине на данный момент */
echo catalogue();
/* выводим каталог товаров */
?>
Лабораторная работа №3. Корзина
Наша корзина, как и сам магазин, будет максимально простая. Она будет состоять из кнопки оформить заказ, очистить корзину и списка товаров без возможности изменения количества и удаления определённого товара, т.к. это является достаточно непростой задачей для начинающего программиста.
Таким образом, нашей задачей в этой лабораторной работе будет получить из cookies идентификаторы товаров, которые посетитель положил в корзину, найти по ним соответствующие товары в базе данных, вывести их названия и цены и сосчитать общую сумму покупки.
Создадим файл cart.php.
Функция №3: Корзина
<?
@mysql_connect("имя хоста","имя пользователя","пароль") or die("MySQL Connection Failed");
@mysql_select_db("имя базы данных") or die("MySQL Database Selection Failed");
function cart() {
$cart="";
/* создаем переменную $cart, в которую запишем корзину */
if (@$_COOKIE['cart']) { $cart=$_COOKIE['cart']; }
/* если существует переменная «cart» в cookies, то присвоим её значение переменной $cart */
$cartArr=explode("|",$cart);
/* используем уже известную нам функцию explode, чтобы получить массив с идентификаторами товаров в корзине */
if ($cart=="") {
return "корзина пуста";
/* если переменная $cart является пустой строкой, то результатом функции будет надпись «корзина пуста» */
}
else {
$cartCount=count($cartArr);
/* запишем в переменную $cartCount количество товаров в корзине, полученное с помощью функции count() */
$cartTotalPrice=0;
/* создаем переменную $cartTotalPrice, в которой будем считать общую стоимость */
foreach($cartArr as $k=>$v) {
/* с помощью оператора foreach перебираем все элементы массива, где $k – номер элемента в массиве (начиная с нуля), $v – идентификатор товара */
$result=mysql_query("select * from products where id='$v'");
/* получаем в переменную $result результат mysql-запроса «выбрать все из таблицы products, где идентификатор ($id) равен переменной $v (идентификатор из массива с товарами)» */
$row=mysql_fetch_array($result);
/* превратим полученный данные в ассоциативный массив $row */
$number=$k+1;
/* у каждого товара в корзине должен быть номер начиная с единицы, а php ведет счет начиная с нуля, поэтому к порядковому номеру выданному php нужно прибавить единицу. Запишем полученное значение в переменную $number */
$content=$content.$number." - ".$row['name']." - ".$row['price']." руб.<br/>";
/* оформляем полученные данные */
$cartTotalPrice=$cartTotalPrice+$row['price'];
/* прибавляем к переменной $cartTotalPrice (общая сумма покупки) цену очередного товара */
}
$content=$content."<br/><br/> Всего: ".$cartTotalPrice." руб. ";
/* закончили перебор товаров в корзине и выводим общую стоимость покупки */
$content=$content."<br/><br/><a href=\"orderform.php\">оформить заказ</a>\n";
/* опция «оформить заказ» */
}
return $content;
/* вывод результатов */
}
echo cart();
/* выведем результат работы функции на экран */
?>
Для очищения корзины можно использовать функцию setCookie(), в которой переменной cart присваиваем пустую строку: setCookie(cart, "")