Foros del Web » Programando para Internet » PHP »

Pasar 4 + 2 a int mediante post

Estas en el tema de Pasar 4 + 2 a int mediante post en el foro de PHP en Foros del Web. Hola, quiero enviar por un formulario una operación matemática sencilla del tipo 4+2, 6+8-3*5, etc. y quiero que php entienda que es una operación que ...
  #1 (permalink)  
Antiguo 13/05/2009, 15:24
 
Fecha de Ingreso: abril-2007
Mensajes: 213
Antigüedad: 17 años
Puntos: 0
Pasar 4 + 2 a int mediante post

Hola, quiero enviar por un formulario una operación matemática sencilla del tipo 4+2, 6+8-3*5, etc. y quiero que php entienda que es una operación que tiene que hacer y me de el resultado, por ejemplo 6 en el caso de la primera.
  #2 (permalink)  
Antiguo 13/05/2009, 15:28
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Pasar 4 + 2 a int mediante post

Debes ponerles a los valores (int) delante de cada uno, esto hara que PHP los convierta a enteros.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #3 (permalink)  
Antiguo 13/05/2009, 15:31
 
Fecha de Ingreso: abril-2007
Mensajes: 213
Antigüedad: 17 años
Puntos: 0
Respuesta: Pasar 4 + 2 a int mediante post

No, se me olvido ponerlo ya lo hice:

<?

$ask = $_POST[c];
$result = (int)$ask;
echo"$result"; // Muestra 0 no 6

?>
  #4 (permalink)  
Antiguo 13/05/2009, 15:33
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 15 años, 8 meses
Puntos: 32
Respuesta: Pasar 4 + 2 a int mediante post

y para que quieres colocarle int? sabiendo que php ya sabe cuando es numero o cadena
$var=6+6;

echo $var -> 12
  #5 (permalink)  
Antiguo 13/05/2009, 15:33
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 8 meses
Puntos: 416
Respuesta: Pasar 4 + 2 a int mediante post

Puedes usar eval() para que PHP interprete la cadena que pasas por POST, eso si, mucho cuidadito con esta función.
http://www.php.net/manual/en/function.eval.php
  #6 (permalink)  
Antiguo 13/05/2009, 15:36
Avatar de Ryo
Ryo
 
Fecha de Ingreso: marzo-2008
Ubicación: Bilbao
Mensajes: 269
Antigüedad: 16 años, 1 mes
Puntos: 14
Respuesta: Pasar 4 + 2 a int mediante post

No parece que quiera pasar dos números en dos campos diferentes del formulario y pasarlos a enteros, sino pasar en un campo "4+2-1" y que dé como resultado 5.

Lo que pretendes tiene su miga. Necesitas una expresión regular para asegurarte de que te pasan algo que tenga sentido y crear un algoritmo que separe números de operadores para poder operar después. Tendrías que pensar bien qué tipo de operaciones vas a soportar, considerar la prioridad que tienen unos operadores sobre otros, mirar los paréntesis... Que yo sepa lo que pretendes no se puede hacer de forma nativa con PHP, así que tendrías que currártelo tú o buscar si alguien ya ha hecho algo parecido.

Edit: No había pensado en la función eval() que te comenta Ronruby. Prueba con eso a ver si te sirve. Eso sí, yo lo restringiría mucho... La expresión regular te vendrá bien igualmente.
  #7 (permalink)  
Antiguo 13/05/2009, 15:40
 
Fecha de Ingreso: abril-2007
Mensajes: 213
Antigüedad: 17 años
Puntos: 0
Respuesta: Pasar 4 + 2 a int mediante post

¿Qué pondria sin más $result = eval($ask) ?

Me da de resultado: , vamos nada

Si no puedo tratar de usar la Api de la calculadora de Google, pero antes quiero saber si se puede hacer esto (sin tener que recurrir a algoritmos complicados).

Última edición por carlosgs91; 13/05/2009 a las 15:50
  #8 (permalink)  
Antiguo 13/05/2009, 15:50
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 8 meses
Puntos: 416
Respuesta: Pasar 4 + 2 a int mediante post

Seria algo como:
Código PHP:
<?php

$ask 
"5+4-3";
eval(
"\$foo = $ask;");
var_dump($foo);

?>
Pero te recomiendo uses una expresión regular para filtrar todo lo que no sea numeros y/o los caracteres: +, - y si quieres * y /.
  #9 (permalink)  
Antiguo 13/05/2009, 15:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Pasar 4 + 2 a int mediante post

