How to INSERT this FORM correctly?

Asked

Viewed 128 times

0

Guys, I would like a help to know how to insert this my FORM correctly. The current code that I have works well when there are 1 or 2 products in the order, but with 3 or more it no longer works, besides that when the "Total Value or Unitario " of the order or products is greater than R $ 1000, it falls as 1.0 in the BD. Could you help me ?

main.php:

<form action="pedido.php" method="POST" id="form-send">
            <div id="duplicata">
                <div class="container" id="cabecalho">
                    <br>
                    <header class="cabecalho">
                        <div class="wrap-header">
                            <div class="imagem-header">
                                <img src="imagens/logo_ip.png" alt="Logo Varejão Irmaãos Patrocinio">
                                <h1>Pedidos - Varejão Irmãos Patrocinio</h1>
                            </div>
                            <div class="dados-header">
                                <div id="pedido">
                                    <b>ID do Pedido: </b>
                                    <input id="id-pedido" class="input-div" readonly="true" name="id_pedido">
                                </div>


                                <div id="loja">
                                   <b>Loja:</b> <input type="text" id="loja" name="loja" class="input-div" value="<?php echo $_SESSION['loja']; ?>" readonly="true">
                                </div>

                                <div id="data">
                                    <b>Data: </b>
                                    <input id="data-atual" class="input-div" readonly="true" name="data_atual">
                                </div>
                            </div>

                        </div>
                    </header>
                </div>

                <div class="container" id="fornecedores">

                    <div class="title-padrao">
                        <h1 class="text-center">Fornecedor</h1>
                    </div>

                    <div class="fornecedores-wrap col-lg-12">
                        <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1 select_height text-center"
                             id="div_id_fornecedor">
                            <b>ID:</b>
                            <input id="fornecedor-id" class="font-pop input-div" name="fornecedor_id" readonly="true" required>
                        </div>

                        <div class="col-xs-5 col-sm-5 col-md-5 col-lg-8 select_height" id="div_fornecedores">
                            <!-- selectpicker é o elemento que coloca o input e o select juntos -->

                            <b id="text-fornecedor">Selecione um fornecedor:</b>
                            <select class="selectpicker form-control" data-show-subtext="false"
                                    data-live-search="true"
                                    name="select_fornecedor" id="select_fornecedor"
                                    onchange="initFornecedores()" required>
                                <?php
                                echo '<option disabled selected hidden value="Selecione um fornecedor..." data-subtext="Selecione um fornecedor...">Selecione um fornecedor...</option>';


                                foreach ($result1 as $item_fornecedores) {
                                    echo '<option data-subtext="' . $item_fornecedores['nome'] . '" value="'
                                        . $item_fornecedores['nome'] . '">' . $item_fornecedores['nome'] . '</option>';
                                }
                                ?>
                            </select>
                            <input type="text" name="fornecedor_new_input" id="fornecedor_new_input"
                                   style="display: none" placeholder="Digite o nome do Fornecedor...">
                            <input type="checkbox" id="change_fornecedor" name="change_fornecedor"
                                   value="Fornecedor não cadastrado">&nbsp;
                            <label for="change_fornecedor" id="checkbox-fornecedor-text">Fornecedor
                                não cadastrado</label>
                        </div>
                        <div class="col-xs-5 col-sm-5 col-md-5 col-lg-3 text-center select_height"
                             id="div_cnpj_fornecedor">
                            <b>CNPJ</b>
                            <input name="cnpj" minlength="12" maxlength="14" class="font-pop" id="cnpj" value="00.000.000/0000-00" required>
                        </div>
                    </div>
                </div>

                <div class="container" id="produtos">
                    <div class="separator"></div>

                    <div class="title-padrao">
                        <h1 class="text-center">
                            Produtos
                        </h1>
                    </div>

                    <div id="allProducts">
                        <div class="produtos-wrap" name="produtos-wrap"> <!---- DIV A SER CLONADA / ADICIONADA !---->
                            <div class=" text-center select_height primeira">
                                <b>Item:</b>
                                <br>
                                <input type="text" class="index font-pop input-div" id="index_produto"
                                       name="index_produto[]" value="1" readonly="true" required>
                            </div>

                            <div class="text-center select_height segunda">
                                <b>ID:</b>
                                <br>
                                <input class="font-pop number_id_produto input-div" value="" readonly="true"
                                       name="id_produto[]" required>
                            </div>

                            <div class="select-produto select_height terceira">
                                <b>Selecione um produto:</b>
                                <select class="selectpicker form-control" data-show-subtext="false"
                                        data-live-search="true" name="select_produtos[]" id="select_produtos"
                                        onchange="initProdutos(this)" required>
                                    <?php

                                    echo '<option disabled selected hidden value="Selecione um produto..." data-subtext="Selecione um produto...">Selecione um produto...</option>';

                                    foreach ($result2 as $item_produtos) {
                                        echo '<option data-subtext="' . $item_produtos['desc_produto'] . '" value="'
                                            . $item_produtos['desc_produto'] . '">' . $item_produtos['desc_produto'] . '</option>';
                                    }
                                    ?>
                                </select>

                            </div>

                            <div class="text-center select_height quarta">
                                <b>Embalagem:</b>
                                <br>
                                <input type="text" maxlength="2" class="edit-input font-pop" name="embalagem[]"
                                       value="" required>
                            </div>

                            <div class="text-center select_height quinta">
                                <b>Preço:</b>
                                <br>
                                <input type="number" id="preco-input" name="preco[]"
                                       oninput="this.value = Math.abs(this.value)" min="0" class="edit-input font-pop"
                                       value="" required>
                            </div>

                            <div class="text-center select_height sexta">
                                <b>Quantidade:</b>
                                <br>
                                <input type="number" id="qtd-input" oninput="this.value = Math.abs(this.value)" min="0"
                                       class="edit-input font-pop"
                                       value="" name="quantidade-produto[]" required>
                            </div>

                            <div class="text-center select_height text-right setima">
                                <b>Preço do Produto:</b>
                                <br>
                                <input class="font-pop preco-produto input-div" readonly="true" name="preco-produto[]" required>
                            </div>

                            <div class="text-center select_height oitava" id="div-remove">
                                <button type="button"
                                        class="remover glyphicon glyphicon-remove button-produto">
                                </button>
                            </div>
                        </div>
                    </div>
                    <div id="wrap-addbutton">
                        <button type="button" id="add-button" class="glyphicon glyphicon-plus-sign button-produto"></button>
                        <b>Adicione um produto...</b>
                    </div>
                </div>

                <div class="container" id="produto-total">
                    <div class="col-lg-12">
                        <div class="assinatura col-lg-9">
                            <div id="wrap-assinatura" class="text-center">
                                <div id="assinatura"></div>
                                <b>Assinatura</b>
                            </div>
                        </div>

                        <div class="preco-final col-lg-12 text-right">
                            <b>Preço Total:</b>
                            <br>
                            <input id="total" readonly="true" name="total_pedido" class="text-right input-div"
                                   value="R$ 0,00" required>
                        </div>
                    </div>
                </div>

                <div class="container" id="envia-formulario">

                    <input onclick="segundaVia()" type="button" id="segunda-via" value="Concluir Pedido"
                           data-toggle="modal" data-target="#myModal">

                    <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
                        <div class="modal-dialog" role="document">
                            <div class="modal-content">
                                <div class="modal-header">
                                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
                                                aria-hidden="true">&times;</span></button>
                                    <h4 class="modal-title" id="myModalLabel">Confirmação de Pedido</h4>
                                </div>
                                <div class="modal-body">
                                    <p>Deseja concluir o pedido ?</p>
                                </div>
                                <div class="modal-footer">
                                    <button type="submit" class="btn btn-success" name="enviar" id="enviar-button"
                                            onclick="imprimir();document.getElementById('form-send').submit();">Concluir
                                    </button>
                                    <button type="button" class="btn btn-danger" id="cancelarVia" onclick="cancelaVia();" data-dismiss="modal">Cancelar</button>
                                </div>
                            </div>
                        </div>
                    </div>

                </div>
            </div>
        </form>

