Foros del Web » Programando para Internet » Javascript »

operaciones matemáticas

Estas en el tema de operaciones matemáticas en el foro de Javascript en Foros del Web. Buenos días, Ojalá que alguien me pueda ayudar, Tengo un formulario que lo guardarlo en una BD y lo hago con PHP, del formulario, algunos ...
  #1 (permalink)  
Antiguo 02/07/2007, 07:39
Avatar de chiquirf  
Fecha de Ingreso: noviembre-2005
Ubicación: Madrid
Mensajes: 215
Antigüedad: 18 años, 6 meses
Puntos: 3
operaciones matemáticas

Buenos días,

Ojalá que alguien me pueda ayudar,

Tengo un formulario que lo guardarlo en una BD y lo hago con PHP, del formulario, algunos de los campos son los siguientes:

Horas
Precio por hora (€)
Descuento (%)
Total (€)

Los valores horas, precioxhora y descuento los ingreso con un campo imput, pero lo que quiero hacer es que se calcule el valor de total con la siguiente formula: "[horas * precioxhora]*[descuento/100]" antes de validar el formulario.

Es decir, que antes de apretar el boton de enviar el formulario para que se guerde, yo ya sepa de antemano cuanto es el total, me sirve de igualmanera si es automático el cálculo al ingresar los valores o tener que apretar otro boton para "calcular" ese valor TOTAL.

Muchas gracias de antemano.

Saludos

Carlos
  #2 (permalink)  
Antiguo 02/07/2007, 08:34
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Re: operaciones matemáticas

Hola:

La fórmula parece que ya la sabes, tan solo tienes que convertir los valores que tienes a "valor numérico", y aplicarlo con un botón...

Estaría bien que lo consiguieras tú... así que en principio voy a limitarme a darte pautas...

De los controles (campos input type="text" -por ejemplo-) debes rescatar su valor (.value)... y convertirlos anúmeros (parseInt para enteros y parseFloat para reales)... las asignaciones también debes hacerlas a campos value de los controles.

Anímate y dinos que cosas no entiendes para aconsejarte mejor.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 02/07/2007, 08:36
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 3 meses
Puntos: 772
Re: operaciones matemáticas

Hola chiquirf

Te pongo un pequeño ejemplo, no te costará mucho completarlo:

Código PHP:
<html>
<
head>
<
script type="text/javascript">
function 
calcular(frm) {
  
ho parseFloat(frm.horas.value);
  
ph parseFloat(frm.precioHora.value);
  
to ho ph;
  
frm.total.value to;
}
</script>
</head>
<body>
<form action="javascript:alert('si')" onsubmit="calcular(this)">
<input type="text" name="horas" />
<input type="text" name="precioHora" />
<input type="text" name="total" readonly = "readonly" />
<input type="submit" />
</form>
</body>
</html> 
Saludos,
  #4 (permalink)  
Antiguo 02/07/2007, 11:02
Avatar de chiquirf  
Fecha de Ingreso: noviembre-2005
Ubicación: Madrid
Mensajes: 215
Antigüedad: 18 años, 6 meses
Puntos: 3
Re: operaciones matemáticas

gracias a los 2 por las respuestas..

He probado hacer lo que me ponen pero ahora tengo un problema....

NO FUNCIONA, jejejeje creo que se debe a 2 cosas:

CAUSA 1.- Tengo un formulario dentro de otro:

<FORM1>
<Campo1>
<Campo2>
<Campo3>
<FORM2>
<Cambo hora>
<Campo pre_x_hora>
<Campo total>
<boton submit form2 value="Calcular">
</FORM2>
<Campo7>
<Camp8>
<boton submit form1 value="Enviar">
</FORM1>

Y al darle al botón de submit del FORM2 recarga toda la página.



CAUSA 2.- Los datos se cargan y luego se guardan en una BD usando PHP.

Este formulario es para editar unos datos guardados en una BD de MySQL usando PHP, al apretar el botón de "Calcular" recarga toda la página y se vuelven a mostrar los datos guardados en la BD del campo total.

A alguien se le ocurre una solución???

Gracias..

Carlos
  #5 (permalink)  
Antiguo 02/07/2007, 12:24
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 3 meses
Puntos: 772
Re: operaciones matemáticas

Hola de nuevo.

No puede ponerse un formulario dentro de otro.

Mete todos los campos en un solo formulario. Si no te funciona, pon el código que estás usando y dinos qué error te da.

Saludos,
  #6 (permalink)  
Antiguo 02/07/2007, 13:05
Avatar de chiquirf  
Fecha de Ingreso: noviembre-2005
Ubicación: Madrid
Mensajes: 215
Antigüedad: 18 años, 6 meses
Puntos: 3
Re: operaciones matemáticas

Hola Javier,

Pasa justo lo que no deseo, me envia el formulario... y lo peor es que no graba el valor del total.

El formulario que tengo es este:
http://perso.orange.es/chiquirf/gest...rtes_edit.html
(obviamente limpio del código php, esto va por los hackers, jejeje)

Lo que quiero calcular es el valor del campo TOTAL pulsando el botón de "Calcular", pero que permanezca en el mismo formulario para seguir editandolo, para que al final pulsar "Enviar" para guardar esos datos en la BD. todos los campos son extraidos de una BD.

He probado como me dijiste con un solo formulario poniendo en el form:
onsubmit="calcular(this)"

y la funcion es:
Código HTML:
function calcular(frm) {
  ho = parseFloat(frm.sumhoras.value);
  ph = parseFloat(frm.precioHora.value);
  des = parseFloat(frm.descparte.value);
  to = (ho * ph) * (des / 100);
  frm.totalparte.value = to;
  frm.totalpartehidden.value = to;
  frm.totalparte.focus();
  alert("el total es:");
  return false;
}
Le he agregado el alert y el return false a ver si lo para pero nada...


buscando algun ejemplo he encontrado esto:
http://www.convertworld.com/es/
http://rsta.pucmm.edu.do/ciencias/fisica/convertidor/

Que a la medida de lo posible haga exactamente esto...

Gracias por toda esta ayuda...

Saludos

Carlos
  #7 (permalink)  
Antiguo 02/07/2007, 13:19
Avatar de chiquirf  
Fecha de Ingreso: noviembre-2005
Ubicación: Madrid
Mensajes: 215
Antigüedad: 18 años, 6 meses
Puntos: 3
Re: operaciones matemáticas

Cacharreando un poco mas logré hacer que se muestre el valor en el campo total.

pude en el form la lo siguiente:

Código HTML:
 <form action=""  method="POST" name="FormParteEdit" id="FormParteEdit" onsubmit="return calcular(this)"> 
Le agregué el "return" y con eso me funciona lo de calcular.... pero ahora no me envia el formulario.

HELPPPPPPPPPPPP.........!!!!!!!!!!!!!

Saludos

Carlos
  #8 (permalink)  
Antiguo 03/07/2007, 09:59
Avatar de chiquirf  
Fecha de Ingreso: noviembre-2005
Ubicación: Madrid
Mensajes: 215
Antigüedad: 18 años, 6 meses
Puntos: 3
Re: operaciones matemáticas

Hola a todos,

Buscando por ahí encontré esta página:

http://www.convertworld.com/es/

Me he metido al código y he quitado lo que no nesesitaba y me queda esto:

HTML: http://perso.orange.es/chiquirf/gest...script/es.html
JS: http://perso.orange.es/chiquirf/gest...ipt/convert.js

Luego me puse a cambiar cosas por aquí y por alla para querer hacer que me coja los valores de dos campos (hora y preciohora), me calcule el producto (total) y me lo muestre en un imput pero no he podido, por eso pongo los enlaces de lo que si logra funcionar para que me ayuden a cambiarlo a lo que necesito, ya que es un EGG de código y no veo la luz... jajajaja.

Me interesa mucho que funcione de esta manera (u otra forma) ya que no utiliza el OnSubmit() que lo necesito libre para enviar el formulario a la BDs.

Gracias por la colaboración...

Saludos

Carlos
  #9 (permalink)  
Antiguo 03/07/2007, 11:03
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 3 meses
Puntos: 772
Re: operaciones matemáticas

Hola de nuevo.

Aquí tienes un ejemplo más completo. Si lo prefieres, puedes cambiar el evento onkeyup por onblur. No se si la fórmula será correcta, echala un buen vistazo.

Código PHP:
<html>
<
head>
<
script type="text/javascript">
function 
sumar(frm) {
  
ho frm.horas.value;
  
ph frm.precioHora.value;
  
de frm.descuento.value;
  if (
ho=='' || isNaN(ho)) ho 0;
  if (
ph=='' || isNaN(ph)) ph 0;
  if (
de=='' || isNaN(de)) de 0;
  
frm.total.value parseFloat(ho) * parseFloat(ph) * parseFloat(de) / 100;
}
</script>
</head>
<body>
<form>
<input type="text" name="horas" onkeyup = "sumar(this.form)" />
<input type="text" name="precioHora" onkeyup = "sumar(this.form)" />
<input type="text" name="descuento" onkeyup = "sumar(this.form)" />
<input type="text" name="total" readonly = "readonly" />
</form>
</body>
</html> 
Saludos,
  #10 (permalink)  
Antiguo 03/07/2007, 12:02
Avatar de chiquirf  
Fecha de Ingreso: noviembre-2005
Ubicación: Madrid
Mensajes: 215
Antigüedad: 18 años, 6 meses
Puntos: 3
Re: operaciones matemáticas

JODER TIO... ERES UN CRACK...!!!!!

FUNCIONA DE PM...!!!!!

Era mas sencillo de lo que pensé.... y yo complicandome con mil funciones... algún día me meteré a un curso avanzado de javascript y no estaré dando la coña tanto, jajajaja, ya que también me gustatia aprender AJAX, pero eso ya son ligas mayores.

Bueno, al final le meti un par de retoques y que me funcionara pa lo que necesito:

Código:
function sumar(frm) {
  ho = frm.sumhoras.value;
  ph = frm.preciohora.value;
  de = frm.descparte.value;
  if (ho=='' || isNaN(ho)) ho = 0;
  if (ph=='' || isNaN(ph)) ph = 0;
  if (de=='' || isNaN(de)) de = 0;
  ho = parseFloat(ho);
  ph = parseFloat(ph);
  de = parseFloat(de);  
  frm.totalparte.value = (ho * ph) - (ho * ph * de / 100);
}
MUCHAS GRACIAS

Saludos

Carlos...

PD: ahora dentro de un rato planteo otro problemilla que me ha surgido...jejeje
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 22:19.