PHP - problema al realizar una calculadora

   
Vista:
Imágen de perfil de Jorge David

problema al realizar una calculadora

Publicado por Jorge David sigol_03@hotmail.com (1 intervención) el 16/04/2013 03:53:49
Hola amigos tengo un pequeño problema me pidiera que haga una pequeña calculadorita en php, tengo que crea dos formularios uno para ingresar los numeros y otro para que me imprima el resultado,en el primer formulario tengo que hacer tres textbox o sea:

<form action="calcularnumeros.php" method="get">
<tr>
<td>Numero1:</td>
<td><input type="text" name="txtnum1"/></td>
</tr>
y donde esta el problema es que tambien tengo que ingresar el operador ya sea suma, resta, multiplicacion o divicion en un segundo textbox:

<tr>
<td>Operador:</td>
<td><input type="text" name="txtope"/></td>
</tr>

y luego el segundo numero.

<tr>
<td>Numero2:</td>
<td><input type="text" name="txtnum2"/></td>
</tr>

y enviamos:

<tr>
<td><input type="submit" name="Calcular" /></td>
</tr>

Cuando envio a calcularnumeros.php que esta lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
 
$num1 = $_GET["txtnum1"];
$oper = $_GET["txtope"];
$num2 = $_GET["txtnum2"];
 
        if ($oper=="+")
 
        {
          $result=($num1+$num2);
           echo "La suma es: ".$result;
           }
 
 
            else if ($oper=='-')
              {
                $result2=($num1-$num2);
                echo "La resta es: ".$result2;
                }
 
 
                    else if ($oper=='*')
                      {
                        $result3=($num1*$num2);
                        echo "La multiplicacion es: ".$result3;
                        }
 
 
                            else if ($oper=='/')
                                  {
                                    $result4=($num1/$num2);
                                    echo "La divicion es: ".$result4;
                                    }
 
 
                                     else
                                     {
                                         echo "Algo esta mal";
                                     }
 
?>


y siempre me muestra el mensaje del else que alguien me puede ayudar les voy a agradecer.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

problema al realizar una calculadora

Publicado por xve (5523 intervenciones) el 16/04/2013 07:54:36
Hola Jorge, he realizado la prueba y me funciona perfectamente... aquí te adjunto el código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$oper = $_GET["txtope"];
 
if ($oper=="+")
{
    echo "suma";
}else if ($oper=='-'){
    echo "resta";
}else if ($oper=='*'){
    echo "multiplicacion";
}else if ($oper=='/'){
    echo "division";
}else{
    echo "Algo esta mal";
}
?>
<form action="" method="get">
<input type="text" name="txtope"/>
</form>


Nos puedes mostrar el archivo del formulario o el formulario entero?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema al realizar una calculadora

Publicado por Iván (9 intervenciones) el 16/04/2013 11:32:52
Hola, Jorge

el problema lo tienes en que pasas los parámetros por GET. El símbolo más (+) al pasarlo por url se transforma en un espacio en blanco, en %20 o continúa siendo +, en función del navegador.

Al margen, siempre, siempre hay que hacer comprobaciones en los parámetros que procedan de un formulario. En este caso tienes la condición de división por cero, o que los números introducidos no sean valores numéricos.

Tienes dos opciones: pasar el formulario por POST o asignar un valor numérico a las operaciones, esto es poniéndolas en un SELECT en lugar de en un INPUT de texto. Te dejo el código HTML.

1
2
3
4
5
6
7
8
9
10
11
12
<form id="myform" action="calculanumeros.php" method="GET">
<fieldset><legend>Calcular operaciones</legend>
<p><label for="number1">Primer número</label><input type="text" name="number1" id="number1" value="" /></p>
<p><label for="operator">Operación</label><select name="operator" id="operator">
<option value="1">Suma</option>
<option value="2">Resta</option>
<option value="3">Multiplicación</option>
<option value="4">División</option>
</select></p>
<p><label for="number2">Segundo número</label><input type="text" name="number2" id="number2" value="" /></p>
<p><input type="submit" value="Calcular" /></p>
</form>


Ahora, en calculanumeros.php:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// comprobación de seguridad
if (!isset($_GET['number1']) || !isset($_GET['number2']) || !isset($_GET['operator'])){
    die('ERR #1');
}
$number 1 = $_GET['number1'];
$number2 = $_GET['number2'];
$operator = (int) $_GET['operator']; // casting a entero
 
// comprobar datos numéricos
if (!is_numeric($number1)){
    die('El primer argumento no es un valor numérico');
}
if (!is_numeric($number2)){
    die('El segundo argumento no es un valor numérico');
}
 
switch ($operator){
    case 2 :
                   $value = $number1 - $number2;
                    break;
    case 3 :
                    $value = $number1 * $number2;
                    break;
    case 4 :
                    if ($number2 == 0) $value = 'imposible dividir por cero';
                    else $value = $number1/$number2;
                    break;
     default:
                    $value = $number1 + $number2;
                    break;
}
 
echo 'El resultado es: ' . $value;


Te dejo también un tutorial con buenos consejos de programación php

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar