Навігація: Головна > Інтернет > Як зробити інтернет-магазин

Як зробити інтернет-магазин

Едельстар в Тернополі - інтернет-магазин

Едельстар в Тернополі - інтернет-

Це питання не даремно винесене в заголовок. Якщо Ви введете його в пошуковику, то у відповідь одержите масу посилань на комерційні пропозиції від різноманітних фірм або просто заповзятливих товаришів. Ні, я не хочу сказати, що вони роблять щось погане, або роблять не так, просто мене дивує практично повна відсутність інформації на цю тему (чи може, комусь пощастило більше?). А тема дійсно цікава та актуальна - принаймі , я зміг знайти в Інтернету більше питань, аніж відповідей. І ця стаття - маленька спроба хоч трохи заповнити нестачу інформації. Отже - як зробити самому?

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

Зробити простий (ми не будемо розглядати складні рішення) Інтернет-магазин самому, як не дивно, дуже просто. І не дивуйтеся - реалізація такого проекту доступна навіть починаючому програмістові, знайомому з Інтернет-технологіями. Сподіваюся, Ви зможете переконатися в цьому самі. Трохи складніше придумати, як прив'язати власний магазин (отут, і надалі, мається на увазі, звичайно, Інтернет-магазин) до конкретних товарів. Ну, ось Вам приклад. Є набір канцтоварів. У кількості 1000 найменувань. Прайс із цінами та інформацією по товарам оновлюється ледве не щодня, і не просто оновлюється, а иноді кардинально оновлюється! Причому змінюються не тільки ціни, що є ше невеликим лихом, але й види товарів, їх опис, терміни гарантії та постачань, тощо. Спробуйте вносити все ці дані у свій магазин щодня, і Ви відразу перейметеся повагою до тих людяей, що роблять таку роботу :-) Ось саме відновлення даних у магазині і займає основну частину самої програми. Це те, що необхідно продумати в першу чергу

Перш ніж Ви почнете робити свій магазин, Вам треба досконально вивчити прайс товарів і способи його відновлення в оригіналі. Давайте для приклада прийдемо до деяких умовностей. Є фірма, в асортименті якої комп'ютерні товари. Їх достатня кількість для того, що б не займатися відновленням вручну, а придумати власну систему для синхронізації даних прайса та магазина. Нехай прайс буде в нас у Excel- Це, як правило, не так, багато фірм використовують у роботі спеціялізовані програми, наприклад, 1С Бухгалтерію, але такі моменти не принципові, тому що завжди можна імпортувати дані з таких пакетів у Excel. Кількість розділів у прайсі та товарів у них не фіксовано, а сам прайс являє собою набір рядків та колонок. У кожнім рядку - або найменування розділів прайса (наприклад - процесори, пам'ять, мишки, тощо). Кількість стовпчиків не важлива, стандартно можуть бути присутніми ціна, найменування, опис товару. Втім, можуть бути і инші варіанти. Ось Вам і опис звичайного прайса, з яким Ви можете зіштовхнутися

Що і як можна використовувати, маючи такі дані? Звичайно, можна застосувати спеціяльні модулі для вибірки даних з файлу формату Excel (вони існують у різних варіантах для різних мов програмування), але такі модулі, як правило, не є безкоштовними, а виходить, не прийнятні для нас. Крім того - завжди залишається проблема настроювання. Часом, що б це зробити, треба мати таку кваліфікацію, що простіше самому все написати з нуля :-) Втім, ці модулі і не потрібні насправді. Що собою представляє наш прайс? Правильно, набір рядків і стовпчиків, причому суворо синхронізованих один до одного. А виходить, з таких рядків і стовпчиків можна побудувати текстовий файл із точно такою же структурою. Тільки замість візуального поділу рядків та стовпчиків (як у Excel-е), треба використовувати які-небудь символи. Звичайно, у цьому випадку візуальна синхронізація буде загублена, тому що довжина рядків завжди різна, але це і не важливо, адже внутрішня структура залишиться колишньою. Це будуть все ті ж рядки та стовпчика, тільки вже в текстовому форматі. А цей формат дуже легко прочитати та обробити практично на будь-якому мові програмування.

Якщо вже мова зайшла про приклади та умовності, давайте тепер визначимося, на якій мові програмування будуть наші приклади. Вибір для мене очевидний, тому що свій магазин я написав саме на РНР. Це нескладна (і в той самий час досить могутня) скриптова мова програмування, що надає все необхідні засоби для реалізації Інтернет-магазина (і не тільки його, між иншим). Отже, нехай буде РНР. Але не забувайте, що Ви завжди легко зможете перенести алгоритм на будь-яку иншу платформу. Просто з РНР... зручніше якось.

Повернемося до нашого прайса. Excel, як відомо, уміє зберігати свої файли в різних форматах. Нас буде цікавити зараз один - текстовий файл із роздільниками табуляції. У принципі, роздільники не важливі, існує можливість зберігати в форматі з роздільниками комами або пробілами. Використовуйте той, котрий Вам більше сподобається. Ми ж зупинимося на табуляції

І ось що в нас вийшло на виході: файл *.txt, рядки розділені переведенням каретки (це простий Enter), стовпчики розділені символами табуляції. Уся внутрішня структура прайса залишилася колишньою, тому що про це подбав майстер збереження Excel. Ну що ж, вже краще :-)

Ось ми і знайшли спосіб не займатися рутинною роботою по щоденному відновленню прайса в нашому Інтернет-магазині, а максимально автоматизувати цей процес. Перед тим, як починати працювати з отриманим файлом, можна подумати, як його трохи стиснути або обробити. Це буває необхідно для того, що б видалити не потрібні стовпчики, де повторюються пробіли, тимчасово відсутні в наявності товари, тощо. Для цього треба зчитати файл у масив, обробити кожен рядок на предмет наявності непотрібної інформації, записати отриманий результат знову в масив на те саме місце і, нарешті - весь масив записати у файл. Приблизно так. Але треба виходити з конкретної необхідності таких операцій, цілком можливо досить просто видалити повторювані пробіли

Коли все готово, настав час приступати до алгоритму вибірки даних їх нашого текстового файлу з прайсом. Як Ви вже, сподіваюся, здогадалися, він зовсім не складний. Зчитати файл у масив:

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

Ще раз нагадую, приклади дані у форматі мови . Далі треба обробити масив $tovar[] у циклі з виводом результатів роботи на екран:

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

echo $tovar[$i]; // виводимо рядок на екран

echo “<br>”; // не забуваємо про переведенню рядків

$i++; // закінчуємо цикл

endwhile;

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

Виходить, треба відокремити розділи прайса від інформації про товари. Це можна зробити, якщо звернути увагу на те, у якій з колонок йде назва розділу. Як правило, у тієї ж, що й назва товару. Але - у рядкові з назвою розілу немає інформації про ціну товару, а це може служити гарною відмітною ознакою для програми. Досить щораз відслідковувати наявність в обраному рядку колонки цін. Коли там порожньо - у рядку назва розілу, і його можна вивести на екран, якщо немає - то є товар, такий рядок просто пропускаємо, якщо треба виводити тільки назви розділів. І навпаки для виводу тільки товарів

Втім, назви розділів самі по собі мало кого зацікавлять. Нам треба продумати можливість перегляду конкретного розділу прайса. Для цього виведені найменування розділів прайса треба зробити посиланнями. А в посиланні як параметр вказати інформацію про те, з якого рядка починається даний розділ. Трохи модернізуємо наш алгоритм виводу розділів прайса таким чином, що б після натискання на посилання-найменування розділу відвідувач попадав на иншу програму, що починала б перегляд файлу з прайсом не з початку, а з того місця, що передано по посиланню як параметр. І вже виводила б не розділи прайса, а самі товари - їхню ціну, найменування, опис, тощо. Тут відбувається зворотне. У циклі програма переглядає рядки файлу. Якщо колонка з ціною не порожня - то є товар, і його треба вивести на екран, попередньо відформатувавши інформацію. Якщо ж порожньо - то є початок наступного розділу прайса, і обробку треба припинити, тому що ціль досягнута - весь обраний відвідувачем розділ виведений на екран. Обов'язково необхідно продумати зручну навігацію, Ваш відвідувач не повинен заблудитися в нетрях програм. На кожній сторінці повинні бути посилання на початок та на список розділів прайса. Непогано надати можливість переходу на наступний та на попередній розділи прайса прямо зі списку товарів

Тепер про те, як розділити інформацію в обраному рядку по стовпчиках. Відведемо кожному стовпчикові свою змінну. Якщо колонок у прайсі п'ять, то і змінних треба зарезервувати так само п'ять. Для того, що б не заплутатися, візьміть схожі імена: $n_1, $n _2, $n_3, $n_4, $n _5. Тепер, якщо потрібний рядок знаходиться в масиві $tovar[$і], досить застосувати таку конструкцію:

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

