Интернет-торговля для чайников на PHP

Никита Кислицин

Xakep, номер #055, стр. 055-072-3


Просматриваем весь массив $Lexeme и добавляем в запрос новые требования в зависимости от префикса каждой лексемы: если лексема начинается с символа "-", такого текста не должно быть ни в одном из полей, по которым осуществляется поиск; если же первый символ лексемы "+", то хотя бы одно из полей должно содержать этот текст.

Для наглядности приведу пример. На строку "книга по Unix" функция вернет " SELECT * FROM GOODS WHERE (name LIKE '%книга по Unix%' OR description LIKE '%книга по Unix%')". Если же пользователь набрал +книга -windows, функция вернет "SELECT * FROM GOODS WHERE (name LIKE '%книга%' OR description LIKE '%книга%') AND (name NOT LIKE '%windows%' AND description NOT LIKE '%windows%')".

Кстати, примерно так же работает поисковый робот Яндекса, за тем исключением, что поиск там более интеллектуальный: поддерживается довольно сложная семантика запросов, учитываются ошибки и опечатки пользователей и т.д. Но у нас еще все впереди :).

Перейдем теперь к вопросу организации корзины покупок. Это динамическая структура, все данные которой целиком и полностью размещаются у пользователя в cookies. Поясню. Когда покупатель нажимает на ссылку "добавить в корзину", ему вешается плюшка примерно такого вида: "1234567 1", где 1234567 - идентификатор товара, а 1 - количество заказанного товара. Понятно, что написать функции, которые абстрагировали бы программиста от работы с cookies, совсем несложно. Добавление товара в корзину представляется либо установкой, либо модификацией уже существующей куки, остальные же функции сводятся, фактически, к элементарной работе со строками и отправке "печенья". Приводить их в журнале я не буду. Ты и сам без труда найдешь их либо на диске, либо у меня на сайте.

После того, как пользователь решил оформить покупку, данные о выбранных товарах вытаскиваются из cookies и сохраняются на сервере в базе данных. Далее должны идти денежные транзакции, а потом и отсылка товара покупателю.

В статье я не рассказал про регистрацию пользователя на сайте. Это ты напишешь сам, просто делай все по аналогии с предыдущими статьями. Готовый код магазина ты найдешь на диске. А в следующий раз мы поговорим про административный интерфейс системы и, наверное, затронем тему security. Все. Теперь ты вооружен знаниями. Осталось только покорить рунет своим е-шопом и заработать много денег. Так что удачи тебе.

Кусок кода инет-магазина

function SearchInDB($find)

{

$sql="SELECT * FROM GOODS WHERE (";

# Любой запрос начинается с этой строки, в процессе парсинга

# аргумента функции будем приклеивать к этой строчке

# дополнительные условия

$find=stripslashes($find); #обрубаем все слеши

$search=split(" ",$find); #режем в массив по пробелу

$fields=array("name", "description");

# создаем массив с названиями полей таблицы, в которых производится поиск

$quoted=0;

$LexNum=0;

for ($i=0; $i<=count($search); $i++) #цикл по всем словам

{

if(ereg("^\"", $search[$i]) || ereg("^[+-]\"",$search[$i])) { $quoted=1; }

Назад на стр. 055-072-2  Содержание  Вперед на стр. 055-072-4