Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mmillers

Envio e recebimento de dados ajax e php

Recommended Posts

Bom dia pessoal,

 

São 1:31 da manhã e venho recorrer a vocês..

eu tenho o seguinte código no <head> da minha página

<script type="text/javascript">
            $(document).ready(function () {
                $('#calcular').click(function () {
                    $.ajax({
                        url: 'gerar_total.php',
                        type: 'POST',
                        data: '&sabor=' + $('#sabor').val() + '&bebida=' + $('#bebida').val() + '&adicional=' + $('#adicional').val(),
                        success: function (data) {
                            $('#resultado').html(data);
                        }
                    });
                })

            });
        </script>

O <body> possue um formulario e este formulario tem uma parte que esta me dando problema, é o seguinte cógido

tenho os inputs que são arrays e tambem possuo scripts para adicionar mais inputs na página caso precise.

            <label>Sabor</label>
        <input type="text" name="sabor[]" required id="sabor" class="p" list="listapizzas" />
        <div id="inputs_pizza" style="border: none"> </div>  
            <input type="button" name="add" value="+  Sabor" />

        <label>Bebida</label>
        <input type="text" name="bebida[]" id="bebida" class="p" list="listabebidas" />
        <div id="inputs_bebida" style="border: none"> </div>  
            <input type="button" name="addb" value="+ Bebida" />
        
        <label>Adicional</label>
        <input type="text" name="adicional[]" id="adicional" class="p" list="listaadicionais" />
        <div id="inputs_adicional" style="border: none"> </div>  
            <input type="button" name="adda" value="+ Adicional" />

		<label style="display: block">
            <input type="button" name="calcular" id="calcular" value="Calcular Total" />
        </label>

note que todos são arrays e embaixo tem o botão de cacular total para que eu envie estes arrays por ajax e devolva o total da soma dos itens. Do outro lado, o lado que recebe eu faço ou tento fazer da seguinte forma

$soma = 0;
$sabor = $_POST['sabor'];
$bebida = $_POST['bebida'];
$adicional = $_POST['adicional'];

for ($i = 0; $i < sizeof($sabor); $i++) {
    if (!empty($sabor[$i])) {
        $ids = explode("-", $sabor[$i]); // o valor vem com id - nome
        $stmt = $conn->query("select valor from pizza where id_pizza=$ids[0]");
        $valor = $stmt->fetch(PDO::FETCH_OBJ);

        if (sizeof($sabor) > 1) {
            $soma += round($valor->valor / $cs);
        } else {
            $soma += $valor->valor;
        }
    }
}
for ($i = 0; $i < sizeof($bebida); $i++) {
    if (!empty($bebida[$i])) {
        $idb = explode("-", $bebida [$i]);
        $stmt = $conn->query("select valor from bebida where id_bebida=$idb[0]");
        $valor = $stmt->fetch(PDO::FETCH_OBJ);
        $soma += $valor->valor;
    }
}

for ($i = 0; $i < sizeof($adicional); $i++) {
    if (!empty($adicional[$i])) {
        $ida = explode("-", $adicional [$i]);
        $stmt = $conn->query("select valor from adicional_pizza where id_adicional=$ida[0]");
        $valor = $stmt->fetch(PDO::FETCH_OBJ);
        $soma += $valor->valor;
    }
}

echo "<input type='text' name='total' id='total' value='$soma' disabled/>";//$soma;

mas eu não consigo enviar os dados e muito menos receber de volta.

Alguém poderia me ajudar a enviar esses arrays para outra pagina php via ajax?

 

Agradecido. Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, vc não pode duplicar IDs, e é desnecessário vc usar ajax nisso.

 

Vc pode fazer todo o cálculo no javascript. Não tem necessidade de ir no php para isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Imprime os dados(valores do banco) no html, antes da página carregar. Ai vc vai ter tudo em mãos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Okay, vai ser muito mais complicado, mas vc quem sabe.

 

Primeira coisa, é q vc não pode duplicar IDs. Então troque:

data: '&sabor=' + $('#sabor').val() + '&bebida=' + $('#bebida').val() + '&adicional=' + $('#adicional').val(),
por

data: $('#id_do_form').serialize(),
E no seu php, vc pode simplificar muito, se extrair para uma função o loop, e simplificar se utilizar um foreach(), afinal é um array.

Vc não precisa do explode ali em cima.

 

Agora, olha o processamento que vc está fazendo.

-> São 3 loops

-> Dentro de cada loop tem uma query ao banco de dados

-> Se vierem 5 linhas, serão 15 consultas ao banco de dados, para cada "conta", que vc quiser fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.