Автор Тема: Интернет-шоп (корзины)  (Прочитано 3270 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Sniper

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 86
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.40000.ru
Интернет-шоп (корзины)
« : 07 Марта 2004, 13:49:52 »
Значит так. У меня на сайте магазин.

Внешне (уже давно) все нормально, но "изнутри" хочется сделать поизящнее.
Вобщем потребительская корзина реализована следующим образом:

Покупатель ходит по прайсу.
Как только он что-либо выбирает создается сессия и MYSQL таблица с именами и ценами товаров.
Можно, конечно писать в сессию, но таблица на мой взгляд удобнее (для рассчетов и вообще).

Как только покупатель проходит последнюю стадию заказа: ему высылается Мэйл и счет на оплату, а таблица товаров для него удаляется.


НО!! Таблица удаляется только в том случае, если покупатель дошел до последней стадии заказа, а если нет - она так и остается.
Места эти "брошенные" таблицы занимают немного, даже если их за месяц соберется сотен пять.
Просто некрасиво как-то получается - хлам всякий хранится.

На данный момент это все решается просто: время от времени захожу на панель хостера, смотрю по дате создания брошенные таблицы и удаляю.
Есть мысль просто запускать через крон раз в месяц ПХП скрипт, который будет удалять ВСЕ такие таблицы-корзины независимо брошенные они или нет.
Работающую в данный момент таблицу вроде бы не получится удалить и будет ошибка (ее можно прибить "@").

Помогите решить все по-красивее.
Пока играет музыка - танцуй...

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Интернет-шоп (корзины)
« Ответ #1 : 07 Марта 2004, 13:59:21 »
Цитировать
Sniper:
Как только он что-либо выбирает создается сессия и MYSQL таблица

для каждой сессии создается новая таблица в mysql ?
Это бред.
Во-первых можно обойтись всего одной таблицей.
Во-вторых если бы ты писал все в сессии - у тебя не было бы проблем с удалением таблицы (поскольку сессия сама удаляется).
Из моего опыта: я всегда корзину через сессию организовывал и все было удобно и никаких проблем с рассчетами не было.
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
Интернет-шоп (корзины)
« Ответ #2 : 07 Марта 2004, 14:39:45 »
Заранее простите за небольшой оффтопик.
[вопрос, который должен был быть в другом топике]

По теме:
Полностью согласен, что создавать отдельные таблицы для каждого заказа - это бред.
Создай таблицу cart с такими полями:
session_id, item_id, quantity ну и ещё другими, какие посчитаешь нужными.
При добавлении товара в корзину, добавляй в эту таблицу записи с идентификатором текущей сессии, идетификатором товара, который юзверь сунул в корзину, и кол-вом этого товара в корзине.
По поводу сбора мусора - используй собственный garbage collector. Ты наверняка уже работал с ним, если использовал [p]session_set_save_handle[/p] для хранения сессий в БД.
Твой гербедж коллектор должен записывать айдишники всех удаленных сессий, а потом удалять из таблицы cart все записи, в которых поле session_id совпадает с идентификатором любой из удаленных сессий.
Оговорюсь, что ишопы я никогда не писал, поэтому на практике такой способ не применял. Если что, пусть меня образумят профи, потому что чует моё сердце - скоро надо будет писать именно ишоп :)
« Последнее редактирование: 07 Марта 2004, 15:18:51 от RomikChef »
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Интернет-шоп (корзины)
« Ответ #3 : 07 Марта 2004, 15:22:02 »
Цитировать
Sniper:
но таблица на мой взгляд удобнее (для рассчетов и вообще).

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

FreeSpace
если не надо хранить корзину между заходами на сайт то делать это в базе бессмысленно

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
Интернет-шоп (корзины)
« Ответ #4 : 07 Марта 2004, 18:00:25 »
[OFF]RomikChef
Рома, ты злой :)
Оффтопик-то был совсем маленький. За пределы темы практически не выходил, если принять за правило хранение корзины в сессии.
Тем более, ты же сам вроде говорил, что здесь не пхпклуб и правила у форума намного мягче. За что мне, честно говоря, этот форум и нравится...
А теперь вот сижу и думаю, не получу ли бан за публичное обсуждение действий модератора :rolleyes:[/OFF]
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Интернет-шоп (корзины)
« Ответ #5 : 08 Марта 2004, 01:15:12 »
нет, конечно.
возьми, да просто задай свой вопрос, который, как я тоже считаю, будет интересне многим, в отдельном топике, не устраивая оффтопик в этом.

Я не злой совсем. Но считаю некультурным устраивать беседу в чужом топике

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28