SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 21.06.2010 14:35:46

mishko_o
Участник
Зарегистрирован: 21.06.2010
Сообщений: 4

Правильная структура таблиц

Здравствуйте. Делаю базу данных для интернет-магазина, пользователь которого выбирает нужный товар, кладет его в корзину, далее нажимает кнопку сформировать заказ, после чего заказ улетает на какой-нибудь e-mail. Есть таблица корзины:
basket
id_user
id_tovar
counts
date_add

Когда пользователь формирует заказ данные копируются в отдельные таблицы заказа:
orders
id_order
id_user
code
date_form

и

order_tovar
id_order
id_tovar
counts

Правильное ли такое построение таблиц? Оптимально ли оно? Как я понял в заказах не обойтись одной таблицей. Очень нужен Ваш комментарий. Спасибо.

Неактивен

 

#2 21.06.2010 15:34:58

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Правильная структура таблиц

Выглядит вполне разумно. Если делаете отдельную табличку с корзиной, имеет смысл
не включать туда id_user, а включить номер cookie и время протухания, а не добавле-
ния. Если магазин позволяет сначала набрать корзину, а потом уже заполнять данные,
это выглядит куда привлекательнее. Ну и, как вариант, можно сделать две таблицы
для корзины (полная аналогия с orders) — тогда протухать будет корзина целиком, а
не отдельные вещи в ней smile

Неактивен

 

#3 23.06.2010 15:48:39

mishko_o
Участник
Зарегистрирован: 21.06.2010
Сообщений: 4

Re: Правильная структура таблиц

Чтобы не создавать новую тему, спрошу здесь.
Возникла проблема с запросами БД. Человек добавляет товары в корзину(2-3 разных товара), далее нажимает сформировать заказ, и попадает на страницу подтверждения заказа, где будут списком все выбранные товары. в таблицу заказа все данные добавляются, в таблицу order_wear добавляется только один из выбранных пользователем товаров. Как решить проблему?

Фрагмент кода страницы "корзина":


 if(isset($_GET['showorder']))
  {
    $sql="INSERT INTO orders(id_user, code, date_form) VALUES ($_SESSION[id], '112233', NOW())";
    $rez=mysql_query($sql);
    $sql="SELECT LAST_INSERT_ID()";
    $rez=mysql_query($sql);
    $id_order=mysql_result($rez, 0);
    $sql="INSERT INTO order_wear(id_order, id_wear, counts) VALUES ($id_order, $basket[id_wear], $basket[counts])";
    $rez=mysql_query($sql);
    echo "<script>location.replace('../orders/showorder.php?id=$id_order')</script>";
}
 



И вывод на странице showorder

$sql2="SELECT wear.wear_name, wear.id_wear, orders.id_order, order_wear.id_wear, order_wear.id_order FROM wear, orders, order_wear WHERE wear.id_wear=order_wear.id_wear AND order_wear.id_order=orders.id_order AND orders.id_order=$_GET[id]";
       $rez2=mysql_query($sql2);
         while($order_wear=mysql_fetch_array($rez2))
        {
      echo "<div style='margin-top: 0px; font-size: 0.9em;'>$order_wear[wear_name]</div>";
     }
 

Отредактированно mishko_o (23.06.2010 15:54:26)

Неактивен

 

#4 23.06.2010 15:59:39

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Правильная структура таблиц

Копировать данные лучше таки INSERT INTO … SELECT ….
insert_id правильно получать через mysql_insert_id().
Ну и вопросы по PHP нужно задавать на webew.ru wink

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson