Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программируем на PHP - вопросы и ответы.


Информационный Канал Subscribe.Ru

Здравствуйте! Выпуск номер 48
рассылки сайта РНР для всех!

Вы получили этот выпуск рассылки, так как являетесь подписчиком рассылок сайта http://subscribe.ru Рассылка выходит еженедельно, и предлагает Вам авторские материалы по теме программирования на скриптовом языке гипертекстового препроцессора РНР. Кроме того - есть система вопросов и ответов, обмен ссылками и баннерами, раздел Ваши письма и многое другое.
Форум сайта
Архив рассылки

заказать книги по РНР  
(только Беларусь)

Как сделать Интернет-магазин

Этот вопрос я не зря вынес в заголовок. Если Вы введете его в поисковике (например, http://yandex.ru), то в ответ получите массу ссылок на коммерческие предложения от разнообразных фирм или просто предприимчивых товарищей. Нет, я не хочу сказать, что они делают что-то плохое, или делают не так, просто меня удивляет практически полное отсутствие информации на данную тему.  А тема действительно интересная и актуальная – по крайней мере, я смог найти в Интернете больше вопросов, чем ответов. И эта статья – маленькая попытка хоть немного восполнить недостаток информации. Итак – как же сделать Интернет-магазин самому? 

Перед тем, как мы приступим собственно к теме, я хотел бы подойти к общему знаменателю (хотя может, это надо было сделать в самом конце?). Программное решение, предложенное тут, не является идеальным и единственно правильным. В мире вообще мало идеального :-) Так что давайте договоримся не зацикливаться на таких вещах, как выбор языка программирования, стиля программы, способов решения возникающих проблем. Все это можно долго и с усердием обсуждать, но свою цель я вижу несколько в ином - дать всем желающим необходимый минимум информации на тему создания собственного Интернет-магазина без сложных программных и технических решений.  А главное – без значительных финансовых затрат, что очень часто играет решающую роль. 

Сделать простой (мы не будем рассматривать сложные решения) Интернет-магазин самому, как ни странно, очень просто. И не удивляйтесь – программная реализация такого проекта доступна даже начинающему программисту, знакомому с Интернет-технологиями. Надеюсь, Вы сможете убедиться в этом сами. Несколько сложнее придумать, как привязать собственный магазин (тут, и в дальнейшем, подразумевается, конечно, Интернет-магазин) к конкретным товарам. Ну, вот Вам пример. Есть набор канцтоваров. В количестве 1000 наименований. Прайс с ценами и информацией о товарах обновляется чуть ли не ежедневно, и не просто обновляется, а иногда кардинально обновляется! Причем изменяются не только цены, что еще полбеды, но и виды товаров, их описания, сроки гарантии и поставок и т.д. Попробуйте вносить все эти данные в свой магазин ежедневно, и Вы сразу проникнитесь уважением к тем людям, которые делают такую работу :-) Вот именно обновление данных в магазине и занимает основную часть собственно самой программы. Это то, что необходимо продумать в первую очередь. 

Прежде чем Вы начнете делать свой магазин, Вам надо досконально изучить прайс товаров и способы его обновления в оригинале. Давайте для примера придем к некоторым условностям. Есть фирма, в ассортименте которой компьютерные товары. Их достаточное количество для того, что бы не заниматься обновлением в ручную, а придумать собственную систему для синхронизации данных  прайса и магазина. Пусть прайс будет у нас в Excel-е. Это, как правило, не так, многие фирмы используют в работе, например, 1С Бухгалтерию, но такие моменты не принципиальны, так как всегда можно импортировать данные в Excel. Количество разделов в прайсе и товаров в них не фиксировано, а сам прайс представляет собой набор строк и колонок. В каждой строке – товар или наименование раздела прайса (например – процессоры, память, мышки и т.д.). Количество колонок не важно, стандартно могут присутствовать цена, наименование, описание товара. Впрочем, могут быть и другие варианты. Вот Вам и описание обычного прайса, с которым Вы можете столкнуться. 

