我怎样才能输入这个数组

时间:2015-08-18 12:50:46

标签: php mysql arrays

我在mysql数据库中添加此数组时有问题,有人可以帮助我吗?我认为问题是要识别要输入数据库的数组的id。

<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>

我需要为客户添加一个以上的产品并描述每个数量和价格,以便我可以计算总价格,我该怎么做?

    <?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]')";
?>

2 个答案:

答案 0 :(得分: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);
            }
        }
    }
?>

如果您知道订单ID,则可以获得该订单的所有产品的总价值:

SELECT SUM(preco) FROM produtos WHERE orderid = 123

答案 1 :(得分: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开发人员,所以你需要仔细检查我添加的数组元素的语法,以及是否可行,并计算每个项目的总值。