Ver Mensaje Individual
  #9 (permalink)  
Antiguo 10/06/2014, 08:17
cdiazr
(Desactivado)
 
Fecha de Ingreso: junio-2013
Ubicación: Santo Domingo de Guzmán
Mensajes: 35
Antigüedad: 10 años, 10 meses
Puntos: 1
Respuesta: Recuperar consulta y aplicar variables, después

Cita:
Iniciado por NSD Ver Mensaje
Se me ocurre otra variante que hace laburar un poco mas a la base de datos pero que no altera tanto tu código original y emula el efecto que quieres lograr:...
Grácias por tu respuesta NSD, por desgracia no me han funcionado ninguna de las dos maneras que me comentaste:

Método 1:
Código PHP:
//Cargo variables
    
$nombre 'Juan';
    
$telf 1234567890;
 
    echo 
recuperarMensajedesdeBD(get_defined_vars());
 
    function 
recuperarMensajedesdeBD($vars)
    {
        global 
$conexion;
 
        
$field "mensaje";
        foreach(
$vars as $key => $val)
            
$field 'REPLACE('.$field.', \'{$'.$key.'}\', \''.str_replace('\'''\\\''$val).'\')';
 
        
$consulta mysql_query("SELECT $field FROM mensajes WHERE id=1"$conexion);
        
$mensaje mysql_fetch_array($consulta);
        return 
$mensaje[0]; 
Me salta el error "Warning: Invalid argument supplied for foreach()..."

Método 2:
Código PHP:
function recuperarMensajedesdeBD($vars)
    {
        global 
$conexion;
 
        
$consulta mysql_query("SELECT mensaje FROM mensajes WHERE id=1"$conexion);
        
$mensaje mysql_fetch_array($consultaMYSQL_NUM);        
        
        foreach(
$vars as $key => $val)
            
$mensaje[0] = str_replace('{$'.$key.'}'$val$mensaje[0]);
 
        return 
$mensaje[0];
    }

echo 
recuperarMensajedesdeBD(array("nombre" => $nombre"telf"=> $telf)); 
Me dice que las variables $nombre y $telf no están definidas...

Sin embargo, la solución ofrecida por Italico76 ha sido la solución, no pensé que sería tan simple...

Cita:
Iniciado por Italico76 Ver Mensaje
Código PHP:
$expresion 'Un valor que no es interpolable por codigo PHP: $ejemplo';
$ejemplo 'si es iterpolable!';
 
eval(
"\$str = \"$expresion\";");
echo 
$str
Así es como funcionó...

Código PHP:
recuperarMensajedesdeBD();

function 
recuperarMensajedesdeBD() {
  global 
$conexion;
  
$consulta mysql_query('SELECT mensaje FROM mensajes WHERE id=1'$conexion);
 
$mensaje mysql_fetch_array($sonculta);
 
interpolar($consulta[0]);
}

function 
interpolar($texto) {
  
$nombre 'Juan';
  
$telf 1234567890;
  eval(
"\$str = \"$texto\";");
  echo 
$str;

Grácias a ambos por vuestra ayuda!!!