... і якщо стовпчика були розділені символом табуляції, вони розподілятися кожна у свою змінну. Якщо Ви використовували инший роздільник стовпчиків, Вам треба прописати його замість \t. Тепер легко перевірити наявність ціни, а також відсортувати та відформатувати дані прайса потрібним образом

Ось Вам і готове рішення для того, що б просто виводити прайс по розділах на екран. Але цього ще не досить для повноцінного Інтернет-магазина, тому що він повинен запроваджувати можливість замовлення обраних товарів.

Ми підійшли до дуже цікавої теми - віртуальний кошик. Не сумніваюся, на дуже багатьох сайтах Ви пробували замовити викладений там товар, і на всіх робота кошика була реалізована по-різному. Що треба стандартному відвідувачеві від Інтернет-магазина? Правильно, купити товар. А що йому для цього потрібно? Зручна навігація, легкий та швидкий доступ до товарів, можливість змінити кількість одного найменування товару в кошику, можливість видалити товар з кошика, інформація про товар (дані, параметри, фотографія, нарешті - ціна!). То є необхідний мінімум - збільшення доступних функцій негативно позначається на швидкодії та істотно ускладнює програму. Але - цього більш ніж досить для нас

Отже, як можна зберігати товари в кошику покупця? Можна попросити його (покупця, звісно) зареєструватися в системі, але для цього треба бути упевненим у необхідності нашого товару для покупця. Частіше це не так :-). А тому не ускладнюйте життя своїм клієнтам різного роду реєстраціями. Подумайте - як відноситеся до них Ви самі, чи часто хочеться залишати свої дані на сумнівних :-) сайтах? Так, так, дуже не хочеться. А виходить, треба мати дуже вагомі причини, що б впровадити реєстрацію. Такими причинами можуть бути: наявність постійного кола покупців, ходовий товар... Втім, це вже не відноситься до теми статті. Зробіть свій вибір самі. Тільки майте на увазі - реєстрацію так само прийдеться розробляти самому

А ми не будемо зупинятися на реєстрації, тому що вона в принципі нічого не змінює. Все рівно Вам нікуди не піти від cookie... Ну ось, вже чую :-) масу голосів з не дуже втішними словами, типу «Знову, а ми вже думали...». Так, і ще раз так! Давайте, я спробую привести ряд арґументів за використання цієї технології, а Ви вирішите самі - правий я або ні.

Що б зробити це, треба розглянути переваги та вади декількох конкуруючих технологій. Що можна протиставити cookie? З того, що попроще - Java script та сесії. Давайте розглянемо всі три по черзі

Cookie - невеликі файли, що записуються на Вашому комп'ютері сервером. Все браузери підтримують роботу з ними, і повірте - у цій технології більше обмежень, аніж можливостей. Наприклад, не можна записати в один cookie більше 4 кілобайт даних, не можна звернутися до чужого cookie, тільки до своєму (створеним своїм сервером), не можна записати cookie кудись инше місце, крім як у відведене користувачем. Не можна, не можна, не можна... Звичайно, все це при умові того, що Ви стежите за безпекою власного комп'ютера та встановлюєте найсучасніше програмне забезпечення. До речі, практично в усіх браузерах зookie за замовчуванням включені, і якщо Ви змогли них виключити - зможете і включити. Зробити це можна в настроюваннях програми-браузера. Дуже велика кількість сайтів використовує у своїй роботі cookie, а частина з них просто не пустить Вас до себе без включеної їхньої підтримки в браузері. Добре це або погано це инше питання. Є спеціяльні програми - брандмауери, що відтинають cookie або відмовляють сайтові в доступі, так що вибір все рівно залишається за відвідувачем. Але - середньостатистичний користувач комп'ютера не відключає cookie, а для продвинутих варто написати попередження на сайті.

Далі - Java Script. Ця технологія так само досить поширена, але... Є версії популярних браузерів, що не підтримують роботу Java Script. Наприклад - версії Opera. Щоправда, це не та вада, на якому мені хотілося б зробити акцент. Java Script технологія клієнтська, а це значить, що текст програми - скрипту треба передати браузерові. Саме собою - збільшення часу завантаження та уповільнення роботи програми Вам гарантовано. А плюс сюди ще вимогливість до ресурсів комп'ютера, і ми отримуємо гримучу суміш. Але ж свого клієнта треба поважати і трошки навіть любити - як-ніяк він платить нам за нашу роботу. Так навіщо ж ускладнювати йому шлях по сайті? Втім, є тут і свої плюси - якщо сервер не підтримує програмування на своїй стороні, залишається скористатися тільки Java Script.

