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
<?php //La session es una forma de almacenar datos entre llamadas a las paginas o script //Que se guardan en la computador del usuario o en el navegador //Siempre tiene que ir al inicio del codigo html session_start(); ?> <!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>Calculadora</title> </head> <body> <?php //"isset" retorna a verdadero si la variable que se le pasa como argumento esta definida si no esta la retorna como falso if (!isset($_SESSION["calc_init"])){ //Para saber cuando la calculadora acaba de iniciar o se acaba de resetiar //Eso lo sabremos con la tecla "C". $_SESSION["calc_init"] = true; $_SESSION["calc_numeroactual"] = ""; $_SESSION["calc_numeroanterior"] = ""; $_SESSION["calc_op"] = false; $_SESSION["calc_op_tipo"] = ""; /* *asignar las variables locales los valores de las variables en el arreglo de variable de las *session, por ejemplo si la calculadora esta en medio de una operacion *como suma, resta o multiplicacion la variable calc_op sera verdadera y mostraremos el *numero anterior. *si vamos a sumar 3 + 5 escribimos el 3 en la caja de texto "numeroactual" y al darle el *boton "+" el 3 pasa a la caja de texto "numeroanterior" y nos deja el texto "numeroactual" *en blanco para escribir el otro numero a sumar con el 3. */ $numeroactual = $_SESSION["calc_numeroactual"]; $numeroanterior = $_SESSION["calc_numeroanterior"]; $calc_op = $_SESSION["calc_op"]; $calc_op_tipo = $_SESSION["calc_op_tipo"]; if ($calc_op == true){ $show_numeroanterior = $calc_numeroanterior . " " . $calc_op_tipo; } else { $show_numeroanterior = " "; } } ?> <form action="calcular.php" method="post"> <!--como mostramos los numeros en la caja de texto, pues sencillo solo tenemos que poner en la propiedad del "form", llamada "value"--> <input name="numeroanterior" type="text" size="20" value="<?php echo $numeroanterior; ?>" readonly="true" /><br /> <input name="numeroactual" type="text" size="20" value="<?php echo $numeroactual; ?>" readonly="true" /><br /> <input name="tecla" type="submit" value="1" /> <input name="tecla" type="submit" value="2" /> <input name="tecla" type="submit" value="3" /> <input name="tecla" type="submit" value="*" /><br /> <input name="tecla" type="submit" value="4" /> <input name="tecla" type="submit" value="5" /> <input name="tecla" type="submit" value="6" /> <input name="tecla" type="submit" value="-" /><br /> <input name="tecla" type="submit" value="7" /> <input name="tecla" type="submit" value="8" /> <input name="tecla" type="submit" value="9" /> <input name="tecla" type="submit" value="+" /><br /> <input name="tecla" type="submit" value="0" /> <input name="tecla" type="submit" value="." /> <input name="tecla" type="submit" value="/" /> <input name="tecla" type="submit" value="C" /> <input name="tecla" type="submit" value="=" /> </form> </body> </html>
calcular.php
Código Javascript:
Ver original
<?php session_start(); //Antes que nada hay que definir la variable "tecla" con el metodo "POST". if (isset($_POST["tecla"])){ //despues verificamos si hemos presionado la tecla "C" de la calculadora, si presionamos la tecla "C" vamos a resetearla. if ($_POST["tecla"] == "C"){ //Se resetea. session_destroy(); } else { //si se preciono la "tecla" "1" al texto "numeroactual" le vamos agragar un "1". if ($_POST["tecla"] == "1"){ //esta es almacenado al campo calc_numeroactual como tipo cadena. $_SESSION["calc_numeroactual"] = "1"; } elseif ($_POST["tecla"] == "2"){ $_SESSION["calc_numeroactual"] = "2"; } elseif ($_POST["tecla"] == "3"){ $_SESSION["calc_numeroactual"] = "3"; } elseif ($_POST["tecla"] == "4"){ $_SESSION["calc_numeroactual"] = "4"; } elseif ($_POST["tecla"] == "5"){ $_SESSION["calc_numeroactual"] = "5"; } elseif ($_POST["tecla"] == "6"){ $_SESSION["calc_numeroactual"] = "6"; } elseif ($_POST["tecla"] == "7"){ $_SESSION["calc_numeroactual"] = "7"; } elseif ($_POST["tecla"] == "8"){ $_SESSION["calc_numeroactual"] = "8"; } elseif ($_POST["tecla"] == "9"){ $_SESSION["calc_numeroactual"] = "9"; //cuando la tecla es "0". } elseif ($_POST["tecla"] == "0"){ //Vamos a verificar que el texto "numeroactual" este en blanco. if ($_SESSION["calc_numeroactual"] != ""){ //Si esta en blanco se va agregar un "0". $_SESSION["calc_numeroactual"] = "0"; } //cuando la tecla es un ".". } elseif ($_POST["tecla"] == "."){ //Vamos a verificar que el texto "numeroactual" no este en blanco. if ($_SESSION["calc_numeroactual"] != ""){ //Si existe el "." no agregamos nada. if (arsort($_SESSION["calc_numeroactual"], ".") == false){ $_SESSION["calc_numeroactual"] = "."; } } else { //Si esta en blanco vamos agregar el "0.". $_SESSION["calc_numeroactual"] = "0."; } /* *Pasamos a la primero operacion, en este caso seria la suma. primero almacenamos en la *variable "calc_op" el valor verdadero para decir que estamos dentro de una operacion. *en la variable "calc_op_tipo" almacenamos el "+" que quiere decir que estamos haciendo *una suma. Entonces el "clac_numeroactual" vamos a guardarlo en una variable temporal *que seria "numero" paraluego asignarle a la varible de "calc_numeroanterior", y a la *variable "calc_numeroactual" lo dejamos en blanco para darle la siguiente sifra. */ } elseif ($_POST["tecla"] == "+"){ //Suma. $_SESSION["calc_op"] = true; $_SESSION["calc_op_tipo"] = "+"; $numero = $_SESSION["calc_numeroactual"]; $_SESSION["calc_numeroanterior"] = $numero; $_SESSION["calc_numeroactual"] = ""; } elseif ($_POST["tecla"] == "-"){ //Resta. $_SESSION["calc_op"] = true; $_SESSION["calc_op_tipo"] = "-"; $numero = $_SESSION["calc_numeroactual"]; $_SESSION["calc_numeroanterior"] = $numero; $_SESSION["calc_numeroactual"] = ""; } elseif ($_POST["tecla"] == "*"){ //Multiplicacion. $_SESSION["calc_op"] = true; $_SESSION["calc_op_tipo"] = "*"; $numero = $_SESSION["calc_numeroactual"]; $_SESSION["calc_numeroanterior"] = $numero; $_SESSION["calc_numeroactual"] = ""; } elseif ($_POST["tecla"] == "/"){ //Divicion. $_SESSION["calc_op"] = true; $_SESSION["calc_op_tipo"] = "/"; $numero = $_SESSION["calc_numeroactual"]; $_SESSION["calc_numeroanterior"] = $numero; $_SESSION["calc_numeroactual"] = ""; //Con la "tecla" de "=". } elseif ($_POST["tecla"] == "="){ //Igual. //Primero vamos a verificar si estamos dentro de una operacion. if ($_SESSION["calc_op"] == true) { if ($_SESSION["calc_op_tipo"] == "+"){ $_SESSION["calc_numeroactual"] = $_SESSION["calc_numeroanterior"] + $_POST["numeroactual"]; } if ($_SESSION["calc_op_tipo"] == "-"){ $_SESSION["calc_numeroactual"] = $_SESSION["calc_numeroanterior"] - $_POST["numeroactual"]; } if ($_SESSION["calc_op_tipo"] == "*"){ $_SESSION["calc_numeroactual"] = $_SESSION["calc_numeroanterior"] * $_POST["numeroactual"]; } if ($_SESSION["calc_op_tipo"] == "/"){ /* *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". */ $_SESSION["calc_numeroactual"] = $_SESSION["calc_numeroanterior"] / ($_POST["numeroactual"] == 0 ? 1 : $_POST["numeroactual"]); } //Despues de hacer la operacion la variable "calc_numeroanterior" lo dejamos en blanco. $_SESSION["calc_numeroanterior"] = ""; //Como ya terminamos la operacion lo ponemos false. $_SESSION["calc_op"] = false; //Y dejamos en blanco la varible "calc_op_tipo". $_SESSION["calc_op_tipo"] = ""; } } } } /* *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 */ header("Location: index.php"); ?>
Si tienen alguna idea de que estoy haciendo mal escriban lo se lo agradecería de verdad.