Submit of the form is not directing and rapassando the value for the file php

1

I have a problem here with the pass-through when clicking on the submit was to pass to another php file, the values come from a php loop, I tested without the loop going ... more searching for the database of Wordpress bank is not going Do you have any suggestions?

  <script>
        total = 0;
        
        function adiciona(id)
        {
            calcula(id,"adicao");
        }
        
        function remove(id)
        {
            calcula(id,"subtracao");
        }    
            
        function calcula(id,operacao)
        {
                nomeid  = "nome"+id;
                precoid = "preco"+id;
                qtdid   = "qtd"+id;
                
                nome  = document.getElementById(nomeid).innerHTML;
                
                preco = document.getElementById(precoid).innerHTML;    
                preco = parseInt(preco);
                
                qtd   = document.getElementById(qtdid).innerHTML;
                qtd   = parseInt(qtd);

                //Debug
                //alert("Produto: " + nome + "\n Preço: " + preco);    
                
                if(operacao=="adicao")
                {
                    total = total + preco;
                    qtd = qtd + 1;
                }
                else
                {
                    total = total - preco;
                    qtd = qtd - 1;
                }
                
                document.getElementById(qtdid).innerHTML = qtd;
                
                document.getElementById("total").innerHTML = total;
        }    
            
        
    </script>
		
		
		
		 <!-- REPASSA PARA O PHP -->         

		
		
		
		
		<script>
			function verifica_e_envia()
			{
				array_dados = new Array();
			
				colecao = document.getElementsByTagName("tr");
				
				qtd_blocos = colecao.length - 1; // O último tr da tabela é onde fica o total e está sendo descontado
				// É necessário saber a quantidade de blocos para poder usar em um loop catando os valores
				
				// Percorre os blocos catando nomes, quantidades e valores dos produtos com quantidade maior que zero
				for(i=1; i<=qtd_blocos ;i++)
				{
					qtdid = "qtd"+i;
					qtd   = document.getElementById(qtdid).innerHTML;
					qtd   = parseInt(qtd);
					
					if(qtd>0)
					{
						obj_tmp = {};
						
						nomeid = "nome"+i;
						nome   = document.getElementById(nomeid).innerHTML;
						
						precoid = "preco"+i;
						preco   = document.getElementById(precoid).innerHTML;
						preco   = parseInt(preco);

						obj_tmp.nome  = nome;
						obj_tmp.preco = preco;
						obj_tmp.qtd   = qtd;
						obj_tmp.subtotal = qtd*preco;
						
						// adiciona elemento no array de dados que será enviado
						array_dados.push(obj_tmp);
					}
				}
				
				// põe o array_dados no input hidden json_dados
				document.getElementById("json_dados").value = JSON.stringify(array_dados);
				
				// envia o formulário form_pedido_produtos
				document.getElementById("form_pedido_produtos").submit();

			}
		</script>		
  <table>
		
		  <!-- INICIA Bloco gerado por LOOP PHP -->
		
		
 <?php query_posts('showposts=2category_name=gas');?>

<?php if (have_posts()): while (have_posts()) : the_post();?>
                       
			
			 
        <tr>
            <td class="prodtd">

                <div id="nome<?php the_id(); ?>"  class="nomeprod"> <?php the_title(); ?></div>

                <div id="preco<?php the_id(); ?>" class="preco"><?php echo get_post_meta( $post->ID, 'preco', true ); ?></div>

            </td>
            <td align="center" valign="middle">

                <input type="button" value="-" onclick="remove(<?php the_id(); ?>)"> 

                <span id="qtd<?php the_id(); ?>">0</span> 

                <input type="button" value="+" onclick="adiciona(<?php the_id(); ?>)">

            </td>
        </tr>
      
            
<?php endwhile; else:?>
<?php endif;?>
            
 <!-- FINALIZA Bloco gerado por LOOP PHP -->         
           
            
            <tr>
                <td align="center"><b>Total: <span id="total">0<span></b></td>
                <td>&nbsp;</td>
            </tr>
            
        </table>
        
		
		
		  
		
		<form action="http://localhost/soma_total/pedido_produtos.php" method="post" id="form_pedido_produtos">
			<input type="hidden" name="json_dados" id="json_dados">		
			<input type="button" value="Verifica e envia valores" onclick="verifica_e_envia()">
		</form>
    
asked by anonymous 03.01.2017 / 22:45

1 answer

0

Dude I think I know what's going on.

Try the following, instead of using this_id () function, create a variable $ i starting from $ i = 1; and inside the loop you put $ i ++;

It will look like this:

<?php 
$i=1;   // $i começando com 1 aqui
if (have_posts()): while (have_posts()) : the_post();?>     

        <tr>
            <td class="prodtd">

                <div id="nome<?php echo $i; ?>"  class="nomeprod"> <?php the_title(); ?></div>

                <div id="preco<?php echo $i; ?>" class="preco"><?php echo get_post_meta( $post->ID, 'preco', true ); ?></div>

            </td>
            <td align="center" valign="middle">

                <input type="button" value="-" onclick="remove(<?php echo $i; ?>)"> 

                <span id="qtd<?php echo $i; ?>">0</span> 

                <input type="button" value="+" onclick="adiciona(<?php echo $i; ?>)">

            </td>
        </tr>

<?php $i++; ?>


<?php endwhile; else:?>
<?php endif;?>

Explanation: Your javascript is looking for these "ids" and trusting they are sequential (I know this because I helped with this code in another question of yours, hahaha). But they only serve to help collect the data on the page, it does not have to be bank ids, as is what is happening there. Please check it and see if it does.

    
04.01.2017 / 02:01