Сесії. Дуже ефективний механізм, вбудований у сучасні мови програмування. Є присутнім, наприклад, у PHP версії 4.0 та вище. Дозволяє передавати змінні від одного вікна браузера до иншого без їхньої втрати і без передачі методами POST або GET. Це на пальцях. У дійсності - використовує у своїй роботі унікальні ідентифікатори, що зберігаються в тих же файлах cookie, так що нового в принципі нічого не несе, хіба що підвищується зручність роботи... Якщо тільки знати як цим користуватися :-) Саме собою - вимагає підтримки cookie від браузера.

Ось вони, конкуренти. Насправді - вибір стоїть між двома: cookie або Java Script. Иншее варто обирати тільки у випадку, якщо Ваш хостінг не підтримує програмування на стороні сервера на жодній з мов. То є практично всі безкоштовні служби хостінгу. А на першому варто зупинятися у всіх инших випадках, коли існує можливість віддати основну роботу з обробки серверові. Втім, Ваш Java Script теж буде працювати з cookie, инакше так недоречно обірвавшийся зв'язок з Інтернетом позбавить відвідувача набитого в кошик товару. Инший раз він (відвідувач крамниці) може цього і не зробити. Якщо використовуються cookie - весь кошик залишається недоторканоим адже він записана на комп'ютері клієнта. Як бачите, коло замкнулося, нам все одно від них нікуди не дітися :-) Отже - рішення про вибір технології залежить від можливостей хостингу.

Ми, як прогресивні програмісти, зупинимося на cookie. Тим більше, що в нас є РНР, а в ньому дуже просто встановлювати, видаляти та зчитувати cookie. На практиці це буде виглядати так:

isset ($name); - прочитати встановлений cookie з ім'ям name;

$y = mktime (12, 50, 0, 12, 12, 2005); - установити час, до якого зберігати cookie;
setcookie("name", $data, $y); - записати в cookie з ім'ям name змінну $data;

setcookie("name); - видалити cookie з ім'ям name;

Ось і все, що нам знадобиться для роботи зі страшними cookie.

Раз технологія обрана - давайте застосуємо її на ділі! Прайс у нас, якщо Ви пам'ятайте, зберігається в текстовому файлі. Блок вибірки даних звідти є. Залишилося вирішити, що саме зберігати в cookie. Можна - всю інформацію про товар, а можна тільки цифровий ідентифікатор та кількість. Конкретний вибір треба зробити виходячи з реальних умов. За принципом - що простіше. Тільки треба враховувати, що цифровий ідентифікатор займає не дуже багато місця в пам'яті, але з ним більше проблем у сенсі програмування. Прийдеться робити блок зіставлення ідентифікатора та вибірки інформації з файлу прайса. Тут існує й ще один момент. Якщо прайс часто змінюється, відповідно інформація в кошику покупця може швидко застаріти і не відповідати дійсності. Виходить, варто подумати про контроль дати. Дату, коли відвідувач поклав товар у кошик, так само прийдеться зберігати в cookie, тому що більше ніде. Якщо дати сильно розрізняються - варто попередити покупця про невідповідність. Инакше можуть відбутися прикрі казуси. Неприємно, коли замовлення робиться за ціною тижневої давнини. Вона може не тільки впасти, але й збільшитися! Потім прийдеться щось розказувати клієнтові... Так що краще подбати про такі речі заздалегідь. Хоча, якщо прайс більш-менш постійний, турбуватися на варто

Цифровим ідентифікатором дуже зручно вибрати номер позиції в прайсі. Цей номер, зрозуміло, унікальний для кожного товару, а нам це і треба. І, крім того - по номері позиції легко витягти інформацію про товар з текстового файлу з прайсом. Досить зчитати весь файл у масив:

$file = “price.txt”; // до речі, розширення файлу може бути будь-яким
$as = file ( $file );

І звернутися до рядка масиву з потрібним індексом:

$info = $as[$id];

$id - ідентифікатор, що нам потрібний. Щоправда, застосовуючи даний метод, нам не уникнути контролю дат, але це не так вже і погано.

Разом з ідентифікатором товару треба запам'ятовувати і кількість товару. Відповідно, при першому замовленні вводиться число 1. Далі бажано надати можливість довільно (в обмежених, звичайно, рамках) змінювати це число. Для перерахування суми знадобиться кнопка, якщо вона буде першою після форми - спрацює і натискання на клавішу Enter. Дуже зручно - увів нову кількість товару і натиснув Enter для перерахування.

Крім того, у кошику обов'язково треба передбачити можливість замовити ще товар і остаточно оформити товар. Це можна зробити і кнопками, і посиланнями - що зручніше для навігації. Ніяких параметрів передаватися тут не буде.

Звичайно, необхідно продумати, як саме виводити інформацію про повну вартість замовлення. Не варто забувати про знижки та подарунки, якщо вони, звичайно, є у Вашій Інтернет-крамниці. Добре впишуться сюди різні бонуси та інформація про доставку. Якщо вона безкоштовна - напишіть про це. Зайвим не буде.

Нарешті... Оформлення. Стандартні поля - ім'я, адреса, телефон, поштова скринька, тощо, кому що треба. Чим менше, до речі, тим краще. Обов'язково повинне бути поле «примітки» - залишіть клієнтові можливість висловити свої побажання. Відразу повинна бути присутнім вся інформація про замовлений товар і про його вартість. Найголовніша кнопка - «ЗАМОВИТИ». Якщо немає реєстрації, можна введені дані запам'ятати (а для чого ми казали стільки про cookie?) і при наступному замовленні просто підставити. Клієнт буде вдячний, повірте.

Після того, як замовлення оформлене та підтвердженно, по=перше... скажіть спасибі клієнтові за покупку. І - виведіть ще раз інформацію про замовленні на екран. При цьому не забувайте очистити кошик - він вже відробила своє. Якщо була введена адреса електронної пошти - відправте на нього повідомлення про замовлення та найрізноманітнішу інформацію, включаючи рекламу. Ось і все. Принаймні, для покупця.

Тепер перейдемо до внутрішніх процесів, що відбуваються при замовленні. Зрозуміло, для збереження інформації про всі замовлення треба відвести службовий файл. У нього та будемо писати все, що замовлять. Причому писати вже треба не ідентифікатори (сподіваюся, місця у Вас на хостінгу багато), а повну інформацію - назву, ціну, тощо. Так зручніше потім переглядати та обробляти. Тут нічого складного - просто дописуємо спеціяльним образом сформований рядок у кінець файлу. Прочитати такий файл можна і в текстовому редакторі і за допомогою спеціяльної службової програми, вхід у яку, звісно же, повинен бути під паролем.

Дуже актуальним є момент своєчасності обробки замовлень. Я Вам підкажу дуже гарний і, до речі, сучасний метод, що дозволяє практично миттєво дізнаватися про замовлення. І це без необхідності постійно сидіти в Інтернеті і навіть виходити в нього раз у день. Здивовані? А насправді все просто. Нам знадобиться простій... пейджер. Практично всі оператори надають можливість відправити електронне повідомлення на свій пейджер з Інтернету. Як правило, адреса для відправлення виглядає так: номер_пейджера@адреса.оператора. Або приблизно так. Якщо на цю адресу відправити лист, він прийде на Ваш пейджер. А з PHP, наприклад, дуже просто відправляти електронні повідомлення на поштові скриньки. Ідея ясна, сподіваюся? До речі, непоганим варіантом може бути SMS на стільниковий телефон, але треба уточнювати в оператора, чи підтримує їхня мережа таку можливість.

Як бачите, на замовлення можна відреагувати практично відразу, як тільки воно прийде. Це підвищує довіру клієнтів до крамниці та позитивно позначається на репутації. Ось, як мені здається, і все для початку.

Дуже хочеться побажати не боятися самостійно займатися розробками в даній області. Проблем залишилося багато, але всі вони розв'язувані, повірте. І, як правило - простіше виявляється самостійно розробити систему, аніж шукати та надбудовувати чужу.

Якщо Вам прийшлися до серця серцю ідеї, викладені в даній статті, Ви можете оцінити роботу описуваної тут Інтернет-крамниці за адресою edelstar.elitno.net. Може, навіть що-небудь купите :-) Ще раз хочеться нагадати - стаття орієнтована в першу чергу на те, що б дати початкову інформацію про технології, застосовуваних у Інтернет-крамницях. Той або инший описаний тут блoк може бути реалізований по-іншому. Досліджуйте, експериментуйте, дійте... Успіхів Вам у бізнесі!

Теги: , , , , ,

Схожі публікації

Без коментарів!

(Обов’язково)
(Обов’язково, не публікується)

Випадкова картинка


Випадкове фото