Foros del Web » Programando para Internet » PHP »

Diferencias numero de operaciones en bd

Estas en el tema de Diferencias numero de operaciones en bd en el foro de PHP en Foros del Web. Hola, tengo guardados en una bd un valor que a veces es un numero y otras una operacion, si es un numero, lo muestro directamente ...
  #1 (permalink)  
Antiguo 05/10/2006, 08:21
 
Fecha de Ingreso: junio-2005
Mensajes: 337
Antigüedad: 18 años, 10 meses
Puntos: 1
Diferencias numero de operaciones en bd

Hola, tengo guardados en una bd un valor que a veces es un numero y otras una operacion, si es un numero, lo muestro directamente pero si es una operacion la quiero resolver, como puedo hacer para saber esto?

Como puedo preguntar si el campo contiene un signo + - / o *? para asi resolverlo?

Gracias, espero ayuda!!
  #2 (permalink)  
Antiguo 05/10/2006, 09:43
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
Se me hizo muy curioso tu caso así que me puse a pensar un poco y logre realizar el siguiente código:

Código PHP:
<?php 
$operacion 
"58 - 2";

if ( !
is_int $operacion ) )
{
   
$operaciones = array ( '+''-''*''/' );

   for ( 
$e 0$e count $operaciones ); $e++ )
   {
      if ( 
strpos $operacion$operaciones[$e] ) )
      {
         
$posicion strpos $operacion$operaciones[$e] );
         break;
      }
      else
      {
         continue;
      }
   }

   
$cual_operacion substr $operacion$posicion);
   
$calcula explode $cual_operacion$operacion );

   switch ( 
$cual_operacion )
   {
      case 
'+':
         echo 
$calcula[0] + $calcula[1];
         break;
      case 
'-':
         echo 
$calcula[0] - $calcula[1];
         break;
      case 
'*':
         echo 
$calcula[0] * $calcula[1];
         break;
      case 
'/':
         echo 
$calcula[0] / $calcula[1];
         break;
      default:
         echo 
'<p>No es una operación valida.</p>';
         break;
   }

}
else
{
   echo 
$operacion;
}
?>
Donde $operación es la variable que recibes de tu consulta.

Nota: Este ejemplo lo tendrás que mejorar poniendole validaciones donde la variable $operacion solo tenga un sólo tipo de operación es decir que no realice esto si la variable contiene algo como esto: 16+15-2. Entonces este ejemplo sólo te sirve para hacer una sóla operación tendrás que hacerle algunas modificaciones si es que quieres que te resuelva una operación como esta: [18+2]/5. Como vez este ejemplo que te puse es muy sencillo pero de aquí puede que te des una idea para realizar lo que anteriormente de mencione.

Hojala te sirva de algo. Suerte
  #3 (permalink)  
Antiguo 05/10/2006, 10:10
 
Fecha de Ingreso: junio-2005
Mensajes: 337
Antigüedad: 18 años, 10 meses
Puntos: 1
Hola!!! gracias por ponerte a pensar!
Te cuento yo tenia algo asi, parecido a lo que me pasaste:

$formula posee la operacion por ejemplo 200/85
$operacion = explode (" ",$formula);

switch ($operacion[1])
{
case "*": $resultado= $operacion[0] * $operacion[2];
break;
case "+": $resultado= $operacion[0] + $operacion[2];
break;
case "-": $resultado= $operacion[0] - $operacion[2];
break;
case "/": $resultado= $operacion[0] / $operacion[2];
break;
}

y anda, lo resuelve, el tema es que yo quiero saber como preguntar si contiene +, - etc para asi mandarlo al switch , sino que pase de largo, porque algunos valores son los resultados directamente y no los tengo que procesar.

Estuve buscando algo y estoy viendo la funcion strtr pero me parece que solamente me sirve para encontrar y reemplazar.

Estoy muy desorientada??
Graciassssssssss
  #4 (permalink)  
Antiguo 05/10/2006, 10:20
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
Pues lo que preguntas es precisamente lo que te puse. Mira, donde dices:

Cita:
Iniciado por laulaurys Ver Mensaje
el tema es que yo quiero saber como preguntar si contiene +, - etc para asi mandarlo al switch
la respuesta esta en esta parte del código que te coloque:

Código PHP:
$operaciones = array ( '+''-''*''/' ); 

   for ( 
$e 0$e count $operaciones ); $e++ ) 
   { 
      if ( 
strpos $operacion$operaciones[$e] ) ) 
      { 
         
$posicion strpos $operacion$operaciones[$e] ); 
         break; 
      } 
      else 
      { 
         continue; 
      } 
   } 

   
$cual_operacion substr $operacion$posicion); 
Donde $cual_operacion te responde que operación es la que se hara ya se +,-,etc.

Y en donde mencionaste esto:

Cita:
Iniciado por laulaurys Ver Mensaje
sino que pase de largo, porque algunos valores son los resultados directamente y no los tengo que procesar
Para esto estan las líneas que también te coloque y son estas:

Código PHP:
else 

   echo 
$operacion

Espero que ahora si te haya quedado claro. Si no, hecha a andar el código que te puse y juega poniendo diferentes operaciones o un sólo número en la variable $operacion y así te quedará más claro que es lo que hace este código. Suerte
  #5 (permalink)  
Antiguo 05/10/2006, 10:34
 
Fecha de Ingreso: junio-2005
Mensajes: 337
Antigüedad: 18 años, 10 meses
Puntos: 1
Hola!! perdona es que habia empesado a probar por partes mezclando con lo que tenia y me hice lio, pero anda perfectooooooooooooo, buenisimo!!
mil gracias!!
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 14:08.