Foros del Web » Programando para Internet » PHP »

Problema con calculadora en PHP

Estas en el tema de Problema con calculadora en PHP en el foro de PHP en Foros del Web. Primero que todo. Un Cordial saludo a todos. Pues el problema es el siguiente, lo que trato de hacer es una calculadora, pero tengo algunos ...
  #1 (permalink)  
Antiguo 11/03/2012, 14:01
Avatar de DeivisAndres  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia
Mensajes: 305
Antigüedad: 12 años, 2 meses
Puntos: 41
Pregunta Problema con calculadora en PHP

Primero que todo.
Un Cordial saludo a todos.
Pues el problema es el siguiente, lo que trato de hacer es una calculadora, pero tengo algunos problemas con el código, pues les mostrare lo que he hecho para ver que es lo que estoy haciendo mal...
Pues tengo 2 archivos.

index.php
Código Javascript:
Ver original
  1. <?php
  2. //La session es una forma de almacenar datos entre llamadas a las paginas o script
  3. //Que se guardan en la computador del usuario o en el navegador
  4. //Siempre tiene que ir al inicio del codigo html
  5. session_start();
  6. ?>
  7. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  8. <html xmlns="http://www.w3.org/1999/xhtml">
  9. <head>
  10. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  11. <title>Calculadora</title>
  12. </head>
  13. <body>
  14. <?php
  15. //"isset" retorna a verdadero si la variable que se le pasa como argumento esta definida si no esta la retorna como falso
  16. if (!isset($_SESSION["calc_init"])){
  17.     //Para saber cuando la calculadora acaba de iniciar o se acaba de resetiar
  18.     //Eso lo sabremos con la tecla "C".
  19.     $_SESSION["calc_init"] = true;
  20.     $_SESSION["calc_numeroactual"] = "";
  21.     $_SESSION["calc_numeroanterior"] = "";
  22.     $_SESSION["calc_op"] = false;
  23.     $_SESSION["calc_op_tipo"] = "";
  24.     /*
  25.      *asignar las variables locales los valores de las variables en el arreglo de variable de las
  26.      *session, por ejemplo si la calculadora esta en medio de una operacion
  27.      *como suma, resta o multiplicacion la variable calc_op sera verdadera y mostraremos el
  28.      *numero anterior.
  29.  
  30.      *si vamos a sumar 3 + 5 escribimos el 3 en la caja de texto "numeroactual" y al darle el
  31.      *boton "+" el 3 pasa a la caja de texto "numeroanterior" y nos deja el texto "numeroactual"
  32.      *en blanco para escribir el otro numero a sumar con el 3.
  33.      */
  34.     $numeroactual = $_SESSION["calc_numeroactual"];
  35.     $numeroanterior = $_SESSION["calc_numeroanterior"];
  36.     $calc_op = $_SESSION["calc_op"];
  37.     $calc_op_tipo = $_SESSION["calc_op_tipo"];
  38.    
  39.     if ($calc_op == true){
  40.         $show_numeroanterior = $calc_numeroanterior . " " . $calc_op_tipo;
  41.     } else {
  42.         $show_numeroanterior = " ";
  43.     }
  44.     }
  45.  
  46. ?>
  47. <form action="calcular.php" method="post">
  48. <!--como mostramos los numeros en la caja de texto, pues sencillo solo tenemos que poner en la propiedad del "form", llamada "value"-->
  49. <input name="numeroanterior" type="text" size="20" value="<?php echo $numeroanterior; ?>" readonly="true" /><br />
  50. <input name="numeroactual" type="text" size="20" value="<?php echo $numeroactual; ?>" readonly="true" /><br />
  51. <input name="tecla" type="submit" value="1" />
  52. <input name="tecla" type="submit" value="2" />
  53. <input name="tecla" type="submit" value="3" />
  54. <input name="tecla" type="submit" value="*" /><br />
  55. <input name="tecla" type="submit" value="4" />
  56. <input name="tecla" type="submit" value="5" />
  57. <input name="tecla" type="submit" value="6" />
  58. <input name="tecla" type="submit" value="-" /><br />
  59. <input name="tecla" type="submit" value="7" />
  60. <input name="tecla" type="submit" value="8" />
  61. <input name="tecla" type="submit" value="9" />
  62. <input name="tecla" type="submit" value="+" /><br />
  63. <input name="tecla" type="submit" value="0" />
  64. <input name="tecla" type="submit" value="." />
  65. <input name="tecla" type="submit" value="/" />
  66. <input name="tecla" type="submit" value="C" />
  67. <input name="tecla" type="submit" value="=" />
  68. </form>
  69. </body>
  70. </html>

calcular.php
Código Javascript:
Ver original
  1. <?php
  2.     session_start();
  3.     //Antes que nada hay que definir la variable "tecla" con el metodo "POST".
  4.     if (isset($_POST["tecla"])){
  5.         //despues verificamos si hemos presionado la tecla "C" de la calculadora, si presionamos la tecla "C" vamos a resetearla.
  6.         if ($_POST["tecla"] == "C"){
  7.           //Se resetea.
  8.           session_destroy();
  9.         } else {
  10.             //si se preciono la "tecla" "1" al texto "numeroactual" le vamos agragar un "1".
  11.                if ($_POST["tecla"] == "1"){
  12.                     //esta es almacenado al campo calc_numeroactual como tipo cadena.
  13.                     $_SESSION["calc_numeroactual"]  = "1";
  14.                } elseif ($_POST["tecla"] == "2"){
  15.                     $_SESSION["calc_numeroactual"]  = "2";
  16.                } elseif ($_POST["tecla"] == "3"){
  17.                     $_SESSION["calc_numeroactual"]  = "3";
  18.                } elseif ($_POST["tecla"] == "4"){
  19.                     $_SESSION["calc_numeroactual"]  = "4";
  20.                } elseif ($_POST["tecla"] == "5"){
  21.                     $_SESSION["calc_numeroactual"]  = "5";
  22.                } elseif ($_POST["tecla"] == "6"){
  23.                     $_SESSION["calc_numeroactual"]  = "6";
  24.                } elseif ($_POST["tecla"] == "7"){
  25.                     $_SESSION["calc_numeroactual"]  = "7";
  26.                } elseif ($_POST["tecla"] == "8"){
  27.                     $_SESSION["calc_numeroactual"]  = "8";
  28.                } elseif ($_POST["tecla"] == "9"){
  29.                     $_SESSION["calc_numeroactual"]  = "9";
  30.                 //cuando la tecla es "0".
  31.                } elseif ($_POST["tecla"] == "0"){
  32.                    //Vamos a verificar que el texto "numeroactual" este en blanco.
  33.                     if ($_SESSION["calc_numeroactual"]  != ""){
  34.                         //Si esta en blanco se va agregar un "0".
  35.                          $_SESSION["calc_numeroactual"]  = "0";
  36.                     }
  37.                     //cuando la tecla es un ".".
  38.               } elseif ($_POST["tecla"] == "."){
  39.                   //Vamos a verificar que el texto "numeroactual" no este en blanco.
  40.                     if ($_SESSION["calc_numeroactual"]  != ""){
  41.                         //Si existe el "." no agregamos nada.
  42.                          if (arsort($_SESSION["calc_numeroactual"], ".") == false){
  43.                               $_SESSION["calc_numeroactual"] = ".";
  44.                           }
  45.                      } else {
  46.                          //Si esta en blanco vamos agregar el "0.".
  47.                         $_SESSION["calc_numeroactual"] = "0.";
  48.                      }
  49.                      /*
  50.                       *Pasamos a la primero operacion, en este caso seria la suma. primero almacenamos en la
  51.                       *variable "calc_op" el valor verdadero para decir que estamos dentro de una operacion.
  52.                       *en la variable "calc_op_tipo" almacenamos el "+" que quiere decir que estamos haciendo
  53.                       *una suma. Entonces el "clac_numeroactual" vamos a guardarlo en una variable temporal
  54.                       *que seria "numero" paraluego asignarle a la varible de "calc_numeroanterior", y a la  
  55.                       *variable "calc_numeroactual" lo dejamos en blanco para darle la siguiente sifra.
  56.                       */
  57.                } elseif ($_POST["tecla"] == "+"){
  58.                    //Suma.               
  59.                     $_SESSION["calc_op"] = true;
  60.                     $_SESSION["calc_op_tipo"] = "+";
  61.                     $numero = $_SESSION["calc_numeroactual"];
  62.                     $_SESSION["calc_numeroanterior"] = $numero;
  63.                     $_SESSION["calc_numeroactual"] = "";
  64.                } elseif ($_POST["tecla"] == "-"){
  65.                    //Resta.
  66.                     $_SESSION["calc_op"] = true;
  67.                     $_SESSION["calc_op_tipo"] = "-";
  68.                     $numero = $_SESSION["calc_numeroactual"];
  69.                     $_SESSION["calc_numeroanterior"] = $numero;
  70.                     $_SESSION["calc_numeroactual"] = "";
  71.                } elseif ($_POST["tecla"] == "*"){
  72.                    //Multiplicacion.
  73.                     $_SESSION["calc_op"] = true;
  74.                     $_SESSION["calc_op_tipo"] = "*";
  75.                     $numero = $_SESSION["calc_numeroactual"];
  76.                     $_SESSION["calc_numeroanterior"] = $numero;
  77.                     $_SESSION["calc_numeroactual"] = "";
  78.                } elseif ($_POST["tecla"] == "/"){
  79.                    //Divicion.
  80.                     $_SESSION["calc_op"] = true;
  81.                     $_SESSION["calc_op_tipo"] = "/";
  82.                     $numero = $_SESSION["calc_numeroactual"];
  83.                     $_SESSION["calc_numeroanterior"] = $numero;
  84.                     $_SESSION["calc_numeroactual"] = "";
  85.                     //Con la "tecla" de "=".
  86.                } elseif ($_POST["tecla"] == "="){
  87.                     //Igual.
  88.                     //Primero vamos a verificar si estamos dentro de una operacion.              
  89.                     if ($_SESSION["calc_op"] == true) {
  90.                         if ($_SESSION["calc_op_tipo"] == "+"){
  91.                             $_SESSION["calc_numeroactual"] = $_SESSION["calc_numeroanterior"] + $_POST["numeroactual"];
  92.                         }
  93.                         if ($_SESSION["calc_op_tipo"] == "-"){
  94.                             $_SESSION["calc_numeroactual"] = $_SESSION["calc_numeroanterior"] - $_POST["numeroactual"];
  95.                         }
  96.                         if ($_SESSION["calc_op_tipo"] == "*"){
  97.                             $_SESSION["calc_numeroactual"] = $_SESSION["calc_numeroanterior"] * $_POST["numeroactual"];
  98.                         }
  99.                         if ($_SESSION["calc_op_tipo"] == "/"){
  100.                             /*
  101.                              *Tenemos cuidado que no sea "0", si es sero vamos a retomar a "1", si no tomamos el "numeroactual" que en este caso                             *seria distinto a "0".
  102.                              */
  103.                             $_SESSION["calc_numeroactual"] = $_SESSION["calc_numeroanterior"] / ($_POST["numeroactual"] == 0 ? 1 : $_POST["numeroactual"]);
  104.                         }
  105.                        
  106.                         //Despues de hacer la operacion la variable "calc_numeroanterior" lo dejamos en blanco.
  107.                         $_SESSION["calc_numeroanterior"] = "";
  108.                         //Como ya terminamos la operacion lo ponemos false.
  109.                         $_SESSION["calc_op"] = false;
  110.                         //Y dejamos en blanco la varible "calc_op_tipo".
  111.                         $_SESSION["calc_op_tipo"] = "";
  112.                     }
  113.                }
  114.         }
  115.    }
  116.    /*
  117.     *Despues de hacer todo, nos vamos a la calculadora, en este caso vamos a redireccionar el naveganor, usando la funcion "header". y asi volvera          *a empesar el ciclo
  118.     */
  119.    header("Location: index.php");
  120.  
  121. ?>

Si tienen alguna idea de que estoy haciendo mal escriban lo se lo agradecería de verdad.
  #2 (permalink)  
Antiguo 12/03/2012, 03:17
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Problema con calculadora en PHP

Cuál es la pregunta? Cuál es tu problema CONCRETO?
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 12/03/2012, 08:12
Avatar de DeivisAndres  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia
Mensajes: 305
Antigüedad: 12 años, 2 meses
Puntos: 41
Pregunta Respuesta: Problema con calculadora en PHP

Cita:
Iniciado por repara2 Ver Mensaje
Cuál es la pregunta? Cuál es tu problema CONCRETO?
Pues lo que pasa es que cuando presiono un botón que seria un input tipo submit cualquiera no me sale nada en la pantalla que en este caso seria el input = text, puesto que en la pagina "calcular.php" las condiciones están bien, pero pienso que el problema debe estar en el index.php... por esta parte:

Código Javascript:
Ver original
  1. $numeroactual = $_SESSION["calc_numeroactual"];
  2.     $numeroanterior = $_SESSION["calc_numeroanterior"];
  3.     $calc_op = $_SESSION["calc_op"];
  4.     $calc_op_tipo = $_SESSION["calc_op_tipo"];
  5.    
  6.     if ($calc_op == true){
  7.         $show_numeroanterior = $calc_numeroanterior . " " . $calc_op_tipo;
  8.     } else {
  9.         $show_numeroanterior = " ";
  10.     }
  11.     }
  #4 (permalink)  
Antiguo 12/03/2012, 12:49
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Problema con calculadora en PHP

SI quieres salir de dudas, puedes hacer, en el index.php, esto:

Código PHP:
echo '<pre>';
print_r($_SESSION);
echo 
'</pre>'
Así verás claramente que estás guardando en $_SESSION :)
__________________
>> Eleazan's Source
>> @Eleazan
  #5 (permalink)  
Antiguo 13/03/2012, 08:52
Avatar de DeivisAndres  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia
Mensajes: 305
Antigüedad: 12 años, 2 meses
Puntos: 41
Respuesta: Problema con calculadora en PHP

Bueno probé lo que me decías, pero parece que al presionar el input="=" no me muestra el resultado de la operación si que me sobrescribe le numero ingresado de ultimo...
  #6 (permalink)  
Antiguo 13/03/2012, 10:07
Avatar de DeivisAndres  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia
Mensajes: 305
Antigüedad: 12 años, 2 meses
Puntos: 41
De acuerdo Respuesta: Problema con calculadora en PHP

Bueno modifique un poco el código y me salio, pues acorte un poco.. he hice algunos cambios y ya me salio, gracias por todo al los que me ayudaron...



Solucionado...

Etiquetas: Ninguno
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 12:35.