cierto, primer sería filtrar solo caracteres de operación y números..

Código PHP:
$foo $_POST['foo'];

if (
preg_match('/^[0-9\+\-\*\/%\s]+$/'$foo))
{
  echo eval(
"return ($foo);");

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 14/05/2009, 03:51
 
Fecha de Ingreso: abril-2007
Mensajes: 213
Antigüedad: 17 años
Puntos: 0
¿Calculadora en PHP?

Hola, pregunte con anterioridad en http://www.forosdelweb.com/f18/pasar...e-post-699166/ pero no funciona lo que me dijisteis.

Busco una calculadora en PHP, pero no una del tipo de dos inputs y un select que diga +, -, *, /, quiero enviar mediante un input en un formulario a través de POST una operación, por ejemplo 4+2-6*(7+2) y que PHP me de la solución. Si ya hay alguna calculadora científica hecha que lo haga me podeis pasar el enlace.

Gracias
  #11 (permalink)  
Antiguo 14/05/2009, 04:26
(Desactivado)
 
Fecha de Ingreso: abril-2009
Ubicación: En mi casa
Mensajes: 191
Antigüedad: 15 años
Puntos: 0
Respuesta: ¿Calculadora en PHP?

http://www.google.com/search?ie=UTF-...%ADfica+en+php
  #12 (permalink)  
Antiguo 14/05/2009, 13:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: ¿Calculadora en PHP?

Temas unidos porfavor NO dupliques temas.,
  #13 (permalink)  
Antiguo 14/05/2009, 15:00
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 8 meses
Puntos: 416
Respuesta: ¿Calculadora en PHP?

Cita:
Iniciado por carlosgs91 Ver Mensaje
Hola, pregunte con anterioridad en http://www.forosdelweb.com/f18/pasar...e-post-699166/ pero no funciona lo que me dijisteis.

Busco una calculadora en PHP, pero no una del tipo de dos inputs y un select que diga +, -, *, /, quiero enviar mediante un input en un formulario a través de POST una operación, por ejemplo 4+2-6*(7+2) y que PHP me de la solución. Si ya hay alguna calculadora científica hecha que lo haga me podeis pasar el enlace.

Gracias
o.o El ejemplo que te di lo probe, y funciona a la perfeccion. ¿Como lo estas tratando de hacer?
  #14 (permalink)  
Antiguo 17/05/2009, 10:56
 
Fecha de Ingreso: abril-2007
Mensajes: 213
Antigüedad: 17 años
Puntos: 0
Respuesta: Pasar 4 + 2 a int mediante post

Ronruby, ¿te refieres a:
Código PHP:
<?php

$ask 
"5+4-3";
eval(
"\$foo = $ask;");
var_dump($foo);

?>
?

Lo he puesto tal cual y me da error de PHP en la función eval, creo que decía algo de problemas con " o con ;.

La variable $ask es igual $_POST[ask] y llevaría una cadena del tipo: 4+3-5*6
  #15 (permalink)  
Antiguo 17/05/2009, 11:03
Avatar de vb2005  
Fecha de Ingreso: noviembre-2005
Ubicación: Paderborn - Alemania
Mensajes: 566
Antigüedad: 18 años, 4 meses
Puntos: 24
Respuesta: Pasar 4 + 2 a int mediante post

pon exactamente el error que te da, y comprueba que estas escribiendo bien el código
__________________
www.marcher.com.uy - Web personal
Nerd's Corner - Desarrollo de software a medida
  #16 (permalink)  
Antiguo 17/05/2009, 11:06
Avatar de Ryo
Ryo
 
Fecha de Ingreso: marzo-2008
Ubicación: Bilbao
Mensajes: 269
Antigüedad: 16 años, 1 mes
Puntos: 14
Respuesta: Pasar 4 + 2 a int mediante post

Ese código funciona perfectamente tal y como está escrito (devuelve int(6), si quieres que devuelva el número en sí haz un echo de $foo), si has hecho algún cambio el problema está en lo que hayas cambiado.
  #17 (permalink)  
Antiguo 17/05/2009, 11:09
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 8 meses
Puntos: 416
Respuesta: Pasar 4 + 2 a int mediante post

Cita:
Lo he puesto tal cual y me da error de PHP en la función eval, creo que decía algo de problemas con " o con ;.

La variable $ask es igual $_POST[ask] y llevaría una cadena del tipo: 4+3-5*6
¿Que error te da? Como te dije, el ejemplo que puse funciona perfectamente, lo probe en local y en mi servidor y en ambos funciona sin problemas.
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 16:52.