Функция №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, "")