Foros del Web » Programación web » PHP »

php sumar input text con variable sin hacer submit

Estas en el tema de php sumar input text con variable sin hacer submit en el foro de PHP en Foros del Web. Hola amigos. Estoy haciendo una hoja de nómina y tengo un input text en donde pido el numero de dias trabajados. Luego que se agregue ...
  #1 (permalink)  
Antiguo 06/12/2011, 23:44
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 843
Antigüedad: 6 años, 4 meses
Puntos: 15
Información php sumar input text con variable sin hacer submit

Hola amigos. Estoy haciendo una hoja de nómina y tengo un input text en donde pido el numero de dias trabajados. Luego que se agregue ese dato debo multiplicarlo con el sueldo diario que es una variable php para mostrarlo en otro input text. La cuestión es que no se como tomar ese dato de los días sin hacer submit.

Este es mi código:

Código PHP:
Ver original
  1. <form action="nomina.php" method="post" >
  2.  <table width="750" border="0" class="tabla2">
  3.     <tr>
  4.      <td colspan="5" class="td2" bgcolor="#95bce2">UNIDAD EDUCATIVA</td>
  5.      </tr>
  6.         <tr>
  7.           <td colspan="5">NOMINA PARA EL PAGO DE SUELDOS EMPLEADOS</td>
  8.         </tr>
  9.         <tr>
  10.           <td width="7%">Desde:</td>
  11.           <td width="15%">&nbsp;</td>
  12.           <td width="7%">Hasta:</td>
  13.           <td width="16%">&nbsp;</td>
  14.           <td>&nbsp;</td>
  15.           </tr>
  16.       </table>
  17.       <br />
  18.   <table width="750" border="1"  bordercolor="#95bce2"  class="tabla3">
  19.     <tr bgcolor="#95bce2 ">
  20.     <td>Nº</td>
  21.     <td>CI</td>
  22.     <td>APELLIDOS</td>
  23.     <td>NOMBRES</td>
  24.     <td>DIAS</td>
  25.     <td>SUELDO BÁSICO</td>
  26.     <td>SUELDO B. QUINCENA</td>
  27.     <td>IVSS</td>
  28.     <td>PARO FORSOZO</td>
  29.     <td>LPH</td>
  30.     <td>OTROS INGRESOS</td>
  31.     <td>OTROS DESCUENT</td>
  32.     <td>TOTAL DEDUCCIONES</td>
  33.     <td>TOTAL DEVENGADO</td>
  34.   </tr>
  35.   <?php
  36. $rs = mysql_query("SELECT * FROM empleados ORDER BY id_empleado ASC");
  37.  
  38. while ($result = mysql_fetch_array($rs)) {
  39.     $id_empleado = $result['id_empleado'];
  40.     $ci = $result['ci'];
  41.     $pnombre = $result['pnombre'];
  42.     $snombre = $result['snombre'];
  43.     $papellido = $result['papellido'];
  44.     $sapellido = $result['sapellido'];
  45.     $cargo = $result['cargo'];
  46.     $sueldo_basico = $result['sueldo_basico'];
  47.  
  48.     //$sueldo_quin = number_format(($sueldo_basico*$dias),2,'.','');
  49.     $ivss = number_format(($sueldo_basico*4/100),2,'.','');
  50.     $paro_for = number_format(($sueldo_basico*0.5/100),2,'.','');
  51.     $lph = number_format(($sueldo_basico*1/100),2,'.','');
  52.     $sueldo_diario = number_format(($sueldo_basico/30),2,'.','');
  53.  
  54.     echo "
  55.  <tr>
  56.    <td>$id_empleado</td>
  57.     <td>$ci</td>
  58.    <td>$papellido $sapellido</td>
  59.    <td>$pnombre $snombre</td>
  60.    <td><input name=\"dias\" type=\"text\" id=\"dias\" size=\"2\" /></td>
  61.    <td>$sueldo_basico</td>
  62.    <td><input name=\"sueldo_quinc\" type=\"text\" id=\"sueldo_quinc\" size=\"5\" /></td>
  63.    <td>$ivss</td>
  64.    <td>$paro_for</td>
  65.    <td>$lph</td>
  66.    <td><input name=\"otros_ing\" type=\"text\" id=\"otros_ing\" size=\"5\" /></td>
  67.    <td><input name=\"otros_desc\" type=\"text\" id=\"otros_desc\" size=\"5\" /></td>
  68.    <td></td>
  69.    <td>&nbsp;</td>
  70.  </tr>";
  71.     }
  72.        
  73. mysql_close($conn);
  74.   ?>
  75.   <tr>
  76.     <td></td>
  77.     <td></td>
  78.     <td></td>
  79.     <td></td>
  80.     <td></td>
  81.     <td></td>
  82.     <td></td>
  83.     <td></td>
  84.     <td></td>
  85.     <td></td>
  86.     <td></td>
  87.     <td></td>
  88.     <td>TOTAL</td>
  89.     <td></td>
  90.   </tr>
  91. </table>
  92. </form>

Lo que quiero mostrar es
$sueldo_quin = number_format(($sueldo_basico*dias),2,'.','');
pero no se como.

Gracias
__________________
Caminando con el corazón partío
  #2 (permalink)  
Antiguo 06/12/2011, 23:56
Avatar de Triby
Foto-mod
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.013
Antigüedad: 6 años, 4 meses
Puntos: 1951
Respuesta: php sumar input text con variable sin hacer submit

Sólo con PHP no es posible hacerlo, debes recurrir a Javascript y/o AJAX, un ejemplo básico con javascript:

Código PHP:
Ver original
  1. <script type="text/javascript">
  2. // dias es el total de días trabajados
  3. // campo es la id del input text que se debe actualizar
  4. function calcula(dias, campo) {
  5.     sueldo = <?php echo $sueldo_basico; ?>;
  6.     // Va sin formato, eso tendrás que preguntarlo en el foro de Javascript
  7.     document.getElementById(campo).value = dias * sueldo;
  8. }
  9. </script>
  10.  
  11. <form bla bla bla>
  12. Días: <input type="text" name="dias" value="" onblur="calcula(this.value, 'total');" /><br />
  13. Total a pagar: <input type="text" name="total" id="total" value="" readonly="readonly" />
  14. </form>

Notas:
- onblur ejecuta la función para calcular cuando el campo dias pierde el foco
- calcula() recibe los días y la ID del campo que debe actualizar
- El input total debe tener ID, el name es sólo por consistencia
- El atributo readonly es para que el usuario no pueda modificar el valor manualmente
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 07/12/2011, 02:12
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 3 años, 4 meses
Puntos: 37
Respuesta: php sumar input text con variable sin hacer submit

Una solución bastante sencilla es generar una variable de javascript con el valor deseado desde PHP. Ya después puedes usar ese valor para calcular con javascript del lado del cliente. Ejemplo:

Suponiendo que tu variable PHP se llama $variable, pones en el <head> de tu página lo siguiente:

<?='<script lang="javascript">var mivariable='.$variable.';</script>'?>

De esta forma pasas el valor de tu $variable PHP a una variable de javascript llamada mivariable, que va a estar disponible del lado del cliente, para poder usarla en el cálculo con javascript. Saludos.
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.
  #4 (permalink)  
Antiguo 07/12/2011, 13:11
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 843
Antigüedad: 6 años, 4 meses
Puntos: 15
Respuesta: php sumar input text con variable sin hacer submit

Gracias a los dos pero no he podido solucionarlo.

Triby intenté hacerlo como me indicas y después de estudiar DHTML lo coloqué asi:

Código Javascript:
Ver original
  1. function calcula(dias, sueldo_quinc) {
  2.         sueldo = <?php echo $sueldo_diario; ?>;
  3.         // Va sin formato, eso tendrás que preguntarlo en el foro de Javascript
  4.         document.getElementById('sueldo_quinc').value = dias * sueldo;
  5.     }

y en el html:

Código PHP:
Ver original
  1. <td><input name=\"dias\" type=\"text\" id=\"dias\" size=\"2\" value=\"\" onblur=\"calcula(this.value, 'sueldo_quinc');\"/></td>
  2.    <td>$sueldo_basico</td>
  3.    <td><input name=\"sueldo_quinc\" type=\"text\" id=\"sueldo_quinc\" size=\"5\" value=\"\" readonly=\"readonly\"/></td>

pero nada sucede.

No entiendo...
__________________
Caminando con el corazón partío
  #5 (permalink)  
Antiguo 07/12/2011, 14:42
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 3 años, 4 meses
Puntos: 37
Respuesta: php sumar input text con variable sin hacer submit

Hola.

Hacer esto:

sueldo = <?php echo $sueldo_diario; ?>;

Dentro de las etiquetas <script> no va a funcionar. Ya yo lo he probado varias veces.

Tienes que poner esa linea entre sus propias etiqutas <script> y fuera de las etiquetas <script> donde está el resto del javascript. Ah y muy importante, tienes que generar las etiquetas <script> desde PHP junto con la variable, si no, nada de nada. El problema es que no puedes poner salida de PHP entre etiquetas <script>, entonces las generas junto con la variable y las pones en el HMTL. Debe funcionar así:

Código HTML:
Ver original
  1. <?PHP echo '<script>var sueldo ='. $sueldo_diario.';</script>'; ?>
  2. //Este es el resto de tu codigo javascript

De esta forma el resultado te queda así:

Código HTML:
Ver original
  1. <script>var sueldo=100;</script>
  2. //Este es el resto de tu codigo javascript

Otra posible solución es que generes desde PHP un INPUT de tipo Hidden con el valor del sueldo dentro del formulario y después lo usas para calcular con javascript

Saludos.
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.

Última edición por jorgelpadronb; 07/12/2011 a las 14:48
  #6 (permalink)  
Antiguo 07/12/2011, 14:52
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 843
Antigüedad: 6 años, 4 meses
Puntos: 15
Respuesta: php sumar input text con variable sin hacer submit

Muchas gracias jorgelpadronb funciona perfectamente!!!. El único problema que se me presenta ahora es que cuando voy al siguiente empleado ya no me lo calcula. Lo que pasa es que la tabla se llena con una consulta a mysql.

Que debo hacer en este caso?
__________________
Caminando con el corazón partío
  #7 (permalink)  
Antiguo 07/12/2011, 15:14
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 3 años, 4 meses
Puntos: 37
Respuesta: php sumar input text con variable sin hacer submit

Tambien puedes generar un array de javascript desde el bucle PHP donde recorres la consulta.

Un ejemplo:

Código PHP:
Ver original
  1. echo '<script>var sueldo= new Array()';
  2. $i=0;
  3. while($row = mysql_fetch_array($resultado)){
  4.       $i++;
  5.       echo 'sueldo['.$i.']='.$row['Campo_Sueldo'].';';
  6. }
  7. echo '</script>';

Esto te genera un array javascript con los sueldos de toda la consulta. El problema es insertarlo de forma coherente dentro de tu código, de forma que funcione. Eso ya depende de como tengas acomodado el código. Recuerda que las etiquetas <script> que estás generando deben ir en el <head>, por tanto es probable que tengas que hacer una consulta exclusivamente para generar el array en el <head> de la página.

Pruebalo a ver...
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.

Última edición por jorgelpadronb; 07/12/2011 a las 15:21
  #8 (permalink)  
Antiguo 07/12/2011, 18:21
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 843
Antigüedad: 6 años, 4 meses
Puntos: 15
Respuesta: php sumar input text con variable sin hacer submit

La verdad es que no se como colocarlo porque la variable $sueldo_diario viene de:

$sueldo_diario = number_format(($sueldo_basico/30),2,'.','');

es decir no está en un campo sino que está compuesta de el resultado del campo sueldo_basico y la operacion matemática.

Entonces no tengo ni idea de como usar el ciclo javascript que me indicaste.

No logro ver como encaja en mi código...
__________________
Caminando con el corazón partío
  #9 (permalink)  
Antiguo 07/12/2011, 20:38
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 3 años, 4 meses
Puntos: 37
Respuesta: php sumar input text con variable sin hacer submit

Mira a ver si esto te resuelve. No lo he probado, puede tener algún errorsito. Pruébalo:

Código HTML:
Ver original
  1. <!-------------Esto va en el HEAD de la página-------------------------->
  2. <script langueje="javascript">
  3.   function Calcular(id){
  4.      dias = document.getElementById('dias'+id).value;
  5.      sueldo_basico = document.getElementById('sueldo_basico'+id).value;
  6.      sueldo_quinc = document.getElementById('sueldo_quinc'+id);
  7.      sueldo = sueldo_basico * dias;
  8.      sueldo_quinc.value = sueldo;
  9.   }
  10. <!---------------------------------------------------------------------->
  11. <form action="nomina.php" method="post" >
  12.  <table width="750" border="0" class="tabla2">
  13.     <tr>
  14.      <td colspan="5" class="td2" bgcolor="#95bce2">UNIDAD EDUCATIVA</td>
  15.      </tr>
  16.         <tr>
  17.           <td colspan="5">NOMINA PARA EL PAGO DE SUELDOS EMPLEADOS</td>
  18.         </tr>
  19.         <tr>
  20.           <td width="7%">Desde:</td>
  21.           <td width="15%">&nbsp;</td>
  22.           <td width="7%">Hasta:</td>
  23.           <td width="16%">&nbsp;</td>
  24.           <td>&nbsp;</td>
  25.           </tr>
  26.       </table>
  27.       <br />
  28.   <table width="750" border="1"  bordercolor="#95bce2"  class="tabla3">
  29.     <tr bgcolor="#95bce2 ">
  30.     <td></td>
  31.     <td>CI</td>
  32.     <td>APELLIDOS</td>
  33.     <td>NOMBRES</td>
  34.     <td>DIAS</td>
  35.     <td>SUELDO BÁSICO</td>
  36.     <td>SUELDO B. QUINCENA</td>
  37.     <td>IVSS</td>
  38.     <td>PARO FORSOZO</td>
  39.     <td>LPH</td>
  40.     <td>OTROS INGRESOS</td>
  41.     <td>OTROS DESCUENT</td>
  42.     <td>TOTAL DEDUCCIONES</td>
  43.     <td>TOTAL DEVENGADO</td>
  44.   </tr>
  45.   <?php
  46. $rs = mysql_query("SELECT * FROM empleados ORDER BY id_empleado ASC");
  47. $i=0;
  48. while ($result = mysql_fetch_array($rs)) {
  49.    $i++;
  50.    $id_empleado = $result['id_empleado'];
  51.    $ci = $result['ci'];
  52.    $pnombre = $result['pnombre'];
  53.    $snombre = $result['snombre'];
  54.    $papellido = $result['papellido'];
  55.    $sapellido = $result['sapellido'];
  56.    $cargo = $result['cargo'];
  57.    $sueldo_basico = $result['sueldo_basico'];
  58.  
  59.    //$sueldo_quin = number_format(($sueldo_basico*$dias),2,'.','');
  60.    $ivss = number_format(($sueldo_basico*4/100),2,'.','');
  61.    $paro_for = number_format(($sueldo_basico*0.5/100),2,'.','');
  62.    $lph = number_format(($sueldo_basico*1/100),2,'.','');
  63.    $sueldo_diario = number_format(($sueldo_basico/30),2,'.','');
  64.  
  65.    echo '
  66.  <tr>
  67.     <input id="sueldo_basico'.$i.'" name="sueldo_basico'.$i.'" type="hidden" value='.$sueldo_basico.'/>
  68.     <td>'.$id_empleado.'</td>
  69.     <td>'.$ci.'</td>
  70.     <td>'.$papellido $sapellido.'</td>
  71.     <td>'.$pnombre $snombre.'</td>
  72.     <td><input name="dias'.$i.'" type="text" id="dias'.$i.'" size="2" onchange="Calcular('.$i.')"/></td>
  73.     <td>'.$sueldo_basico.'</td>
  74.     <td><input name="sueldo_quinc'.$i.'" type="text" id="sueldo_quinc'.$i.'" size="5" /></td>
  75.     <td>'.$ivss.'</td>
  76.     <td>'.$paro_for.'</td>
  77.     <td>'.$lph.'</td>
  78.     <td><input name="otros_ing" type="text" id="otros_ing" size="5" /></td>
  79.     <td><input name="otros_desc" type="text" id="otros_desc" size="5" /></td>
  80.     <td></td>
  81.     <td>&nbsp;</td>
  82.   </tr>';
  83.     }    
  84. mysql_close($conn);
  85.   ?>
  86.   <tr>
  87.     <td></td>
  88.     <td></td>
  89.     <td></td>
  90.     <td></td>
  91.     <td></td>
  92.     <td></td>
  93.     <td></td>
  94.     <td></td>
  95.     <td></td>
  96.     <td></td>
  97.     <td></td>
  98.     <td></td>
  99.     <td>TOTAL</td>
  100.     <td></td>
  101.   </tr>
  102. </form>
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.

Última edición por jorgelpadronb; 07/12/2011 a las 21:30
  #10 (permalink)  
Antiguo 07/12/2011, 22:50
Avatar de Triby
Foto-mod
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.013
Antigüedad: 6 años, 4 meses
Puntos: 1951
Respuesta: php sumar input text con variable sin hacer submit

Kimmy, enviar bloques tan grandes de HTML con echo es un dolor de cabeza, un punto o una comilla demás y boom! dónde quedo el error? habrá que buscar otra forma de generar tu HTML que sea más legible y te permita encontrar fácilmente los problemas y errores.

Cita:
Iniciado por jorgelpadronb
Tienes que poner esa linea entre sus propias etiqutas <script> y fuera de las etiquetas <script> donde está el resto del javascript. Ah y muy importante, tienes que generar las etiquetas <script> desde PHP junto con la variable, si no, nada de nada. El problema es que no puedes poner salida de PHP entre etiquetas <script>, entonces las generas junto con la variable y las pones en el HMTL.
Me podrías dar alguna referencia o explicación sobre esto? porque, en verdad, yo lo uso y funciona perfectamente, no hay diferencia alguna entre hacer un simple echo de una variable PHP o incluirla entre etiquetas o comillas o lo que sea.

Créeme, si no te funciona es porque algo estás haciendo mal, prueba algo sencillo:
Código PHP:
Ver original
  1. <?php
  2. $mp4 = 'Este es el título de alguna canción';
  3. ?>
  4. <script type="text/javascript">
  5. texto = '<?php echo $mp4; ?>';
  6. alert('El texto es:' + texto);
  7. </script>

Y, por cierto, la etiqueta <script> así sin más atributos no es recomendable porque el navegador puede hacer cada barbaridad al tratar de interpretar de qué se trata... y más si hablamos de IE. Entonces, aunque cueste más trabajo, para evitar problemas y de paso tener un código más "portable" se debe hacer así: <script type="text/javascript">
__________________
- León, Guanajuato
- GV-Foto
  #11 (permalink)  
Antiguo 08/12/2011, 14:08
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 3 años, 4 meses
Puntos: 37
Respuesta: php sumar input text con variable sin hacer submit

Tienes razón Triby. Funciona perfecto. Debo haber estado haciendo algo mal. Es que después de heberlo probado en varias ocasiones y habiendo fallado en todas ellas en contextos distintos, ya había dado por sentado que eso no funcionaba así.

Incluso después de fallar varias veces hice una prueba intencional: Puse la variable dentro de los <script> y no funcionaba, luego la ponía fuera (con sus propios <script>) y funcionó. Luego de repetir la prueba varias veces ya estaba convencido de que no funcionaba sino fuera de los <script>.

A estas alturas ya estoy dudando de la efizacia del método científico de demostración. JAJAJA.

Sobre los atributos de <script> tienes razón. Lo que pasa es que no todos los navegadores tienen las mismas opciones por defecto y cuando se omiten los atributos el navegador usa los valores por defecto. Ya te imaginas el lío quee forma. Pasa que a veces lo pongo así para abreviar. Tal vez mi error sea el creer que todo el mundo la va a interpretar correctamente.

Saludos.
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.

Última edición por jorgelpadronb; 08/12/2011 a las 14:14
  #12 (permalink)  
Antiguo 22/12/2011, 10:17
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 843
Antigüedad: 6 años, 4 meses
Puntos: 15
Respuesta: php sumar input text con variable sin hacer submit

Hola, gracias por la ayuda de ambos pero sigo sin resolver esto. El primer código que apliqué funcionaba, es decir este:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.     function calcula(dias, sueldo_quinc) {
  3.         sueldo = <?php echo $sueldo_diario; ?>;
  4.         document.getElementById('sueldo_quinc').value = dias * sueldo;
  5.     }
  6.     </script>

pero solo me calcula el primer campo pues como los datos vienen de un array de la BD que muestra los empleados, al tratar de calcular el segundo me modifica el primero y no hace el segundo.

este es donde se muestra:

Código PHP:
Ver original
  1. echo "
  2.  <tr>
  3.    <td>$id_empleado</td>
  4.    <td>$ci</td>
  5.    <td>$papellido $sapellido</td>
  6.    <td>$pnombre $snombre</td>
  7.    <td><input name=\"dias\" type=\"text\" id=\"dias\" size=\"2\" value=\"\" onblur=\"calcula(this.value, 'sueldo_quinc');\"/></td>
  8.    <td>$sueldo_basico</td>
  9.    <td><input name=\"sueldo_quinc\" type=\"text\" id=\"sueldo_quinc\" size=\"5\" value=\"\" readonly=\"readonly\"/></td>
  10.    <td>$ivss</td>
  11.    <td>$paro_for</td>
  12.    <td>$lph</td>
  13.    <td><input name=\"otros_ing\" type=\"text\" id=\"otros_ing\" size=\"5\" /></td>
  14.    <td><input name=\"otros_desc\" type=\"text\" id=\"otros_desc\" size=\"5\" /></td>
  15.    <td></td>
  16.    <td>&nbsp;</td>
  17.  </tr>";
  18.     }

Lo que necesito saber es como hacer para que calcule cada uno o sea como se maneja cuando es un array. Disculpen la insistencia pero no lo logro.
__________________
Caminando con el corazón partío
  #13 (permalink)  
Antiguo 22/12/2011, 13:47
Avatar de Triby
Foto-mod
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.013
Antigüedad: 6 años, 4 meses
Puntos: 1951
Respuesta: php sumar input text con variable sin hacer submit

Sería más fácil ayudarte si muestras todo el código, al menos donde generas los campos, incluido el for o while (si lo hay).

De entrada, si estás generando varias líneas con ese código, estarás duplicando atributos id y name, por lo que el resultado sería como tener solamente una línea, el resto, serán ignoradas o sobreescribirán a la anterior.
__________________
- León, Guanajuato
- GV-Foto
  #14 (permalink)  
Antiguo 22/12/2011, 17:45
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 843
Antigüedad: 6 años, 4 meses
Puntos: 15
Respuesta: php sumar input text con variable sin hacer submit

Gracias Triby. Este es el código:

Código PHP:
Ver original
  1. <form action="nomina_reg.php" method="post" >
  2.    <table width="750" border="0" class="tabla2">
  3.     <tr>
  4.      <td colspan="5" class="td2" bgcolor="#95bce2">UNIDAD EDUCATIVA</td>
  5.       </tr>
  6.       <tr>
  7.       <td colspan="5">NOMINA PARA EL PAGO DE SUELDOS EMPLEADOS</td>
  8.       </tr>
  9.       <tr>
  10.           <td width="7%">Desde:</td>
  11.           <td width="15%">&nbsp;</td>
  12.           <td width="7%">Hasta:</td>
  13.           <td width="16%">&nbsp;</td>
  14.           <td>&nbsp;</td>
  15.           </tr>
  16.       </table>
  17.       <br />
  18.      <table width="750" border="1"  bordercolor="#95bce2"  class="tabla3">
  19.      <tr bgcolor="#95bce2 ">
  20.      <td width="3%" class="td3">Nº</td>
  21.      <td width="3%" class="td3">CI</td>
  22.      <td width="10%" class="td3">APELLIDOS</td>
  23.      <td width="11%" class="td3">NOMBRES</td>
  24.      <td width="4%" class="td3">DIAS</td>
  25.      <td width="8%" class="td3">SUELDO BÁSICO</td>
  26.      <td width="8%" class="td3">SUELDO B. QUINCENA</td>
  27.      <td width="8%" class="td3">IVSS</td>
  28.      <td width="8%" class="td3">PARO FORSOZO</td>
  29.      <td width="8%" class="td3">LPH</td>
  30.      <td width="8%" class="td3">OTROS INGRESOS</td>
  31.      <td width="8%" class="td3">OTROS DESCUENT</td>
  32.      <td width="8%" class="td3">TOTAL DEDUCCIONES</td>
  33.      <td width="8%" class="td3">TOTAL DEVENGADO</td>
  34.      </tr>
  35.   <?php
  36. $rs = mysql_query("SELECT * FROM empleados ORDER BY id_empleado ASC");
  37. while ($result = mysql_fetch_array($rs)) {
  38.     $id_empleado = $result['id_empleado'];
  39.     $ci = $result['ci'];
  40.     $pnombre = $result['pnombre'];
  41.     $snombre = $result['snombre'];
  42.     $papellido = $result['papellido'];
  43.     $sapellido = $result['sapellido'];
  44.     $cargo = $result['cargo'];
  45.     $sueldo_basico = $result['sueldo_basico'];
  46.  
  47.     //$sueldo_quin = number_format(($sueldo_basico*$dias),2,'.','');
  48.     $ivss = number_format(($sueldo_basico*4/100),2,'.','');
  49.     $paro_for = number_format(($sueldo_basico*0.5/100),2,'.','');
  50.     $lph = number_format(($sueldo_basico*1/100),2,'.','');
  51.     $sueldo_diario = number_format(($sueldo_basico/30),2,'.','');
  52.     //$dias_trabajados = number_format((
  53.     //$total_deducc = number_format((
  54.      // echo '<script>var sueldo ='. $sueldo_diario.'; ?>
  55.  
  56.  <script type="text/javascript">
  57.     // dias es el total de días trabajados
  58.     // campo es la id del input text que se debe actualizar
  59.     function calcula(dias, sueldo_quinc) {
  60.         sueldo = <?php echo $sueldo_diario; ?>;
  61.         // Va sin formato, eso tendrás que preguntarlo en el foro de Javascript
  62.         document.getElementById('sueldo_quinc').value = dias * sueldo;
  63.      }
  64.     </script>
  65.  
  66. <?php
  67.    
  68. echo "
  69.  <tr>
  70.    <td>$id_empleado</td>
  71.    <td>$ci</td>
  72.    <td>$papellido $sapellido</td>
  73.    <td>$pnombre $snombre</td>
  74.    <td><input name=\"dias\" type=\"text\" id=\"dias\" size=\"2\" value=\"\" onblur=\"calcula(this.value, 'sueldo_quinc');\"/></td>
  75.    <td>$sueldo_basico</td>
  76.    <td><input name=\"sueldo_quinc\" type=\"text\" id=\"sueldo_quinc\" size=\"5\" value=\"\" readonly=\"readonly\"/></td>
  77.    <td>$ivss</td>
  78.    <td>$paro_for</td>
  79.    <td>$lph</td>
  80.    <td><input name=\"otros_ing\" type=\"text\" id=\"otros_ing\" size=\"5\" /></td>
  81.    <td><input name=\"otros_desc\" type=\"text\" id=\"otros_desc\" size=\"5\" /></td>
  82.    <td></td>
  83.    <td>&nbsp;</td>
  84.  </tr>";
  85.     }
  86.        
  87. mysql_close($conn);
  88.   ?>
  89.   <tr>
  90.       <td>&nbsp;</td>
  91.      <td>&nbsp;</td>
  92.      <td>&nbsp;</td>
  93.      <td>&nbsp;</td>
  94.      <td>&nbsp;</td>
  95.      <td>&nbsp;</td>
  96.      <td>&nbsp;</td>
  97.      <td>&nbsp;</td>
  98.      <td>&nbsp;</td>
  99.      <td>&nbsp;</td>
  100.      <td>&nbsp;</td>
  101.      <td>&nbsp;</td>
  102.      <td class="td3">TOTAL</td>
  103.      <td>&nbsp;</td>
  104.   </tr>
  105. </table>
  106. </form>

