BD sales register

1

Good morning.

I'm doing a sales web app, and I want to return the sales ID to insert into the intermediate product_product table (multiple products in 1 sale). I tried it that way, but obviously I could not:

<?php

$connect = mysqli_connect("localhost", "root", "", "narguile");

$number = count($_POST["input_quantidade_venda"]);

$soma_venda = $_POST['soma_venda'];

$data = $_POST['data'];

$hora = $_POST['hora'];

$sql = "INSERT INTO vendas(preco_venda, data, hora) VALUES";
$sql .= "('$soma_venda', '$data', '$hora')";
mysqli_query($connect, $sql);

$id_venda = "SELECT max(id_venda) FROM vendas";

if($number > 0) {

    for($i=0; $i<$number; $i++) {

        if(trim($_POST["input_quantidade_venda"][$i] != '')) {

            $sql2 = "INSERT INTO venda_produto(quantidade, id_venda) VALUES('".mysqli_real_escape_string($connect, $_POST["input_quantidade_venda"][$i])."', '$id_venda')";
            mysqli_query($connect, $sql2);
        }  
    }

    echo "Venda cadastrada!";  
}  

else {

    echo "Não rolou";  
}
?>

If someone can help, thank you ...

    
asked by anonymous 21.12.2018 / 15:00

2 answers

1

mysqli_insert_id - Returns the automatically generated id in the last query.

Well summarized

if ($result = $connect->query("INSERT INTO vendas(preco_venda, data, hora) VALUES('$soma_venda', '$data', '$hora');")) {
   $id_venda  = $mysqli->insert_id;
}
  

The mysqli_insert_id () function returns the ID generated by a query in a table with a column with the AUTO_INCREMENT attribute. If the last query is not an INSERT or UPDATE statement, or if the modified table does not have a column with the AUTO_INCREMENT attribute, this function returns zero

    
21.12.2018 / 16:34
0

If the ID you use in the vendas table is autoincrementable (property AUTO_INCREMENT active) you can do this:

// ...
$id_venda = mysqli_insert_id($connect);
// ...
$sql2 = "INSERT INTO venda_produto(quantidade, id_venda) VALUES('".mysqli_real_escape_string($connect, $_POST["input_quantidade_venda"][$i])."', '$id_venda')";
mysqli_query($connect, $sql2);
// ...

If it is not, then it might look like this:

// ...
$id_venda = "(SELECT MAX(id_venda) FROM vendas)";
// ...
$sql2 = "INSERT INTO venda_produto(quantidade, id_venda) ";
$sql2 .= "SELECT '".mysqli_real_escape_string($connect, $_POST["input_quantidade_venda"][$i])."', $id_venda";
mysqli_query($connect, $sql2);
// ...

There are more "beautiful" ways of doing what you want, but it depends on whether you want to improve or not:)

    
21.12.2018 / 15:14