php request.:

<?php
include 'verifica_login.php';
include 'conexao.php';
error_reporting(E_ERROR);
header('Content-Type: text/html; charset=utf-8');

# Inclusão do Pedido

$id_fornecedor = $_POST['fornecedor_id'];
$nome_fornecedor = $_POST['select_fornecedor'];
$nome_input_fornecedor = $_POST['fornecedor_new_input'];
$cnpj = str_replace(".", "", str_replace("/", "", str_replace("-", "", $_POST['cnpj'])));
$valor_total = floatval(substr(str_replace("R$", "", str_replace(",", ".", $_POST['total_pedido'])), 2));
$gerente_fiscal = trim($_SESSION['nome']);
$loja = trim($_POST['loja']);


if (isset($_POST['change_fornecedor'])) {
    $sql = "INSERT INTO pedido(nome_gerente_fiscal, id_fornecedor, nome_fornecedor, cnpj, data, valor_total, loja) VALUES ('$gerente_fiscal', '$id_fornecedor', '$nome_input_fornecedor','$cnpj', NOW(), '$valor_total', '$loja')";
    if (!$connect->query($sql) === true) {
        die("Erro na inserção de pedido: " . $sql . "<br>" . $connect->error);
    }
} else if(!isset($_POST['change_fornecedor'])) {
    $sql = "INSERT INTO pedido(nome_gerente_fiscal, id_fornecedor, nome_fornecedor, cnpj, data, valor_total, loja) VALUES ('$gerente_fiscal', '$id_fornecedor', '$nome_fornecedor', '$cnpj', NOW(), '$valor_total', '$loja')";
    if (!$connect->query($sql) === true) {
        die("Erro na inserção de pedido: " . $sql . "<br>" . $connect->error);
    }
}

