Foros del Web » Programando para Internet » Javascript »

Variables tomada con php no puedo sumarlas con javascript

Estas en el tema de Variables tomada con php no puedo sumarlas con javascript en el foro de Javascript en Foros del Web. Hola. Hace 2 días estoy intentando sumar 2 variables y lo que me hace es concatenarlas. Prefiero solucionar el problema yo mismo, pero es evidente ...
  #1 (permalink)  
Antiguo 18/03/2012, 06:41
 
Fecha de Ingreso: octubre-2008
Mensajes: 70
Antigüedad: 15 años, 6 meses
Puntos: 2
Variables tomada con php no puedo sumarlas con javascript

Hola. Hace 2 días estoy intentando sumar 2 variables y lo que me hace es concatenarlas. Prefiero solucionar el problema yo mismo, pero es evidente que ya no puedo.
Ejemplo: 57 + 60 = 5760
He hecho de todo: Use eval, use parseInt, parseFloat y nada, no puedo concatenarlas.
Explico con detalles:
1) Uso php / mysql: Simplemente traigo de la base de datos 2 columnas: nombre y kilocalorías.

Cita:
<option value="<?php echo $row_registro['kilocalorias'] ?>"><?php echo $row_registro['nombre']?></option>
2) $row_registro['nombre']: Es mostrado en una lista (select) y cuando selecciono un elemento de esta lista, se añade a un cuadro de texto las kilocalorías (que son valores numéricos)

Cita:
<select name="form_carnes" onchange="insertar_el_numero(form_carnes.value);"/>
3) Como se ve, llamo a una función en javascript para que me inserte los números (o sea, las kilocalorías) cada vez que selecciono una opcion select.

Cita:

<script language="javascript">
valor_antiguo = "";
function insertar_el_numero(valor_pasado) {
if (valor_pasado != "") {
var valor_total = valor_pasado+"\n"+valor_antiguo;
document.formularios.seleccionados.value = valor_total;
valor_antiguo = document.formularios.seleccionados.value;
}
}
// End -->
</script>
Hasta aquí perfecto. Tengo una caja de texto (name=seleccionados) y me coloca los valores de kilocalorias cada vez que yo selecciono un tipo de nombre (o sea, de alimento), como por ejemplo vacío.
El tema es que a estas variables no las puedo sumar de ninguna manera. A la variable "valor_total", y a las otras también, use eval, use parseInt, parseFloat y no pasa nada realmente, sigue concatenando.
Cualquier palabra de aliento agradecería.

Última edición por setenta; 18/03/2012 a las 06:51
  #2 (permalink)  
Antiguo 18/03/2012, 07:42
Avatar de Shirak2  
Fecha de Ingreso: abril-2008
Ubicación: Granada
Mensajes: 42
Antigüedad: 16 años
Puntos: 19
Respuesta: Variables tomada con php no puedo sumarlas con javascript

Código Javascript:
Ver original
  1. // hazlo 0 por defecto, no un string
  2. valor_antiguo = 0;
  3.  
  4. function insertar_el_numero(valor_pasado) {
  5.     if (valor_pasado) {
  6.         // convierte el tipo de lo que te han pasado a número
  7.         // también puedes hacer parseInt, pero cuidado con los octales
  8.         // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt
  9.         var valor_total = Number(valor_pasado) + valor_antiguo;
  10.  
  11.         document.formularios.seleccionados.value = valor_total;
  12.  
  13.         valor_antiguo = valor_total;
  14.     }
  15. }
  16. // End -->
  #3 (permalink)  
Antiguo 18/03/2012, 08:54
 
Fecha de Ingreso: octubre-2008
Mensajes: 70
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Variables tomada con php no puedo sumarlas con javascript

Gracias por responder, shirak. En el siguiente código:

[QUOTE]

Cita:
<script language="javascript">
valor_antiguo = 0;
function insertar_el_numero(valor_pasado) {
if (valor_pasado) {
var valor_total = Number(valor_pasado) + valor_antiguo;
var valor_total_numerico= parseInt(valor_total);
document.formularios.seleccionados.value = valor_total;
valor_antiguo = valor_total; }
}

// End -->
</script>
Como se ve, agregué la línea :
Cita:
var valor_total_numerico= parseInt(valor_total);
Y luego imprimi el tipo y el valor de cada variable (valor_total, valor_antiguo, valor_pasado y tambien valor_total_numerico) con el siguiente código

Cita:
<script language="javascript">
document.write('la variable valor_total es del tipo ' + typeof valor_total);
document.write('la variable valor_pasado es del tipo ' + typeof valor_pasado);
document.write('la variable valor_antiguo es del tipo ' + typeof valor_antiguo);
document.write('la variable valor_total_numerico es del tipo ' + typeof valor_total_numerico);
document.write('la variable valor_total_numerico tiene un valor de' + valor_total_numerico);
</script>
Y me tira en pantalla:

Cita:
la variable valor_total es del tipo undefined
la variable valor_pasado es del tipo undefined
la variable valor_antiguo es del tipo number
la variable valor_total_numerico es del tipo undefined
O sea que, aunque use el parseInt aún asi me dio indefinido. El unico que quedó como númerico es el que asigne como valor_pasado = 0 (como habías dicho, me ahorré una conversión).
También cambié parseInt por parseFloat con los mismos resultados para valor_total.
  #4 (permalink)  
Antiguo 18/03/2012, 09:32
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: Variables tomada con php no puedo sumarlas con javascript

primero todas las variables que vas ha utilizar en cualquier parte tiene que estar fuera de la función

var valor_antiguo = 0;
var valor_total = 0;
var valor_total_numerico= 0;
var valor_pasado=0;

y las que te hagan falta

Código:
var valor_antiguo = 0;
var valor_total = 0;
var valor_total_numerico= 0;
var valor_pasado=0;
 
function insertar_el_numero(vp) {
    if (isNaN(vp))vp=0;
	valor_total = vp + valor_antiguo;
    document.formularios.seleccionados.value = valor_total;
    valor_antiguo = valor_total;
}
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #5 (permalink)  
Antiguo 18/03/2012, 10:50
 
Fecha de Ingreso: octubre-2008
Mensajes: 70
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Variables tomada con php no puedo sumarlas con javascript

Gracias, pero no resultó. Aquí pongo mi código completo (excepto algo de php que está antes de la etiqueta <html>, a ver si algún amigo me ayuda con este problema:

Cita:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Tu Dieta</title>
<p align="center"><b>Selecci&oacute;n y adici&oacute;n de elementos a una lista
<script language="javascript">
valor_antiguo = 0;
valor_pasado = 0;
valor_total = 0;
function insertar_el_numero(valor_pasado) {
if (valor_pasado != "") {
var valor_total = valor_pasado+"\n"+valor_antiguo;
document.formularios.seleccionados.value = valor_total;
valor_antiguo = document.formularios.seleccionados.value;
valor_suma = valor_suma + valor_pasado;
}
}
// End -->
</script>
</head>
</b>
<body style="font-family: Verdana">
</p>
<form name="formularios" action=""/>
<select name="form_carnes" onchange="insertar_el_numero(form_carnes.value);"/>
<?php
mysql_query ("SET NAMES 'utf8'");
do {
?>
<option value="<?php echo $row_registro['kilocalorias'] ?>"><?php echo $row_registro['nombre']?></option>
<?php
} while ($row_registro = mysql_fetch_assoc($registro));
$rows = mysql_num_rows($registro);
if($rows > 0) {
mysql_data_seek($registro, 0);
$row_registro = mysql_fetch_assoc($registro);
}
?>

</select><font face="Arial, Helvetica, Sans Serif" size="2">Elementos a&ntilde;adidos a la lista:</font><br>
<textarea cols="40" rows="10" name="seleccionados"></textarea>
<textarea cols="10" rows="10" name="suma"></textarea>
</form>
<script language="javascript">
document.write('la variable valor_total es del tipo ' + typeof valor_total);
document.write('la variable valor_pasado es del tipo ' + typeof valor_pasado);
document.write('la variable valor_antiguo es del tipo ' + typeof valor_antiguo);
document.write('la variable valor_total vale ' + valor_total);
document.write('la variable valor_pasado vale ' + valor_pasado);
document.write('la variable valor_antiguo vale ' + valor_antiguo);

</script>

</body>

</html>
<?php
mysql_query ("SET NAMES 'utf8'");
mysql_free_result($registro);
?>
En pantalla, imprime:

Cita:
la variable valor_total es del tipo number
la variable valor_pasado es del tipo number
la variable valor_antiguo es del tipo number
la variable valor_total vale 0
la variable valor_pasado vale 0
la variable valor_antiguo vale 0
Y en el cuadro de texto muestra lo que mostró siempre: cuando selecciono (con la lista de select) un alimento, muestra un valor de kilocalorías QUE ES DIFERENTE DE 0 (que es lo que me pone aquí).
Intenté sumar y me los sigue concatenando.

Última edición por setenta; 18/03/2012 a las 11:30
  #6 (permalink)  
Antiguo 18/03/2012, 12:09
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: Variables tomada con php no puedo sumarlas con javascript

yo lo haría de esta forma
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Tu Dieta</title>
<p align="center"><b>Selecci&oacute;n y adici&oacute;n de elementos a una lista
<script language="javascript">
var valor_total = 0;
var _list_kalorias = new Array();

function insertar_el_numero(op) {
    var chosenoption=op.options[op.selectedIndex] //this refers to "selectmenu"
    if (!isNaN(chosenoption.value)){
         _list_kalorias.push(chosenoption);
         calculate();
    }
}
function calculate(){
    var form = document.getElementById('form-carnes');
    var txt='';
    valor_total=0;
    for(var i =0;i<_list_kalorias.length;i++ ){
        var op = _list_kalorias[i];
        txt+=op.text +':'+op.value+"\n"; 
        valor_total += parseInt(op.value);
    }
    form.seleccionados.value=txt;
    form.suma.value=valor_total;
}

// End -->
</script>
</head>
</b>
<body style="font-family: Verdana">
</p>
<form id="form-carnes" name="formularios" action=""/>
<select name="form_carnes" onchange="insertar_el_numero(this);"/>
<?php
mysql_query 
("SET NAMES 'utf8'");
do {
?>
<option value="<?php echo $row_registro['kilocalorias'?>"><?php echo $row_registro['nombre']?></option>
<?php
} while ($row_registro mysql_fetch_assoc($registro));
$rows mysql_num_rows($registro);
if(
$rows 0) {
mysql_data_seek($registro0);
$row_registro mysql_fetch_assoc($registro);
}
?>

</select><font face="Arial, Helvetica, Sans Serif" size="2">Elementos a&ntilde;adidos a la lista:</font><br>
<textarea cols="40" rows="10" name="seleccionados"></textarea>
<textarea cols="10" rows="10" name="suma"></textarea>
</form>
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #7 (permalink)  
Antiguo 18/03/2012, 14:44
 
Fecha de Ingreso: octubre-2008
Mensajes: 70
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Variables tomada con php no puedo sumarlas con javascript

No tengo palabras para agradecerte el script. Muchísimas gracias, funciona a la perfección, ahora mismo me voy a poner a analizarlo y compararlo con el mío para ver donde cometí los errores. Saludos

Etiquetas: formulario, php, variables
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 10:50.