2015-10-19 3 views
0

Я создаю сценарий корзины покупок для проекта. Тележка уже создана, но теперь я делаю запрос, где продукты из корзины вставляются в таблицу заказов. Но когда я это делаю, каждый продукт получает свой собственный order_id, можно ли каждый товар из корзины одинаково order_id?Хранить несколько значений за один идентификатор

Запрос где продукты вставляются в столе заказов:

function cart() { 
global $query; 
global $query2; 
$total = 0; 
$total2 = 0; 
foreach($_SESSION as $name => $value) { 
    if ($value>0) { 
     if (substr($name, 0, 5)=='cart_') { 
      $id = substr($name, 5, (strlen($name)-5)); 
      $get = mysql_query('SELECT id, partnr, specs, price FROM parts WHERE id='.mysql_real_escape_string($id)); 
      while ($get_row = mysql_fetch_assoc($get)) { 
       $sub = $get_row['price']*$value; 
       echo $get_row['partnr'].' x '.$value.' @ &euro;'.number_format($get_row['price'], 2). ' = &euro;'.number_format($sub, 2).' <a href="cart.php?remove='.$id.'">[-]</a> <a href="cart.php?toevoegen2='.$id.'">[+]</a> <a href="cart.php?delete='.$id.'">[Delete]</a> <br/>'; 
       if(isset($_POST['behandelen'])){ 
        $partnr=$get_row['partnr']; 
        $price=$get_row['price']; 
        $datum=date("Y-m-d H:i:s"); 
        $gebruikersnaam = $_REQUEST['gebruikersnaam']; 
        $query = "UPDATE parts set hoeveelheid = hoeveelheid - '$value' WHERE id = '$id'"; 
        $query2= "INSERT INTO orders(partnr, price, hoeveelheid, betaaldatum)VALUES('$partnr', '$price', '$value', '$datum')"; 
       } 
       mysql_query($query); 
       mysql_query($query2); 

      } 

     } 
     $total += $sub; //totaalprijs exclusief btw 
     $total2 += $sub*1.21; //berekening inclusief btw van 21% 
     $btw = $total2-$total; 
    } 
} 
if ($total==0) { 
    echo "Uw winkelwagen is leeg."; 
} 
else { 
    global $lang; 
    echo $lang['CART_SUBTOTAL'], '&euro;'.number_format($total, 2); echo "<br/>"; 
    echo $lang['CART_BTW'], '&euro;'.number_format($btw, 2); echo "<br/>"; 
    echo $lang['CART_TOTAL'], ' &euro;'.number_format($total2, 2); //prijs inclusief btw wordt weergegeven op de site 
} 


} 

Запрос SQL выглядит следующим образом: query2= "INSERT INTO orders(partnr, price, hoeveelheid, betaaldatum)VALUES('$partnr', '$price', '$value', '$datum')";

Я надеюсь, что кто-то может дать мне совет,

Спасибо заранее!

ответ

2

Ваша база данных настроена неправильно, поэтому у вас есть заказ и заказ имеет элементы. Я бы создал новую таблицу, содержащую сведения о заказе, и текущая таблица действительно должна быть переименована в order_items.

В таблице заказов вы можете добавить информацию о деталях поставки/доставки? Затем будет командный ключ между заказами и order_items.

ie.

Orders (table) 
order_id - primary key - auto increment. 
other_fields.................... 

Order_items (table 2) 
order_item_id - primary key - auto inc 
order_id - foreign key 
details about the order item - e.g quantity 

Это должно указывать на правильное направление.

+0

Спасибо за ваш ответ Ричарда, я буду создавать новую таблицу и отредактируйте существующий. – niekerd

+0

Привет, вы могли бы отметить это как правильно? –

0

Почему бы Вам не добавить столько же продукции на количество продуктов?

Что вы можете сделать - добавить уникальный универсальный идентификатор продукта для каждого уникального продукта, например - зубная паста марки x со спецификациями y и цена z должна иметь тот же универсальный идентификатор продукта. Затем вы можете позволить пользователям добавлять их в корзину.

У тележки будет еще один уникальный идентификатор, и все продукты, хранящиеся в базе данных, будут иметь одинаковый идентификатор корзины. Таким образом, все ваши товары, заказанные или хранящиеся в корзине, будут иметь тот же идентификатор корзины, но другой идентификатор продукта, чтобы вы могли получить всю информацию о продукте.

Вы можете просто сделать this-

(partnr, price, hoeveelheid, betaaldatum, productID, cartID)VALUES 
('$partnr', '$price', '$value', '$datum', someID, anotherID)"; 

Там также должен быть другой таблицей, содержащей всю информацию о корзинах и другая информация о продукте

0

Вы должны вставить только одну новую строку в таблицу заказов. Это вы укажете order_id.

Создайте еще один стол под названием «orders_products». В этой таблице вы вставляете каждый продукт, например:

orders_products_id order_id product_id quantity 
1     5   8   1 
2     5   7   2 
3     5   12   1 

Как вы можете видеть order_id 5, но есть разные продукты на каждой строке.

+0

Эй, ошибочно, какой запрос я должен внести, чтобы вставить элементы в новую таблицу? – niekerd

+0

Это будет mysql_query ("вставить в значения orders_products (orders_products_id, order_id, product_id, количество)" ('', $ order_id ". $ Get_row ['id'].", 1) "); Но помните, что вам нужно сначала определить новый порядок. Таким образом, перед циклом продукты вставляют новую строку в «заказы». а затем напишите: $ order_id = mysql_insert_id(); << это order_id. –

0

Я предлагаю вам создать имя моста «order_items» между вашим заказом и таблицей продуктов с атрибутами, такими как Order_ID, PRODUCT_ID, количество, цена и т.д.

Смежные вопросы