Foros del Web » Programando para Internet » PHP »

Formulas guardas en un campo de la base de datos

Estas en el tema de Formulas guardas en un campo de la base de datos en el foro de PHP en Foros del Web. Saludos Comunidad, tengo un gran reto para todos nosotros no se si alguno ya lo ha hecho, de ser así les agradezco su colaboración. Tengo ...
  #1 (permalink)  
Antiguo 30/09/2011, 22:20
 
Fecha de Ingreso: septiembre-2011
Mensajes: 9
Antigüedad: 12 años, 6 meses
Puntos: 0
Pregunta Formulas guardas en un campo de la base de datos

Saludos Comunidad, tengo un gran reto para todos nosotros no se si alguno ya lo ha hecho, de ser así les agradezco su colaboración.

Tengo una tabla donde debo almacenar un resultado según un valor de la formula que esta ingresada en un campo de mySql.

ejemplo

registro1 Tipo = Numero
registro2 Tipo = Numero
registro3 Tipo = Numero
registro4 Tipo = Calculo ($registro1+$registro2/$registro3 )
registro5 Tipo = Numero
registro6 Tipo = Calculo ($registro4/$registro5 )

La idea es poder convertir las formulas almacenadas en mySql en script para que php pueda interpretar los valores como varibles y no todo como un texto como una variable.

cualquier indicio es bueno, muchas gracias.
  #2 (permalink)  
Antiguo 30/09/2011, 22:38
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Formulas guardas en un campo de la base de datos

Tendrías que usar eval() pero debes tener en cuenta los riesgos de seguridad que conlleva (consulta el manual):
Código PHP:
Ver original
  1. <?php
  2.  
  3. $registro = "Hola ";
  4. $consulta = '$registro mundo';
  5. echo $consulta . "<br />";
  6. eval("\$consulta = \"$consulta\";");
  7. echo $consulta;
Imprime:
Cita:
$registro mundo
Hola mundo
  #3 (permalink)  
Antiguo 01/10/2011, 06:15
 
Fecha de Ingreso: septiembre-2011
Mensajes: 9
Antigüedad: 12 años, 6 meses
Puntos: 0
De acuerdo Respuesta: Formulas guardas en un campo de la base de datos

Gracias!!
Justo lo que estaba buscando.
  #4 (permalink)  
Antiguo 01/10/2011, 16:36
 
Fecha de Ingreso: septiembre-2011
Mensajes: 9
Antigüedad: 12 años, 6 meses
Puntos: 0
Pregunta Respuesta: Formulas guardas en un campo de la base de datos

Disculpa Ronruby, será que algo no estoy haciendo bien, pero al usar eval si bien es cierto ya reconoce las variables nombradas en la función, mas no reconoce la función como tal, ejemplo

Código PHP:
Ver original
  1. $formula= "($v[1]+ $v[5]) / $v[6]";
  2. $i=1;
  3.     while (@$info2=mysql_fetch_array($listarRegistros))
  4.      {
  5.     $v[$i]= $info2["valor"];
  6.     $i++;
  7.      }
  8.  
  9. eval("\$formula = \"$formula\";");
  10.  
  11. echo $formula;

Imprime
(2+8)/2

y debería imprimir
5


La pregunta que debe hacer para que de una vez me evalúe los signos, muchas gracias.
  #5 (permalink)  
Antiguo 01/10/2011, 17:01
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Formulas guardas en un campo de la base de datos

Porque estas poniendo la variable $formula dentro de comillas dobles, que solo interpretan las variables pero no las expresiones.
Seria:
eval("\$formula = $formula;");

Prueba así y dime que tal te fue.
  #6 (permalink)  
Antiguo 01/10/2011, 17:38
 
Fecha de Ingreso: septiembre-2011
Mensajes: 9
Antigüedad: 12 años, 6 meses
Puntos: 0
De acuerdo Respuesta: Formulas guardas en un campo de la base de datos

Cita:
Iniciado por Ronruby Ver Mensaje
Porque estas poniendo la variable $formula dentro de comillas dobles, que solo interpretan las variables pero no las expresiones.
Seria:
eval("\$formula = $formula;");

Prueba así y dime que tal te fue.
Ya lo había probado pero al momento de subir la pagina me daba
este error

: eval()'d code on line 1


pero lo probé con datos y funciona Perfecto, ahora si esta hecho,


Ahora Estoy viendo el tema de la seguridad!!!

muchas gracias.

Etiquetas: formulas, variables, calculo
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 21:10.