Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/07/2015, 16:18
zerobathory
 
Fecha de Ingreso: enero-2012
Mensajes: 55
Antigüedad: 12 años, 10 meses
Puntos: 1
Sumar multiples variables

Hola, buenas tardes, tengo un problema con el que espero puedan ayudarme, estoy generando una aplicacion web, en la cual tengo que sumar multiples variables, el problema es que tecnicamente no se sabe cuantas variables van a ser, puede ser desde una, hasta 10 o mas, ya que se van a sumar precios de refacciones, entonces el usuario añade una refaccion y muestra el precio de esa refaccion, puede agregar tantas refacciones quiera el usuario, y al final todos esos precios se tiene que sumar.

Lo que estoy haciendo es que en input pongo todos los precios con un id, y tengo un input en blanco para que ahi muestre el resultado, los precios de las refacciones los recojo mediante una funcion javascript con getElementById , intentaba hacer mediante un for en javascript recoger todos los id en caso de que existan, pero no se bien como hacerlo, primero pongo la forma en la que se imprimen las refacciones con el precio, eso es en php

Código PHP:
Ver original
  1. <?php
  2. $conref="SELECT * FROM ".$prefijo_tabla."_refacciones INNER JOIN ".$prefijo_tabla."_inventario ON ".$prefijo_tabla."_refacciones.idideninventario=".$prefijo_tabla."_inventario.idinventario WHERE ididentiorden='".$arrorden['idrefaccion']."'";
  3.                                                                       $queryref=$con->query($conref);
  4.                                                                       if($queryref->rowcount() > 0 ){
  5.                                                                        
  6.                                                                                 for($x=1; $x<=$queryref->rowcount(); $x++){
  7.                                                                                         $arrayref=$queryref->fetch(PDO::FETCH_ASSOC);
  8.                                                                                         echo"<tr><td>".$arrayref['nombreinventario']."</td><td><input type='text' readonly='readonly' id='$x' value='".$arrayref['precio']."' class='form-control'></td><td><a href='?v=bor&refaccion=".$arrayref['idrefa']."&prefijo=$prefijo_tabla'>Eliminar</a></td></tr>";
  9.                                                                                 } ?>
  10.                                                                                 <input type="hidden" id="controlador" value="<?php echo $queryref->rowcount(); ?>">
  11.                                                                        
  12.                                                                     <?php   } ?>
  13.  
  14. <tr>
  15.                                 <td>Total</td>
  16.                                 <td><input type="text" class="form-control" readonly="readonly" id="total"></td>
  17.                         </tr>

En el campo oculto que dice "controlador" pongo el numero de refacciones que coloca el usuario, ahora coloco el codigo javascript como pensaba hacerlo:

Código Javascript:
Ver original
  1. function sumarcampos() {
  2.         for (x=0;x<=cont;x++) {
  3.                 var resX=document.getElementById(X).value;
  4.                
  5.         }
  6.                 resf=parseInt(resX) + parseInt(resX);
  7.         document.getElementById("total").value=resf;
  8. }

Dentro del FOR pueden darse cuenta que pongo "resX" y dentro del parentesis una X, esto debido a que pues requiero para la suma que cada valor este en una variable y dentro de el parentesis del getElementById, todos los id son numeros, asi lo quise hacer pero se que no tiene mucha logica que digamos, no se como colar esa variable X del for para que lo tome como "res1", "res2", "res3" etc... y despues hacer que sume todos esos resultados para que ponga en el campo "total" el resultado. Como no se me ocurrio otra forma de hacerlo, quise haerlo asi:

Código Javascript:
Ver original
  1. function sumarcampos() {
  2.         var cont=document.getElementById("controlador");
  3.         var precio1=document.getElementById("1").value;
  4.         var precio3=document.getElementById("2").value;
  5.                 var precio4=document.getElementById("3").value;
  6.                 var precio5=document.getElementById("4").value;
  7.                 var precio6=document.getElementById("5").value;
  8.                 var precio7=document.getElementById("6").value;
  9.         var resf;
  10.         resf= parseInt(precio1)+ parseInt(precio2) + parseInt(precio3) + parseInt(precio4) + parseInt(precio5) + parseInt(precio6) + parseInt(precio7);
  11.         document.getElementById("total").value=resf;
  12. }

Puse tantos "precio" por si el usuario colocaba mas para que los reconociera, yo pense que si no existian, el valor en automatico seria 0 y no los tomaria en cuenta para la suma, pero al intentar hacerlo provoca que no haya resultado, en el entorno de prueba que tengo, solo hay dos refacciones, no he ingresado mas y el codigo del javascript es el siguiente

Código Javascript:
Ver original
  1. function sumarcampos() {
  2.         var cont=document.getElementById("controlador");
  3.         var precio1=document.getElementById("1").value;
  4.         var precio2=document.getElementById("2").value;
  5.         var resf;
  6.         resf= parseInt(precio1)+ parseInt(precio2) ;
  7.         document.getElementById("total").value=resf;
  8. }

El cual si hace la suma de las dos unicas refacciones, pero si coloco una refaccion mas, obviamente solo hace la suma de los dos primeros campos, entonces quisiera si pueden ayudarme con alguna forma de sumar multiples variables con for o while ya que no se sabe cuantas variables van a sumarse exactamente.

Última edición por zerobathory; 27/07/2015 a las 16:27