Foros del Web » Programando para Internet » PHP »

Concatenacion de variables

Estas en el tema de Concatenacion de variables en el foro de PHP en Foros del Web. Saludos a todos. Estoy haciendo una calculadora en php y tengo problemas para mostrar los numeros en el visor (estos solo deben ser ingresados presionando ...
  #1 (permalink)  
Antiguo 24/10/2008, 23:49
 
Fecha de Ingreso: octubre-2008
Mensajes: 3
Antigüedad: 15 años, 6 meses
Puntos: 0
Concatenacion de variables

Saludos a todos.
Estoy haciendo una calculadora en php y tengo problemas para mostrar los numeros en el visor (estos solo deben ser ingresados presionando buttons tipo submit) mejor agrego el codigo y de ahi pongo mi duda.
Código:
<?php
session_start();
$dat=$_POST['num'];
$r=funresval($dat);
?>
<html>
<head>
  <title>Calculadora</title>
</head>

<body>
<form name="calc" method="post" action="calculadora7.php">
<input type="text" name="visor" value="<?echo $r;?>" readonly="readonly" maxlength="12" /><br /><br />
<input type="hidden" name="ref" />
<input type="submit" name="num" value="7" /><input type="submit" name="num" value="8" /><input type="submit" name="num" value="9" /> &nbsp;&nbsp;&nbsp; <input type="submit" name="suma" value="+" /><input type="submit" name="resta" value="-" /> <br />
<input type="submit" name="num" value="4" /><input type="submit" name="num" value="5" /><input type="submit" name="num" value="6" /> &nbsp;&nbsp;&nbsp; <input type="submit" name="mult" value="*" /><input type="submit" name="divs" value="/" /> <br />
<input type="submit" name="num" value="1" /><input type="submit" name="num" value="2" /><input type="submit" name="num" value="3" /> &nbsp;&nbsp;&nbsp; <input type="submit" name="buttn" value="=" /><input type="submit" name="borrar" value="C" /> <br />
<input type="submit" name="num" value="0" /> <br />
</form>

</body>

</html>

<? function funresval($dato) {
        static $resvar;
        $resvar=$dato;
        return $resvar.$dato;
    }
?>
Bueno mi problema es el sgte: ese codigo hace que en el visor me muestre solo 2 numeros al presionar los botones, necesito que los numeros vayan apareciendo en el visor a medida que uno presiona los botones numericos (al igual que la calculadora de windows).
Nota: este procedimiento lo quiero conseguir sin utilizar variables de sesion.
Bueno eso, cualquier comentario, sugerencia y ayuda es bienvenida :P
  #2 (permalink)  
Antiguo 25/10/2008, 00:15
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Respuesta: Concatenacion de variables

Hola lo que deberias hacer es cambiar las propiedades de los botones en vez de utilizar submit cambiarlas a button y añadir funciones javascript para que cuando presiones un button coloque el valor en el visor . Quizas te convenga echar una mirada por el foro de javascript. Suerte

Saludos

PD: Bienvenido al foro!!!
__________________
->Aprender es un proceso que incluye el error..
  #3 (permalink)  
Antiguo 25/10/2008, 10:06
 
Fecha de Ingreso: octubre-2008
Mensajes: 3
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Concatenacion de variables

Cita:
Iniciado por cala932 Ver Mensaje
Hola lo que deberias hacer es cambiar las propiedades de los botones en vez de utilizar submit cambiarlas a button y añadir funciones javascript para que cuando presiones un button coloque el valor en el visor . Quizas te convenga echar una mirada por el foro de javascript. Suerte

Saludos

PD: Bienvenido al foro!!!
Gracias por tu respuesta ^^
tengo unos pequeños inconvenientes. se me dio como tarea esta calc ya no la entregue por tiempo xD pero igual quiero hacerla...
la cosa es que tiene que ser con botones tipo submit y no puedo agregar javascript solo php. e ahi mis inconvenientes :P
  #4 (permalink)  
Antiguo 25/10/2008, 13:52
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: Concatenacion de variables

Buenas,

En lo que se refiere a la función en sí (funresvar), el problema está en que a la variable $resvar siempre le haces una asignación "simple" (el último número pulsado) y concatenas después en el return, pero deberías concatenar en la asignación de la varible $resvar y retornarla después sin más, es decir, no realizas las operaciones correctamente.

Pero tienes otro problema: aunque declaras la variable como estática, no te va a mantener su valor cada vez que lo llamas, es decir, cuando vuelves a cargar la página desde el formulario. Juraría que el valor de una variable estática se conserva en diferentes llamadas a la función siempre que sea dentro del ámbito de esa página, pero no entre páginas distintas (que aunque se trate de la misma, es una nueva llamada). Para mantener el valor de $r (o de $resvar, o de la variable que desees) con el planteamiento que tienes, yo creo que deberías usar variables de sesión (llevo poco con PHP de modo que tampoco puedo asegurarlo). Aunque dices que no las quieres tampoco (no entiendo entonces porqué incias la sesión en el código).

De todos modos, si cambias de idea y decides usar variables de sesión, podría servirte algo como esto (sin tocar nada del Html ni del formulario, sólo reemplazando el código PHP):

Código PHP:
<?php

session_start
();
if (!isset( 
$_SESSION['r'] ))   $_SESSION['r'] = 0;
if ( isset( 
$_POST['borrar'] )) $_SESSION['r'] = 0;
if ( isset( 
$_POST['num'] ))    $_SESSION['r'] = 10 $_SESSION['r'] + $_POST['num'];

$r $_SESSION['r'];

?>
Un saludo.
  #5 (permalink)  
Antiguo 25/10/2008, 17:33
 
Fecha de Ingreso: octubre-2008
Mensajes: 3
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Concatenacion de variables

De hecho tengo pensado usarlas pero para las operaciones, osea se supone segun las instrucciones que me dieron que debo almacenar el valor total de visor en una variable de sesion para generar la operacion deseada.
(de hecho yo lo lleve hecho asi en un principio)
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 02:57.