|
Интернет-торговля для чайников на 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; } |