Ver Mensaje Individual
  #9 (permalink)  
Antiguo 04/12/2003, 20:33
Avatar de jpinedo
jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Creo que como tema didáctico, es válida tu curiosidad por conocer el funcionamiento del eval(). Pero tal como te dijo josemi, Lo más simple es, en tu ejemplo, no utilizarlo.

La función eval() recibe una cadena de texto como parámetro. Tu problema está en algunas comillas simple que estás poniendo de más, lo cual genera una cadena no válida.

Como ejercicio para que se ta aclare más el tema te planteo lo siguiente:
Código PHP:
//Tú escribiste esto:
eval("echo '\$oferta$i'['titulo$i'];"); //->no funciona

O sea tú pretendes que se ejecute así:
echo 
$oferta1['titulo1'];//esta línea debería generarse con tu código. Pero no lo hace. 
Lo mejor es guardar las cadenas en una variable aparte y luego pasar la variable por eval(). O sea en tu ejemplo sería así:
Código PHP:
$cadena="echo '\$oferta$i'['titulo$i'];";
eval(
$cadena); 
Lo anterior hace exactamente lo que tú pusiste... o sea que tampoco va a funcionar. La diferencia es que ahora puedes saber qué es lo que escribiste mal... o sea que en lugar de pasarla por eval() para que se ejecute, puedes mandar a que se escriba la cadena en pantalla para que veas qué está pretendiendo ejecutar.
Código PHP:
echo $cadena
Verás que la cadena que está tratando de pasar está equivocada. Creo que debes eliminar las dos primeras comillas simples.

Ésta práctica es muy saludable pues te permite encontrar errores con mayor facilidad. Por ejemplo hay quienes por ahorrar líneas ponen:
Código PHP:
$row=mysql_fetch_array(mysql_query("SELECT $campo FROM $tabla2 WHERE id=$_POST[id]"), $link); 
El problema es que si le sale un error en esa línea (y lo hay)... será muy difícil identificarlo. Lo mejor sería así:
Código PHP:
$sql="SELECT $campo FROM $tabla2 WHERE id=$_POST[id]";
$result=mysql_query($sql$link);
$row=mysql_fetch_array($result); 
Acá podrás hacer un echo $sql; para saber si la cadena que pasas es válida.

Creo que me salí un poco del tema, pero también creo que es importante... Por eso cuando tengas errores en alguna función a la que le estés pasando una cadena como parámetro, mejor guarda la cadena en una variable y pasa como parámetro la variable... así, cualquier cosa haces un echo $variable; y puedes encontrar errores más fácilmente.

Saludos

PD: Mucha más información sobre el tema en la página de josemi.

Última edición por jpinedo; 04/12/2003 a las 21:40