Что и как можно использовать, имея такие данные? Конечно, можно применить специальные модули для выборки данных из файла формата Excel, но такие модули, как правило, не являются бесплатными, а значит, не приемлемы для нас. Тем более что они и не нужны на самом деле. Что собой представляет наш прайс? Правильно, набор строк и колонок, причем строго синхронизированы друг относительно друга. А значит, из таких строк и колонок можно построить текстовый файл с точно такой же структурой. Только вместо визуального разделения строк и колонок (как в Excel-е), надо использовать какие-либо символы. Конечно, в этом случае визуальная синхронизация будет утеряна, так как длинна строк всегда разная, но внутренняя структура останется прежней. Это будут все те же строки и колонки, только уже в текстовом формате. А этот формат очень легко прочитать и обработать практически на любом языке программирования. Исходя из выбранного языка программирования, кстати, Вам придется определиться с разделителями.  

Если уж речь зашла о примерах и условностях, давайте теперь определимся,  на каком языке программирования будут наши примеры. Выбор для меня очевиден, так как свой магазин я написал именно на РНР. Это несложный (и в тоже время достаточно мощный) скриптовый язык программирования, предоставляющий все необходимые средства для реализации Интернет-магазина (и не только его, кстати). Итак, пусть будет РНР. Но не забывайте, что Вы всегда легко сможете перенести алгоритм на любую другую платформу, так как ничего сложного тут не предвидится. Просто с РНР… удобнее как-то. 

Вернемся к нашему прайсу. Excel, как известно, умеет сохранять свои файлы в разных форматах. Нас будет интересовать сейчас один – текстовый файл с разделителями табуляции. В принципе, разделители не важны, есть возможность сохранять в формате с разделителями запятыми или пробелами. Используйте тот, который Вам больше понравится. Мы же остановимся на табуляции.

И вот что у нас получилось на выходе: файл *.txt, строки разделены переводом каретки (это простой Enter), колонки разделены символами табуляции. Вся внутренняя структура прайса осталась прежней, так как об этом позаботился мастер сохранения Excel. Ну что-ж, уже лучше :-) 

Вот мы и нашли способ не заниматься рутинной работой по ежедневному обновлению прайса в  нашем Интернет-магазине, а максимально автоматизировать этот процесс. Перед тем, как начинать работать с полученным файлом, можно подумать, как его немного сжать или обработать. Это бывает необходимо для того, что бы удалить не нужные колонки, повторяющиеся пробелы, временно отсутствующие в наличии товары и т.д. Для этого надо считать файл в массив, обработать каждую строку на предмет наличия ненужной информации, записать полученный результат опять в массив и наконец – весь массив записать в файл. Примерно так. Но надо исходить из конкретной необходимости таких операций, вполне возможно достаточно просто удалить повторяющиеся пробелы. 

Когда все готово, пора приступать к алгоритму выборки данных их нашего текстового файла с прайсом. Как Вы уже, надеюсь, догадались, он совсем не сложен. Считать файл в массив:

 

$file = "price.txt";
$tovar   = file ( $file   );

 

Еще раз напоминаю, примеры даны в формате языка PHP. Дальше надо обработать массив $tovar в цикле с выводом результатов работы на экран: 

$i = 0;                              // счетчик начинается с нуля
while ($i < count($tovar)): // открыли цикл до последнего элемента в массиве

  echo $tovar[$i];              // выводим строку на экран

  echo “<br>”;                  // не забываем про перевод строк

$i++;                               // заканчиваем цикл

endwhile; 

Вот Вам и самый простейший вариант Вашего прайса. Он, правда, обладает существенным недостатком – весь прайс выводится за один раз, да еще все колонки в одной строке. А это не приемлемо по эстетическим :-) причинам. Правильнее предоставить клиенту возможность выбора раздела прайса. Впрочем, не стоит исключать и первый вариант. Всегда лучше, когда есть выбор из разных вариантов просмотра прайса, тем более, что в смысле программных решений тут не предвидится проблем. 

Значит, нужно отделить разделы прайса от информации о товаре. Это очень просто, если обратить внимание на то, в какой из колонок идет название раздела. Как правило, в той же, что и название товара. Но – в строке с названием раздела нет информации о цене товара, а это может служить хорошим отличительным признаком для программы. Достаточно каждый раз отслеживать наличие в выбранной строке колонку цен. Когда там пусто – в строке название раздела, и его можно вывести на экран, если нет – это товар, такую строку просто пропускаем, если надо выводить только названия разделов. 

Впрочем, названия разделов сами по себе мало кого заинтересуют. Нам надо продумать возможность просмотра конкретного раздела прайса. Для этого выводимые наименования разделов прайса надо сделать ссылками. А в ссылке в качестве параметра указать информацию о том, с какой строки начинается данный раздел. Для этого немного модернизируем наш алгоритм вывода разделов прайса таким образом, что бы после нажатия на ссылку-наименование раздела посетитель попадал на другую программу, которая начинала бы просмотр файла с прайсом не с начала, а с того места, которое передано по ссылке в качестве параметра. И уже выводила бы не разделы прайса, а сами товары – их цену, наименование, описание и т.д. Тут происходит обратное. В цикле программа просматривает строки файла. Если в колонке с ценой не пусто – это товар, и его надо вывести на экран, предварительно отформатировав информацию. Если же пусто – это начало следующего раздела прайса, и обработку можно прекратить, так как цель достигнута – весь выбранный посетителем раздел выведен на экран. Обязательно необходимо продумать удобную навигацию, Ваш посетитель не должен заблудиться в дебрях программ. На каждой страничке должна быть ссылка на начало и на список разделов прайса. 

Теперь о том, как разделить информацию в выбранной строке по колонкам. Отведем каждой колонке свою переменную. Если колонок в прайсе 5, то и переменных надо зарезервировать тоже пять. Для того, что бы не запутаться, возьмите похожие имена: $n_1, $n _2, $nl_3, $nl_4,
$
n _5. Теперь, если нужная строка находится в массиве $tovar[$i], достаточно применить такую конструкцию:

 

   list ($n_1, $n_2, $n_3, $n_4, $n_5) = split ("\t",$tovar[$i]); 

 

… и если колонки были разделены символом табуляции, они распределяться каждая в свою переменную. Если Вы использовали другой разделитель колонок, Вам надо прописать его вместо \t. Теперь легко проверить наличие цены, а так-же отсортировать и отформатировать данные прайса нужным образом. 

Вот Вам и готовое решение для того, что бы просто выводить прайс по разделам на экран. Но этого еще не достаточно для полноценного Интернет-магазина, так как он подразумевает возможность заказа выбранных товаров.

 

Продолжение следует……

Интернет магазин, описываемый в данной статье, можно посмотреть тут: http://204040.com

Андрей Кухарчик
http://virtual.bresttelecom.by/php  
virtualphp@tut.by


Вопросы и ответы
задать вопрос c сайта

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

Задайте свой вопрос

Ваше имя или ник:

Краткая тема Вашего вопроса:

Ваш электронный адрес:

Вопрос полностью:

В форуме разрешается использовать теги и перевод строки только в поле для ввода текста вопроса. Любые проблемы функционирования и работы форума можно обсудить здесь. Максимально количество символов в поле текста вопроса- 1000.


Обмен ссылками и баннерами

Предлагаю Вам стать участниками баннерообмена. Ваши ссылки и описания Ваших сайтов вы можете присылать по адресу рассылки - virtualphp@tut.by Все ссылки обязательно появятся в этой рассылке. Вам надо будет разместить у себя код баннера сайта рассылки, и только на главной страничке Вашего сайта.

Взять код моего баннера можно этот:  

<a href="http://virtual.bresttelecom.by/php/"><IMG SRC="http://virtual.bresttelecom.by/baner/8831.phtml"
alt="Виртуальный Брест" width="88" height="31" border="0"></a>

... для начала. Позже я вышлю Вам другой.

Наши друзья

http://virtual.bresttelecom.by - Виртуальный Брест. Региональный информационно - развлекательный портал города Бреста. Чат, форум, статьи, услуги, объявления, недвижимость, каталог сайтов - это и многое другое ждет Вас на страницах сайта.
http://price.bresttelecom.by - сайт прайсов фирм города Бреста. Поиск, подсчет, реклама и т.д.
http://204040.com - Интернет-магазин компьютерного салона Успех г. Брест
http://tweak.tut.by - http://tweak.bresttelecom.by - Оптимизация и настройка компьютера. Если Вас интересуют различные аспекты настройки Вашего мегагерцевого друга, Вам надо посетить сайт посвященный настройке и оптимизации. Кроме того - список последних версий популярных программ и свежие новости, а так же чат, форум и многое другое!
 * WebCraft - всё для вебмастеров, увеличение вашего трафика на 200 посетителей в день.
http://sos.dax.ru - Проект "SOS: Помощь пользователю". На сайте вы найдете множество статей, советов по компьютеру. Всегда свежий софт. А также вы сможете задать вопрос и получить на него моментальный ответ. Если вам нужна помощь - мы поможем вам!
http://www.uvd.tula.ru - сайт криминальной милиции УВД Тульской области.

 *
 Webhowto.Ru - много полезной информации для людей, занимающихся сайтостроением. Информация по настройке собственного веб-сервера на базе Apache, использовании .htaccess для работы с сервером хостинга, масса полезной информации по вебстроительству и отдельный большой раздел, посвященный реестру Windows. Оказывается, Windows тоже настраивается!
 *
http://kamony.h1.ru  Информационный портал Kamony Здесь есть все! Программы, приколы, полезности, музыка.
http://myvote.hut.ru - MyVote - голосование на Вашем сайте.Сервис для всех вебмастеров, которые хотят сделать свой сайт более интерактивным. Позволяет организовать опрос мнения пользователей на любом сервере.
http://www.sura.ru/maxwell Математика, Алгоритмы, Программирование. На сайте можно найти описания различных алгоритмов и методов, относящихся к различным математическим (и не только) дисциплинам.
http://babylon1.narod.ru - это разделы посвящённые созданию и раскрутке сайта, созданию эффективного баннера, интересным эффектам на java-скриптах, php-скриптах и cgi-скриптах. А также здесь Вы найдёте программы для ускорения интернета, памяти, компьютера, системы, Windows и многое другое интересное и полезное, что Вас, надеюсь, заинтересует.
http://bfg.com.ru/ - Сайт рассказывает о лучших бесплатных играх интернета - Moorhuhn, Vampirejagd, Tux Racer, Catch the Sperm, а также есть коллекция онлайн игр и обоев.
ния, мировые новости, компьютерная безопасность, скрытые возможности программ и ОС, раскрутка сайтов и многое многое другое!
http://www.zanaveski.km.ru - Сайт для людей, увлеченных компьютерной графикой: статьи по популярным программам работы с изображениями и анимацией, по теории компьютерной графики, графическим форматам и цветовым моделям.
http://moneymake.by.ru Система поиска сайтов халявного заработка. Здесь Вы найдете множество сайтов-спонсоров, которые платят деньги за различные действия со стороны пользователей (чтение рекламы, посещение сайтов, регистрации, показы баннеров и др.)
 * http://www.dvgu.ru/cs/~koulik - Все о жизни отдельно взятого российского студента и не только: помощь в учебе, творчество, свежий софт от автора проекта, куча полезных ссылок.
 * http://pks.mari-el.ru - "Programming K-Station - Сайт о компьютерах и программировании!"
 * http://freephp.dax.ru/ - Проект FreePHP: все, что вам потребуется для сайта
http://www.startdelo.narod.ru/ Предложения и советы по организации Своего Дела. Сайт содержит предложения по простейшим делам, для реализации которых требуются минимальные начальные затраты.
http://robertru.chat.ru
Письма читателей о своих болезнях и о способах их лечения. Фото девушек. Анекдоты. Медицина. Физиология половой жизни человека (статья проффесора медицины)


Сайты в тему

Предлагаю Вам коллекцию сайтов, где Вы сможете отыскать различную информацию по поводу РНР. Если у Вас есть предложения по поводу расширения этого списка - я с удовольствием добавлю сюда еще один полезный ресурс. Присылайте свои ссылки и описания.

http://www.php.net/ - официальный сайт РНР. Масса информации, но только для тех, кто дружит с английским.
http://www.php-encoder.f2s.com - защита РНР скриптов UPDATED.
http://phpclub.net - Архив бесплатных PHP-приложений (вкл. E-commerce), форумы, чаты, рассылки, книги, обучение, хостинг.
http://www.devshed.com/Server_Side/PHP/ интересные статьи по PHP и не только.
http://ancient.dax.ru На сайте много готовых решений на PHP: форумы, чаты, гостевые книги и многое другое. Кроме того сам сайт реализован на php.
http://detail.phpclub.net/ - как обычно, о РНР.
http://open.appideas.com/   сборник скриптов
http://programmingpub.com/scripts.html   скрипты на perl,php,python,tcl
http://px.sklar.com   php сборник скриптов
http://phplib.netuse.de   Здесь можно найти самую матёрую библиотеку на php(не отдельные скрипты, а цельное пособие по разработке), только не спешите подписываться на рассылки (авторы думают что все в мире должны знать немецкий
http://php.resourceindex.com/   коллекция скриптов
http://phpwizard.net   Tobias Ratschiller ничего не говорит?
http://www.umnik.f2s.com/ содержит информацию для вебмастера (по всем актуальным языкам веб-программирования), установка домашнего сервера Apache (разных версий)+MySQL+PHP+Perl. Также можно подписаться на рассылки "Вопросы и ответы по ОС" и "Будь достойным вебмастера". Имеются множество советов по компьютеру...
www.phpbuilder.com Здесь есть все! Форум, статьи, мануал, скрипты, да и вообще очень много профессионалов, тусующихся на сайте.
http://phpclasses.upperdesign.com/ Там находится масса классов на php, имеется рассылка на английском языке, регистрация бесплатная.
http://www.sourceforge.com - Вот IMHO очень полезный сайт. И не только для PHP-программистов, но и для всех остальных. Там десятки тысяч готовых примеров.

Где можно посмотреть

А и правда. РНР, да РНР! А где посмотреть как все это работает и оценить, стоит или нет заниматься этим... Правильное решение будет таким. Посетите сайты, указанные ниже, и посмотрите как они работают. Кстати, если хотите продемонстрировать всем свой проект или то, чего Вы достигли изучая РНР, присылайте ссылку и описание, и все это будет размещено здесь. Только не забудьте поставить у себя наш баннер, и обязательно на главной страничке.

http://virtual.bresttelecom.by - Виртуальный Брест. На РНР работают чат, форум, гостевая, объявления, статистика посещений, обмен компакт дисков, анекдоты.
http://204040.com - Компьютерный салон Успех - Интернет-магазин, прайс процессор, управление рассылками и все это работает на РНР и только на РНР.
http://www.uvd.tula.ru - сайт УВД Тульской области.
http://www.andrey.nnov.ru "Сайт Андрея Зайчикова" - Поможет начинающим программистам стать профессионалами. Алгоритмы, статьи, книги, faq и многое другое.
 * www.puhlik.f2s.com - Система позволяет провести опрос (голосование) любой целевой аудитории (посетители сайта, участники форума и т.д.). Полностью написана на PHP4 с использование MySQL.
 * http://anek.hut.ru - WWW Каталог. Весь сайт написан на PHP + MySQL
 *  http://home.onego.ru/~pus Описание: Книги для общения. Сайт полностью сделан на PHP.


Подпишитесь на рассылки!
 

Рассылки Subscribe.Ru
Программируем на PHP - вопросы и ответы
Новости сайта Виртуальный Брест
Оптимизация и настройка компьютера
SOS:Помощь пользователю Интернета
Вэб-строительство Профессионалам
Кроссворды от К.Ермакова
JavaScript и PHP
BigMoney$
Dummpy Daily eTips
Аббревиатуры и термины в компьютерном мире
Чем отличается СПАМ от E-MAIl маркетинга, как защитить свою почту, хитрости почтовых хулиганов
Лучшие ФОТО! Каждый день новые!
Тяжелая музыка от А до Я

Здесь будет публиковаться список рассылок, рекомендуемых к подписке.

Если у Вас есть рассылка - предлагаю Вам обменяться подобной формочкой для подписчиков. Достаточно прислать мне код рассылки и ее название.

Ваша рассылка должна иметь достаточно много подписчиков, не менее 1000, иначе согласитесь, будет немного несправедливо :-)



автор рассылки Андрей Кухарчик / http://virtual.bresttelecom.by/php



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное