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

Наши рекомендации