2015-08-18 4 views
0

У меня проблема с добавлением этого массива в базу данных mysql, кто-то может мне помочь? Я думаю, проблема заключается в том, чтобы идентифицировать идентификатор массива для ввода в базу данных.Как я могу ввести этот массив

<html> 

<title> Registro do Pedido </title> 

<body> 

       <h2> REGISTRE O PEDIDO</h2> 

       <form action="teste1.php" method="post">  
       <p align = "left"> 

        Product 1:<input type="text" name="product1" ></br></br> 
        Quantity:<input type="int" name="quantidade1" ></br></br> 
        price:<input type="text" name="price1" ></br></br> 
        Product 2:<input type="text" name="product2" ></br></br> 
        Quantity:<input type="int" name="quantidade2" ></br></br> 
        price:<input type="text" name="price2" ></br></br> 

        <input type="submit" value="Registrar Pedido"> 


    </body> 

мне нужно добавить для клиента больше, чем один Procut и описать каждое количество и цену, поэтому я могу рассчитать общую цену Как я могу это сделать?

<?php 
$conn = new mysqli("localhost", "root", "", "teste"); 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
$addproduct[1]=array(
    'produto'=> '$_POST[product1]', 
    'quant'=>'$_POST[quantidade1]', 
    'price'=>'$_POST[price1]' 
); 
$addproduct[2]=array(
    'produto'=> '$_POST[product2]', 
    'quant'=>'$_POST[quantidade2]', 
    'price'=>'$_POST[price2]' 
); 
$sql = "INSERT INTO produtos (produto, quantidade, preco) 
VALUES ('$addproduto[][produto]', '$addproduto[][quant]', '$addproduto[][price]')"; 
?> 
+0

Это не то, как вы добавляете несколько строк в 1 запрос. – Bsienn

+0

Как я могу это сделать? Моя проблема в том, что я хочу иметь только один идентификатор и несколько продуктов –

+0

1-й вопрос неясно, что вы хотите, и что это проблема сейчас. Но я упомянул в комментарии, я думаю, я знаю, что вам нужно. я не должен отвечать, но я постараюсь помочь вам в этом. Вам нужно иметь 2 таблицы: отношение «один к многим». С одной таблицей вам просто нужно добавить каждый элемент массива с таким же «идентификатором заказа» с циклом quries. – Bsienn

ответ

0

Прежде всего, чтобы получить общую цену для каждого элемента в массиве, я бы еще один элемент, например, так:

$addproduct[1]=array(
'produto'=> '$_POST[product1]', 
'quant'=>'$_POST[quantidade1]', 
'price'=>'$_POST[price1]', 
'total'=> '$_POST[quantidade1] * $_POST[price1]' 
); 

Другое дело, что я думаю, что вы пытаетесь сделать это вставить это в базу данных, и у вас есть более чем один элемент, так что вам нужно несколько вставить заявление в, например, так:

$sql = "INSERT INTO produtos (produto, quantidade, preco) 
VALUES 
('$addproduto[1][produto]', '$addproduto[1][quant]','$addproduto[1][price]'), 
('$addproduto[2][produto]', '$addproduto[2][quant]', '$addproduto[2][price]')"; 

Я не разработчик PHP, поэтому вам нужно дважды проверить синтаксис на элементах массива, которые я добавил d независимо от того, будет ли это работать и вычислить общее значение для каждого элемента.

1

Этот ответ хорошо масштабируется, если вы хотите, чтобы предложить более 2 записей продукта, например, 3, 4 или 5 продуктов, которые будут добавлены сразу

HTML

<?php $num_products = 2; ?> 

<h2> REGISTRE O PEDIDO</h2> 

<form action="teste1.php" method="post">  
    <p align = "left"> 
     <?php for ($i = 1; $i <= $num_products; $i++) { ?> 
     Product <?php echo $i; ?>:<input type="text" name="product[]" ></br></br> 
     Quantity:<input type="int" name="quantidade[]" ></br></br> 
     Price:<input type="text" name="price[]" ></br></br> 
     <?php } ?> 
     <input type="submit" value="Registrar Pedido"> 
    </p> 
</form> 

PHP

<?php 
    $conn = new mysqli("localhost", "root", "", "teste"); 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 

    $produto = isset($_POST['product']) ? $_POST['product'] : array(); 
    $quant = isset($_POST['quantidade']) ? $_POST['quantidade'] : array(); 
    $price = isset($_POST['price']) ? $_POST['price'] : array(); 

    if (is_array($produto) && count($produto) > 0) { 
     // Create a unique order number 
     $sql = 'INSERT INTO orders SET orderid = NULL, dateadded = NOW()'; 
     mysqli_query($conn, $sql); 
     $orderid = mysqli_insert_id($conn); 

     for ($i = 0, $j = count($produto); $i < $j; $i++) { 
      if (isset($quant[$i]) && isset($price[$i])) { 
       $sql = 'INSERT INTO produtos (orderid, itemid, produto, quantidade, preco) VALUES (' . $orderid . ', NULL, "' . mysql_real_escape_string($produto[$i]) . '", "' . ((int) $quant[$i]) . '", "' . ((float) $price[$i]) . '")'; 
       mysqli_query($conn, $sql); 
      } 
     } 
    } 
?> 

Позже, если вы знаете идентификатор заказа, вы можете получить общую стоимость всего продукта s для этого заказа:

SELECT SUM(preco) FROM produtos WHERE orderid = 123 
Смежные вопросы