Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   PHP (http://www.forosdelweb.com/f18/)
-   -   duda TONTA con calculadora (http://www.forosdelweb.com/f18/duda-tonta-con-calculadora-574561/)

rogertm 10/04/2008 09:11

duda TONTA con calculadora
 
Cita:

Hola rogertm hemos notado que no has compartido un mensaje con nosotros en varias semanas. Te invitamos a hacer una pregunta, dar una solución o entablar una conversación con el resto de miembros de Foros del Web.
gracias FDW, es que estoy recuperandome de una cirugia en mis ojos x_O...

bueno, el caso es que estaba bien aburrido en casa y me puse a hacer una calculadora, enviando los datos mediante un form via post y choque con algo que me ha frenado y estoy seguro que la solucion es bien sencilla, pero que no doy con ella, aqui les dejo el codigo:
Código PHP:

<?php
if(isset($_POST['ej']) && $_POST['ej'] == 'Ejecutar'){
    if(!empty(
$_POST[a]) && !empty($_POST[b]) && !empty($_POST[opr])){
        
// verifico si los datos enviados son numericos (numeros)
        
if(ctype_digit($_POST[a]) && ctype_digit($_POST[b])){
            
$a $_POST[a];
            
$b $_POST[b];
            
$opr $_POST[opr];
            
$result '$a'.$opr.'$b';
            echo 
$result;
            
//var_dump($a,$opr,$b);
        
}else{
             echo 
"a y b tienen que ser numeros";
        }
    }else{
        echo 
"No puede enviar campos vacios";
    }
}
?>
<form name="mat" method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
    <input type="text" name="a" />
    <select name="opr">
        <option value="">Operador</option>
        <option value="+">Sumar</option>
        <option value="-">Restar</option>
        <option value="*">Multiplicar</option>
        <option value="/">Dividir</option>
    </select>
    <input type="text" name="b" />
    <input type="submit" name="ej" value="Ejecutar" />
</form>

el problema en si es, que el operador, me lo esta enviando como un string, ya he intentado de mil y una forma y no se como hacer para que me imprima el resultado de la cuanta matematica que envio por el formulario, porque lo que hace es imprimir lo que le mando, por ej: 2 + 2, el lugar de darme el resultado, que es 4

que estoy haciendo mal?
que no he hecho?

gracias de antemano....

PD: si no entro al foro a revisar en unos dias, es que no he tenido oportunidad de hacerlo, espero me disculpen, es que tengo que venir al trabajo a revisar y aun me quedan unos dias de reposo, ojala y cuando regrese tenga alguna solucion.

saludos y suerte

darkasecas 10/04/2008 09:21

Re: duda TONTA con calculadora
 
eval :)
...

rogertm 10/04/2008 09:33

Re: duda TONTA con calculadora
 
ño...! que rapido, jeje, lo repaso en casa y en cuanto pase por aqui comento, pero creo que si, que eval es la solucion.

gracias millllll

rogertm 11/04/2008 08:37

Re: duda TONTA con calculadora
 
hola, pues nop, con eval no me funciona, sigue igual :'(:'(:'(

darkasecas 11/04/2008 09:07

Re: duda TONTA con calculadora
 
Mm a mi me funciono una prueba que hice, pon el codigo que utilizas para ver que esta mal >_>

usermax 11/04/2008 09:17

Re: duda TONTA con calculadora
 
Hola

Aquí te hice una función para resolver tu problema:

Código PHP:

function operar($a,$b,$opr) {
 
$a = (int) $a;
$b = (int) $b;
 
switch (
$opr) {
case 
"+":
$result $a+$b;
break;
case 
"-":
$result $a-$b;
break;
case 
"/":
$result $a/$b;
break;
case 
"*":
$result $a*$b;
break;
}
return 
$result;
}
 
// Implementacion
$a $_POST['a'];
$b $_POST['b'];
$opr $_POST['opr'];
echo 
operar($a,$b,$opr); 

Me comentas...

Saludos

pateketrueke 11/04/2008 09:20

Re: duda TONTA con calculadora
 
pienso que el eval funciona si entregas toda la expresion

$expr = "12 * 60";
print eval($expr);

si esto no funciona...

print eval('?>' . $expr); //fix

haber si asi sale algo...

rogertm 11/04/2008 09:34

Re: duda TONTA con calculadora
 
hola gentes, como siempre gracias por responder tan rapido, creo que con la funcion que propone usermax funcionara, la probare en casa y en cuanto tenga un tiempo paso por aqui y les comento....
darkasecas, no me di cuenta y olvide cargar con el codigo para aca, de todas maneras luego lo paso.

saludos y gracias milllll una vez mas

PD v2.0: si no entro al foro a revisar en unos dias, es que no he tenido oportunidad de hacerlo, espero me disculpen, es que tengo que venir al trabajo a revisar y aun me quedan unos dias de reposo, ojala y cuando regrese tenga alguna solucion.

rogertm 15/04/2008 09:19

Re: duda TONTA con calculadora
 
hola nuevamente, para comenzar darkasecas, lo que hice con eval que no me salio fue esto:
Código PHP:

<?php
/*************/
eval("\$result = \"$result\";");
echo 
$result;
/*************/

fijandome por el ejemplo que hay en el manual, de todas formas me salio todo como quiero con la funcion que propuso usermax, aqui les dejo todo el codigo
Código PHP:

<?php
if(isset($_POST['ej']) && $_POST['ej'] == 'Ejecutar') {
    if(!empty(
$_POST['a']) && !empty($_POST['b']) && !empty($_POST['opr'])) {
        if(
ctype_digit($_POST['a']) && ctype_digit($_POST['b'])) {
            
$a $_POST['a'];
            
$b $_POST['b'];
            
$opr $_POST['opr'];
            function 
operar($a$b$opr) {
                
//$a = (int)$a;
                //$b = (int)$b;
                
switch($opr) {
                    case 
"+":
                        
$result $a $b;
                        break;
                    case 
"-":
                        
$result $a $b;
                        break;
                    case 
"*":
                        
$result $a $b;
                        break;
                    case 
"/":
                        
$result $a $b;
                        break;
                }
                return 
$result;
            }
            echo 
"$a $opr $b = "operar($a$b$opr);
        } else {
            echo 
"a y b tienen que ser numeros";
        }
    } else {
        echo 
"No puede enviar campos vacios";
    }
}
?>
<!-- el formulario sigue igual -->

muchas gracias reiteradas a todos, como estoy impartiendo un curso basico de php esto me sirve para ponerle un ejercicio a los alumnos que tengo, :si:.

saludos y suerte

pateketrueke 15/04/2008 09:29

Re: duda TONTA con calculadora
 
mira... yo hize esto pekeño

fijate en las comillas dobles, ke rodean los numeros...
inclusive evalua atraves de ellas.... pero, si encomillaramos los operadores, no!

Código PHP:

  eval('$n="2"*4+("260"/17)-rand();');
  print 
$n

weno, solo decia...


La zona horaria es GMT -6. Ahora son las 05:31.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.