???
__________________
Caminando con el corazón partío
  #15 (permalink)  
Antiguo 22/12/2011, 19:21
Avatar de Triby
Foto-mod
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.013
Antigüedad: 6 años, 4 meses
Puntos: 1951
Respuesta: php sumar input text con variable sin hacer submit

Bueno, tienes varios errores:

1- En cada paso del while estás creando el javascript con la función para calcular, ésta debe aparecer sólo una vez.
2- En cada fila de la tabla repites nombres e id's de campos

Aquí, la cuestión sería cómo pretendes tomar después todos los campos del formulario, como array?

Entonces:
Código PHP:
Ver original
  1. <script type="text/javascript">
  2. // dias es el total de días trabajados
  3. // sueldo es el sueldo básico del empleado
  4. // indice corresponde al input text que se debe actualizar
  5. function calcula(dias, sueldo, indice) {
  6.     // Va sin formato, eso tendrás que preguntarlo en el foro de Javascript
  7.     document.getElementById('sueldo_quinc' + indice).value = dias * sueldo;
  8. }
  9. </script>
  10.  
  11. <?php
  12. // Necesitamos un índice numérico para generar los ID de campos
  13. $indice = 1;
  14. while($result = mysql_fetch_array($rs)) {
  15.     // Realmente no necesitas hacer todas las asignaciones que tienes
  16.     // Sólo estás agregando más código, siempre puedes incluir...
  17.     // ... elementos de array en cadenas usando {$result['indice']}
  18.     $ivss = number_format(($result['sueldo_basico']*4/100),2,'.','');
  19.     $paro_for = number_format(($result['sueldo_basico']*0.5/100),2,'.','');
  20.     $lph = number_format(($result['sueldo_basico']*1/100),2,'.','');
  21.     $sueldo_diario = number_format(($result['sueldo_basico']/30),2,'.','');
  22.     // Para facilitar un poco las cosas, habrá que agregar un campo oculto...
  23.     // ...con la id de empleado
  24. ?>
  25.     <tr>
  26.         <td><?php echo $result['id_empleado']; ?><input type="hiden" name="id_empleado[]" value="<?php echo $result['id_empleado']; ?>" /></td>
  27.         <td><?php echo $result['ci']; ?></td>
  28.         <td><?php echo "{$result['papellido']} {$result['sapellido']}"; ?></td>
  29.         <td><?php echo "{$result['pnombre']} {$result['snombre']}"; ?></td>
  30.         <td><input name="dias[]" type="text" id="dias<?php echo $indice; ?>" size="2" value="" onblur="calcula(this.value, '<?php echo $result['sueldo_basico']; ?>', <?php echo $indice; ?>);" /></td>
  31.         <td><?php echo $result['sueldo_basico']; ?></td>
  32.         <td><input name="sueldo_quinc[]" type="text" id="sueldo_quinc<?php echo $indice; ?>" size="5" value="" readonly="readonly" /></td>
  33.         <td><?php echo $ivss; ?></td>
  34.         <td><?php echo $paro_for; ?></td>
  35.         <td><?php echo $lph; ?></td>
  36.         <td><input name="otros_ing[]" type="text" size="5" /></td>
  37.         <td><input name="otros_desc[]" type="text"size="5" /></td>
  38.        <td></td>
  39.        <td></td>
  40.     </tr>
  41. <?php
  42.     $indice ++;
  43. } // fin de while
  44. ?>

Al procesar el formulario haces un var_dump($_POST); para que veas cómo vienen los datos y puedas tomarlos sin problemas.
__________________
- León, Guanajuato
- GV-Foto
  #16 (permalink)  
Antiguo 22/12/2011, 20:00
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 843
Antigüedad: 6 años, 4 meses
Puntos: 15
Respuesta: php sumar input text con variable sin hacer submit

Te muestro una foto de lo que estoy haciendo:



Esto viene de la consulta y en el campo dias se colocan los dias que se multiplican con el sueldo diario para que de el sueldo quincena.
__________________
Caminando con el corazón partío
  #17 (permalink)  
Antiguo 22/12/2011, 20:08
Avatar de Triby
Foto-mod
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.013
Antigüedad: 6 años, 4 meses
Puntos: 1951
Respuesta: php sumar input text con variable sin hacer submit

Y probaste lo que sugerí?... digo, algún avance (o retroceso) debe haber.
__________________
- León, Guanajuato
- GV-Foto
  #18 (permalink)  
Antiguo 22/12/2011, 20:09
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 843
Antigüedad: 6 años, 4 meses
Puntos: 15
Respuesta: php sumar input text con variable sin hacer submit

Si lo probé pero ahora no me calcula nada.
__________________
Caminando con el corazón partío
  #19 (permalink)  
Antiguo 22/12/2011, 20:12
Avatar de Triby
Foto-mod
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.013
Antigüedad: 6 años, 4 meses
Puntos: 1951
Respuesta: php sumar input text con variable sin hacer submit

A ver, muéstranos el código fuente generado en el navegador y vemos qué esta pasando.
__________________
- León, Guanajuato
- GV-Foto
  #20 (permalink)  
Antiguo 22/12/2011, 20:18
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 843
Antigüedad: 6 años, 4 meses
Puntos: 15
Respuesta: php sumar input text con variable sin hacer submit

Este es el código fuente:

Código PHP:
Ver original
  1. <form action="nomina_reg.php" method="post" >
  2.       <table width="750" border="0" class="tabla2">
  3.  
  4.         <tr>
  5.           <td colspan="5" class="td2" bgcolor="#95bce2">UNIDAD EDUCATIVA EL MILAGRO DE LA PERLA</td>
  6.           </tr>
  7.         <tr>
  8.           <td colspan="5">NOMINA PARA EL PAGO DE SUELDOS EMPLEADOS</td>
  9.           </tr>
  10.         <tr>
  11.           <td width="7%">Desde:</td>
  12.  
  13.           <td width="15%">&nbsp;</td>
  14.           <td width="7%">Hasta:</td>
  15.           <td width="16%">&nbsp;</td>
  16.           <td>&nbsp;</td>
  17.           </tr>
  18.       </table>
  19.       <br />
  20.       <table width="750" border="1"  bordercolor="#95bce2"  class="tabla3">
  21.  
  22.   <tr bgcolor="#95bce2 ">
  23.     <td width="3%" class="td3"></td>
  24.     <td width="3%" class="td3">CI</td>
  25.     <td width="10%" class="td3">APELLIDOS</td>
  26.     <td width="11%" class="td3">NOMBRES</td>
  27.     <td width="4%" class="td3">DIAS</td>
  28.  
  29.     <td width="8%" class="td3">SUELDO BÁSICO</td>
  30.     <td width="8%" class="td3">SUELDO B. QUINCENA</td>
  31.     <td width="8%" class="td3">IVSS</td>
  32.     <td width="8%" class="td3">PARO FORSOZO</td>
  33.     <td width="8%" class="td3">LPH</td>
  34.     <td width="8%" class="td3">OTROS INGRESOS</td>
  35.  
  36.     <td width="8%" class="td3">OTROS DESCUENT</td>
  37.     <td width="8%" class="td3">TOTAL DEDUCCIONES</td>
  38.     <td width="8%" class="td3">TOTAL DEVENGADO</td>
  39.   </tr>
  40.   <script type="text/javascript">
  41.     // dias es el total de días trabajados
  42.     // campo es la id del input text que se debe actualizar
  43.     function calcula(dias, sueldo_quinc) {
  44.         sueldo = ;
  45.         // Va sin formato, eso tendrás que preguntarlo en el foro de Javascript
  46.         document.getElementById('sueldo_quinc').value = dias * sueldo;
  47.        
  48.     }
  49.     </script>
  50.       <tr>
  51.         <td>1<input type="hidden" name="id_empleado[]" value="1" /></td>
  52.  
  53.         <td>14587456</td>
  54.         <td>Tovar Lamas</td>
  55.         <td>Julia Lisa</td>
  56.         <td><input name="dias[]" type="text" id="dias1" size="2" value="" onblur="calcula(this.value, '1548.21', 1);" /></td>
  57.         <td>1548.21</td>
  58.         <td><input name="sueldo_quinc[]" type="text" id="sueldo_quinc1" size="5" value="" readonly="readonly" /></td>
  59.         <td>61.93</td>
  60.  
  61.         <td>7.74</td>
  62.         <td>15.48</td>
  63.         <td><input name="otros_ing[]" type="text" size="5" /></td>
  64.         <td><input name="otros_desc[]" type="text"size="5" /></td>
  65.        <td></td>
  66.        <td></td>
  67.     </tr>
  68.     <tr>
  69.  
  70.         <td>2<input type="hidden" name="id_empleado[]" value="2" /></td>
  71.         <td>18236369</td>
  72.         <td>Vera Suarez</td>
  73.         <td>Rosa Victoria</td>
  74.         <td><input name="dias[]" type="text" id="dias2" size="2" value="" onblur="calcula(this.value, '1548.21', 2);" /></td>
  75.         <td>1548.21</td>
  76.  
  77.         <td><input name="sueldo_quinc[]" type="text" id="sueldo_quinc2" size="5" value="" readonly="readonly" /></td>
  78.         <td>61.93</td>
  79.         <td>7.74</td>
  80.         <td>15.48</td>
  81.         <td><input name="otros_ing[]" type="text" size="5" /></td>
  82.         <td><input name="otros_desc[]" type="text"size="5" /></td>
  83.        <td></td>
  84.  
  85.        <td></td>
  86.     </tr>
  87.   <tr>
  88.       <td>&nbsp;</td>
  89.  
  90.     <td>&nbsp;</td>
  91.     <td>&nbsp;</td>
  92.     <td>&nbsp;</td>
  93.     <td>&nbsp;</td>
  94.  
  95.     <td>&nbsp;</td>
  96.     <td>&nbsp;</td>
  97.     <td>&nbsp;</td>
  98.     <td>&nbsp;</td>
  99.     <td>&nbsp;</td>
  100.     <td>&nbsp;</td>
  101.     <td>&nbsp;</td>
  102.     <td class="td3">TOTAL</td>
  103.  
  104.     <td>&nbsp;</td>
  105.   </tr>
  106. </table>
  107. </form>
__________________
Caminando con el corazón partío
  #21 (permalink)  
Antiguo 22/12/2011, 20:21
Avatar de Triby
Foto-mod
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.013
Antigüedad: 6 años, 4 meses
Puntos: 1951
Respuesta: php sumar input text con variable sin hacer submit

Bueno, dos cosas:
- <script>... </script> no puede estar dentro de la tabla, en medio de </tr> y <tr>, colócalo antes de <table>
- La función para calcular no es correcta, copia la última que te sugerí y nos cuentas si va o no va.
__________________
- León, Guanajuato
- GV-Foto
  #22 (permalink)  
Antiguo 22/12/2011, 20:34
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 843
Antigüedad: 6 años, 4 meses
Puntos: 15
Respuesta: php sumar input text con variable sin hacer submit

Muchas gracias, ahora si funcionó, lo único es que tengo que multiplicar los dias por el sueldo diario que es la formula $sueldo_diario = number_format(($result['sueldo_basico']/30),2,'.','');. Lo puse asi pero no me lo hace:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. function calcula(dias, sueldo_diario, indice) {
  3.     // Va sin formato, eso tendrás que preguntarlo en el foro de Javascript
  4.     document.getElementById('sueldo_quinc' + indice).value = dias * sueldo_diario;
  5. }
  6. </script>

y en el formulario asi:

Código PHP:
Ver original
  1. <td><input name="sueldo_diario[]" type="text" id="sueldo_diario<?php echo $sueldo_diario; ?>" value="<?php echo $sueldo_diario; ?>" size="5" readonly="readonly" /></td>
__________________
Caminando con el corazón partío
  #23 (permalink)  
Antiguo 22/12/2011, 20:37
Avatar de Triby
Foto-mod
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.013
Antigüedad: 6 años, 4 meses
Puntos: 1951
Respuesta: php sumar input text con variable sin hacer submit

Bueno, lo que pasa es que $sueldo_diario ya tiene formato, sólo asegúrate de enviar el valor adecuado (numérico, sin formato).
__________________
- León, Guanajuato
- GV-Foto
  #24 (permalink)  
Antiguo 22/12/2011, 20:45
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 843
Antigüedad: 6 años, 4 meses
Puntos: 15
Respuesta: php sumar input text con variable sin hacer submit

Disculpa tanta ignorancia, pero no me sale. le quite el formato y quedo asi:

Código PHP:
Ver original
  1. $sueldo_diario = $result['sueldo_basico']/30;

y no lo toma, me sigue sumando el sueldo basico
__________________
Caminando con el corazón partío
  #25 (permalink)  
Antiguo 22/12/2011, 21:01
Avatar de Triby
Foto-mod
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.013
Antigüedad: 6 años, 4 meses
Puntos: 1951
Respuesta: php sumar input text con variable sin hacer submit

Ver nuevamente el codigo fuente generado en el navegador puede ayudar.
__________________
- León, Guanajuato
- GV-Foto
  #26 (permalink)  
Antiguo 22/12/2011, 21:13
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 843
Antigüedad: 6 años, 4 meses
Puntos: 15
Respuesta: php sumar input text con variable sin hacer submit

Triby super muchas gracias por tanta ayuda. Ya lo arreglé. Estaba colocando mal la variable en el id dias. Quedó asi:

Código PHP:
Ver original
  1. <td><input name="dias[]" type="text" id="dias<?php echo $indice; ?>" size="2" value="" onblur="calcula(this.value, '<?php echo $sueldo_diario; ?>', <?php echo $indice; ?>);" /></td>
  2. <td><?php echo $result['sueldo_basico']; ?></td>
  3. <td><?php echo $sueldo_diario; ?></td>

Mil gracias siempre por tu ayuda y paciencia ;)
__________________
Caminando con el corazón partío
  #27 (permalink)  
Antiguo 23/12/2011, 00:29
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 843
Antigüedad: 6 años, 4 meses
Puntos: 15
Respuesta: php sumar input text con variable sin hacer submit

Siguiendo en la nómina, logré calcular el total de deducciones pero no me funciona el total devengado. Este es mi código:

Código Javascript:
Ver original
  1. function calcula(dias, sueldo_diario, indice) {
  2.     // Va sin formato, eso tendrás que preguntarlo en el foro de Javascript
  3.     document.getElementById('sueldo_quinc' + indice).value = dias * sueldo_diario;
  4. }
  5.  
  6. function deducciones(otros_desc, ivss, paro_for, lph, indice2) {
  7.     document.getElementById('total_deducc' + indice2).value = parseFloat(otros_desc) + parseFloat(ivss) + parseFloat(paro_for) + parseFloat(lph);
  8. }
  9.  
  10. function total_dev(otros_ing, sueldo_quinc, total_deducc, indice3) {
  11.     document.getElementById('total_deveng' + indice3).value = (parseFloat(otros_ing) + parseFloat(sueldo_quinc)) - parseFloat(total_deducc);
  12. }

y el fomulario:

Código PHP:
Ver original
  1. <form action="nomina_reg.php" method="post" >
  2. <table width="750" border="0" class="tabla2">
  3. <tr>
  4. <td colspan="5" class="td2" bgcolor="#95bce2">UNIDAD EDUCATIVA</td>
  5. </tr>
  6. <tr>
  7. <td colspan="5">NOMINA PARA EL PAGO DE SUELDOS EMPLEADOS</td>
  8. </tr>
  9. <tr>
  10. <td width="7%">Desde:</td>
  11. <td width="15%">&nbsp;</td>
  12. <td width="7%">Hasta:</td>
  13. <td width="16%">&nbsp;</td>
  14. <td>&nbsp;</td>
  15. </tr>
  16. </table>
  17. <br />
  18. <table width="750" border="1"  bordercolor="#95bce2"  class="tabla3">
  19. <tr bgcolor="#95bce2 ">
  20.     <td width="3%" class="td3">Nº</td>
  21.     <td width="3%" class="td3">CI</td>
  22.     <td width="10%" class="td3">APELLIDOS</td>
  23.     <td width="11%" class="td3">NOMBRES</td>
  24.     <td width="4%" class="td3">DIAS</td>
  25.     <td width="8%" class="td3">SUELDO BÁSICO</td>
  26.     <td width="8%" class="td3">SUELDO DIARIO</td>    
  27.     <td width="8%" class="td3">SUELDO B. QUINCENA</td>
  28.     <td width="8%" class="td3">IVSS</td>
  29.     <td width="8%" class="td3">PARO FORSOZO</td>
  30.     <td width="8%" class="td3">LPH</td>
  31.     <td width="8%" class="td3">OTROS INGRESOS</td>
  32.     <td width="8%" class="td3">OTROS DESCUENT</td>
  33.     <td width="8%" class="td3">TOTAL DEDUCCIONES</td>
  34.     <td width="8%" class="td3">TOTAL DEVENGADO</td>
  35.   </tr>
  36.  
  37.   <?php
  38. $indice = 1;
  39. $indice2 = 1;
  40. [B]$indice3 = 1;[/B]
  41. $rs = mysql_query("SELECT * FROM empleados ORDER BY id_empleado ASC");
  42. while($result = mysql_fetch_array($rs)) {
  43.     $ivss = number_format(($result['sueldo_basico']*4/100),2,'.','');
  44.     $paro_for = number_format(($result['sueldo_basico']*0.5/100),2,'.','');
  45.     $lph = number_format(($result['sueldo_basico']*1/100),2,'.','');
  46.     $sueldo_diario = $result['sueldo_basico']/30;
  47. ?>
  48.     <tr>
  49.     <td><?php echo $result['id_empleado']; ?><input type="hidden" name="id_empleado[]" value="<?php echo $result['id_empleado']; ?>" /></td>
  50.         <td><?php echo $result['ci']; ?></td>
  51.         <td><?php echo "{$result['papellido']} {$result['sapellido']}"; ?></td>
  52.         <td><?php echo "{$result['pnombre']} {$result['snombre']}"; ?></td>
  53.         <td><input name="dias[]" type="text" id="dias<?php echo $indice; ?>" size="2" value="" onblur="calcula(this.value, '<?php echo $sueldo_diario; ?>', <?php echo $indice; ?>);" /></td>
  54.         <td><?php echo $result['sueldo_basico']; ?></td>
  55.         <td><?php echo $sueldo_diario; ?></td>
  56.         <td><input name="sueldo_quinc[]" type="text" id="sueldo_quinc<?php echo $indice; ?>" size="5" value="" readonly="readonly" /></td>
  57.         <td><?php echo $ivss; ?></td>
  58.         <td><?php echo $paro_for; ?></td>
  59.         <td><?php echo $lph; ?></td>
  60.         [B]<td><input name="otros_ing[]" type="text" id="otros_ing<?php echo $indice3; ?>" size="5" value="" onblur="total_dev(this.value, '<?php echo $sueldo_quinc; ?>', '<?php echo $total_deducc; ?>', <?php echo $indice3; ?>);" /></td>[/B]
  61.         <td><input name="otros_desc[]" type="text" id="otros_desc<?php echo $indice2; ?>" size="5" value="" onblur="deducciones(this.value, '<?php echo $ivss; ?>', '<?php echo $paro_for; ?>', '<?php echo $lph; ?>', <?php echo $indice2; ?>);" /></td>
  62.         <td><input name="total_deducc[]" type="text" id="total_deducc<?php echo $indice2; ?>" size="5" value="" readonly="readonly" /></td>
  63.        <td><input name="total_deveng[]" type="text" id="total_deveng<?php echo $indice3; ?>" size="5" value="" readonly="readonly" /></td>
  64.     </tr>
  65. <?php
  66.     $indice ++;
  67.     $indice2 ++;
  68.     [B]$indice3 ++;[/B]
  69. } // fin de while

Me imagino que no funciona porque $sueldo_quinc y total_deducc son array pero no se como ponerlos....
__________________
Caminando con el corazón partío
  #28 (permalink)  
Antiguo 04/01/2012, 08:03
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 843
Antigüedad: 6 años, 4 meses
Puntos: 15
Respuesta: php sumar input text con variable sin hacer submit

amigos sigo trabada en esta funcion:

Código Javascript:
Ver original
  1. function total_dev(otros_ing, sueldo_quinc, total_deducc, indice3) {
  2.     document.getElementById('total_deveng' + indice3).value = (parseFloat(otros_ing) + parseFloat(sueldo_quinc)) - parseFloat(total_deducc);
  3. }

y aqui el formulario:

Código PHP:
Ver original
  1. $indice = 1;
  2. $indice2 = 1;
  3. $indice3 = 1;
  4. $rs = mysql_query("SELECT * FROM empleados ORDER BY id_empleado ASC");
  5. while($result = mysql_fetch_array($rs)) {
  6.     $ivss = number_format(($result['sueldo_basico']*4/100),2,'.','');
  7.     $paro_for = number_format(($result['sueldo_basico']*0.5/100),2,'.','');
  8.     $lph = number_format(($result['sueldo_basico']*1/100),2,'.','');
  9.     $sueldo_diario = $result['sueldo_basico']/30;
  10. ?>
  11.     <tr>
  12.     <td><?php echo $result['id_empleado']; ?><input type="hidden" name="id_empleado[]" value="<?php echo $result['id_empleado']; ?>" /></td>
  13.         <td><?php echo $result['ci']; ?></td>
  14.         <td><?php echo "{$result['papellido']} {$result['sapellido']}"; ?></td>
  15.         <td><?php echo "{$result['pnombre']} {$result['snombre']}"; ?></td>
  16.         <td><input name="dias[]" type="text" id="dias<?php echo $indice; ?>" size="2" value="" onblur="calcula(this.value, '<?php echo $sueldo_diario; ?>', <?php echo $indice; ?>);" /></td>
  17.         <td><?php echo $result['sueldo_basico']; ?></td>
  18.         <td><?php echo $sueldo_diario; ?></td>
  19.         <td><input name="sueldo_quinc[]" type="text" id="sueldo_quinc<?php echo $indice; ?>" size="5" value="" readonly="readonly" /></td>
  20.         <td><?php echo $ivss; ?></td>
  21.         <td><?php echo $paro_for; ?></td>
  22.         <td><?php echo $lph; ?></td>
  23.         <td><input name="otros_ing[]" type="text" id="otros_ing<?php echo $indice3; ?>" size="5" value="" onblur="total_dev(this.value, '<?php echo $sueldo_quinc; ?>', '<?php echo $total_deducc; ?>', <?php echo $indice3; ?>);" /></td>
  24.         <td><input name="otros_desc[]" type="text" id="otros_desc<?php echo $indice2; ?>" size="5" value="" onblur="deducciones(this.value, '<?php echo $ivss; ?>', '<?php echo $paro_for; ?>', '<?php echo $lph; ?>', <?php echo $indice2; ?>);" /></td>
  25.         <td><input name="total_deducc[]" type="text" id="total_deducc<?php echo $indice2; ?>" size="5" value="" readonly="readonly" /></td>
  26.        <td><input name="total_deveng[]" type="text" id="total_deveng<?php echo $indice3; ?>" size="5" value="" readonly="readonly" /></td>
  27.     </tr>
  28. <?php
  29.     $indice ++;
  30.     $indice2 ++;
  31.     $indice3 ++;
  32. } // fin de while

cuando lo ejecuto me da en el total el resultado NaN. No se que hago mal????
__________________
Caminando con el corazón partío
  #29 (permalink)  
Antiguo 05/01/2012, 18:42
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 843
Antigüedad: 6 años, 4 meses
Puntos: 15
Respuesta: php sumar input text con variable sin hacer submit

seguí probando y veo que el problema lo tiene sueldo_quinc y total_deducc. Ellos son el resultado de las funciones calcula y deducciones pero no se como tomarlas para que se sumen con otros_ing.

se almacenan asi:

document.getElementById('sueldo_quinc' + indice).value = dias * sueldo_diario;
document.getElementById('total_deducc' + indice2).value = parseFloat(otros_desc) + parseFloat(ivss) + parseFloat(paro_for) + parseFloat(lph);

como puedo sumarla y restarla en mi funcion:

Código Javascript:
Ver original
  1. function total_dev(otros_ing, sueldo_quinc, total_deducc, indice3) {
  2.         document.getElementById('total_deveng' + indice3).value = (parseFloat(otros_ing) + parseFloat(sueldo_quinc)) - parseFloat(total_deducc);
  3.     }

Por favor les agradezco su ayuda...
__________________
Caminando con el corazón partío
  #30 (permalink)  
Antiguo 15/01/2012, 11:07
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 843
Antigüedad: 6 años, 4 meses
Puntos: 15
Respuesta: php sumar input text con variable sin hacer submit

Amigos sigo con este problema. Vi que no estoy pasando bien esto aqui:

Código PHP:
Ver original
  1. <td><input name="otros_ing[]" type="text" id="otros_ing<?php echo $indice3; ?>" size="5" value="" onBlur="total_dev(this.value, 'sueldo_quinc<?php echo $indice; ?>', 'total_deducc<?php echo $indice2; ?>', <?php echo $indice3; ?>);" /></td>

porque al ver el código fuente me sale esto

Código PHP:
Ver original
  1. <td><input name="otros_ing[]" type="text" id="otros_ing1" size="5" value="" onBlur="total_dev(this.value, 'sueldo_quinc[1]', 'total_deducc1', 1);" /></td>

Entonces el problema es que no estoy obteniendo el valor de cada elemento del array.

Mi pregunta es como puedo poner esto para que vaya recorriendo y capture esos valores

De verdad necesito su ayuda pues tengo mas de un mes en esto y no se que hacer.

Gracias...
__________________
Caminando con el corazón partío

Etiquetas: input, mysql, submit, tabla, variables, txt
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:20.
SEO by vBSEO 3.3.2