Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: serialize добавление записей
Покинул форум
Сообщений всего: 9
Дата рег-ции: Сент. 2012
Помог: 0 раз(а)
Такс... Ребят есть интернет магазин , пользователь заказывает товар под логином и паролем, так вот при клике на товар "в корзину" то id-товара и кол-во товара уходят в таблицу БД zakaz, при помощи serialize.
теперь задача такая, как мне обновить данные в таблице?
допустим там уже есть
тетрадь - 10 штук
ручки 5 шт.
и хочу добавить папку 3 шт. то есть новую позицию, а как это сделать? как добавить кол-во того что уже есть в таблице я знаю но как продолжить уже существующую запись не знаю(
Alho
Отправлено: 22 Сентября, 2012 - 13:08:13
Посетитель
Покинул форум
Сообщений всего: 322
Дата рег-ции: Апр. 2012
Помог: 11 раз(а)
Я правильно понял что вы засовываете все товары в одну ячейку?
Если это так, то это неверное и медленное решение. Это реализуется с помощью таблицы со связью "многие-ко-многим". Т.е. просто для каждого пользователя+наименования товара создается своя запись.
Юсуф
Отправлено: 22 Сентября, 2012 - 13:12:16
Новичок
Покинул форум
Сообщений всего: 9
Дата рег-ции: Сент. 2012
Помог: 0 раз(а)
ну как бы да! ну вот смотрите вот структура таблицы
|id| user | tovar | summa |
-------------------------------- --
id - это ясно что
user - это тот кто заказывает
tovar - список всех товаров которые он заказал то есть там только id товара и кол-во заказа
summa - общая сумма заказа
вы это имеете ввиду что долго и не хорошо?
Alho
Отправлено: 22 Сентября, 2012 - 13:20:57
Посетитель
Покинул форум
Сообщений всего: 322
Дата рег-ции: Апр. 2012
Помог: 11 раз(а)
Я бы сделал такую таблицу:
|id| user | idtovar | amount |
1 1 110 5
2 2 10 1
3 1 10 18
idtovar - id позиции
amount - заказанное количество
Название и цену не имеет смысла здесь хранить - получите это из таблицы товаров.
Юсуф
Отправлено: 22 Сентября, 2012 - 13:23:20
Новичок
Покинул форум
Сообщений всего: 9
Дата рег-ции: Сент. 2012
Помог: 0 раз(а)
а если у него 200 позиций заказано и плюс еще 100 покупателей то это где то 30000 строк в таблице не многовато ли?
Мелкий
Отправлено: 22 Сентября, 2012 - 13:43:08
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Alho пишет:
Название и цену не имеет смысла здесь хранить
Ещё как имеет. Цены имеют обыкновение меняться, а в истории должна отражаться цена на тот момент.
Юсуф пишет:
не многовато ли?
Вот лямов 100 записей - можно потихоньку начинать думать. Если вас пугают смехотворные 30тыс. - то до такого уровня эта разработка не доживёт, будет переписана раньше. (Добавление)
И удобнее будет всё же отдельная таблица заказов - реквизиты, id заказа и прочее и отдельная таблица товаров в заказе - id_заказа, id_товара (PK на оба поля), количество, цена
----- PostgreSQL DBA
Юсуф
Отправлено: 22 Сентября, 2012 - 14:23:00
Новичок
Покинул форум
Сообщений всего: 9
Дата рег-ции: Сент. 2012
Помог: 0 раз(а)
спасибо ребят понял ваши советы, так и сделаю
Юсуф
Отправлено: 22 Сентября, 2012 - 16:41:32
Новичок
Покинул форум
Сообщений всего: 9
Дата рег-ции: Сент. 2012
ord_number - это номер заказа (AUTO_INCREMENT)
order_user - это Логин заказчика
order_date - дата заказа
order_sum - сумма заказа
таблица tovar (таблица где храниться весь товар)
| tov_id| tov_name| tov_count| tov_cena|
-------------------------------- -----------------
Тут особо нечего объяснять. далее
таблица order_connectivity (таблица связь многие ко многим)
| con_id | con_order | con_goods | con_amount | con_count |
-------------------------------- -------------------------------- ---------
con_id - (AUTO_INCREMENT)
con_order - номер заказа связь с таблицей order_info
con_goods - id товара связь с таблицей tovar
con_amount - кол-во заказанного товара
con_count - цена за товар
теперь хотелось бы знать как мне составить запрос к БД то есть отправить заказ в БД с помощью INSERT может кто примерно напишит?
Саныч
Отправлено: 22 Сентября, 2012 - 17:17:00
Участник
Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010 Откуда: Украина, Запорожье
Помог: 62 раз(а)
Юсуф, я бы так сделал. Схему базы прикрепил. Немного опишу таблицы.
Users - думаю понятно что.
Products - товары. title - название, price - цена, count - количество в наличии.
Basket - корзина товаров. Связи с пользователем и продуктом, и количесто в корзине.
Orders - заказы пользователей. id заказа, пользователь, дата заказа и его статус.
Order_products - продукты в заказе. Связи с заказом и продуктом, количество продукта и цена по которой он был заказан.
При добавлении товара в корзину, пишим в таблицу basket. Как только пользователь решится и оформит заказ, создаем заказ в таблице orders, добавляем товары в таблицу order_products, удаляем данные из таблицы basket. Плюс, уменьшаем значение count в таблице products. Это количество заказного товара пользователем.
Ну вот как-то так. Прикреплено изображение (Нажмите для увеличения)
----- Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
Юсуф
Отправлено: 22 Сентября, 2012 - 17:29:44
Новичок
Покинул форум
Сообщений всего: 9
Дата рег-ции: Сент. 2012
Помог: 0 раз(а)
тоже вариант, но я попробую сначала свой вариант протолкнуть посмотрим что из этого получится, если что то твой совет возьму за решение!
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.