# Inserção de Itens de Pedido
$id_pedido = $connect->insert_id;
$qtd_itens = sizeof($_POST['index_produto']);
for ($i=0; $i < $qtd_itens; $i++) {
    # Variáveis

    $item = $_POST['index_produto'][$i];
    $id_produto = $_POST['id_produto'][$i];
    $desc_produto = $_POST['select_produtos'][$i];
    $quantidade = $_POST['quantidade-produto'][$i];
    $valor_un = $_POST['preco'][$i];
    $valor_produto = floatval(substr(str_replace("R$", "", str_replace(",", ".", $_POST['preco-produto'][$i])), 2));

    # Insert de Dados

    $query = "INSERT INTO pedido_item VALUES ('{$id_pedido}', '{$item}', '{$id_produto}', '{$desc_produto}', '{$quantidade}', '{$valor_un}', '{$valor_produto}')";
    if (!$connect->query($query) === true) {
        die("Erro na inserção de itens: " . $query . "<br>" . $connect->error);
    }
}

header('Location: principal.php');

As requested, the print’s of the tables in the Database.

Table Request: inserir a descrição da imagem aqui

Table Pedido_item: inserir a descrição da imagem aqui

  • How’s your chart in the comic book? Could you post ?

  • I will edit the question with the table prints.

  • Just a hint: if in if you already have isset($_POST['change_fornecedor']), That means when you get to else you guarantee !isset($_POST['change_fornecedor']). Therefore, your else-if in if (isset($_POST['change_fornecedor']) { ... } else if (!isset($_POST['change_fornecedor'])) { is redundant

  • Previously I was as just else, I put this if only for a test and forgot to take it. But thank you so much for the remark.

  • In your Internet to the bank the "R$" goes along with the amount?

  • No, I remove the space and the R$ in the function str_replace in the variable $valor_total before sending.

  • Right, see that your input generates an automatic value, take that value and try again.

  • I withdrew and the total value continued the same way, I tested as 1,500.00 and arrived at the Bank as 1.50

Show 3 more comments

1 answer

0

Hello Leo, good afternoon. Check these values before entering them into the bank (use var_dump($_POST), leaving the script next with the function exit()). If they’re correct, then it’s probably the function you use to format the value that might be in trouble.

  • And in question of INSERT going duplicated according to the amount of products I put ? What can be ?

Browser other questions tagged

You are not signed in. Login or sign up in order to post.