Foros del Web » Programando para Internet » PHP »

identificar variables dentro de una variable tipo cadena

Estas en el tema de identificar variables dentro de una variable tipo cadena en el foro de PHP en Foros del Web. He tenido un problema en una funcion q estoy tratando de acabar, pues quiero hacer algo como esto: Código PHP: function  planilla ( $tabla , ...
  #1 (permalink)  
Antiguo 26/05/2006, 00:27
 
Fecha de Ingreso: mayo-2006
Mensajes: 99
Antigüedad: 11 años, 7 meses
Puntos: 0
identificar variables dentro de una variable tipo cadena

He tenido un problema en una funcion q estoy tratando de acabar, pues quiero hacer algo como esto:
Código PHP:
function planilla($tabla,$fila){
sql "SELECT * FROM $tabla"
$res=mysql_query($sql);
        while( 
$fila mysql_fetch_array$res ) ) {
          
$row0 $fila[0];
          
$row1 $fila[1];  
          
$row2 $fila[2];  
          
$row3 $fila[3];      
          
$row4 $fila[4];
          
$row5 $fila[5];          
          echo
"<tr>"
          
."$fila" 
          
."</tr>"                                        
       
}
}
//fin function 
donde $fila es:
Código PHP:
$fila="<a href=cliente.php?vnomb=$row0&vfec=$row1&vemp=$row4>"
lo q' quiero es poder trabajar con las variables, que $vnomb tome el valor de $row0, pero no he podido hacerlo de esta manera , no se como hacer para llamar a las variable dentro de $fila, puesto que quiero q las variables $vnomb y demas tomen los diferentes valores de $row,...
__________________
El sabio puede sentarse en un hormiguero, pero sólo el necio se queda sentado en él
  #2 (permalink)  
Antiguo 26/05/2006, 09:09
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 11 años, 7 meses
Puntos: 2
No entiendo bien: al hacer $fila = mysql_fetch_array($res) estas sobreescribiendo el valor que recibis como parámetro. Ademas, no si envias ese string como parámetro las variables se van a evaluar, y luego vas a imprimir ese string, sin importar el valor de las variables $row0, $row1, etc. ¿porque no imprimis el string directamente sin pasarlo como parámetro?.
También podrias usar la función list() para ahorrarte todas esas asignaciones:

Código PHP:
<?
function planilla($tabla,$fila){ 
$sql "SELECT * FROM $tabla" 
$res=mysql_query($sql); 
        while(list(
$row0$row1$row2$row3$row4$row5) = mysql_fetch_array($res)) { 
          echo
"<tr><a href=cliente.php?vnomb=$row0&vfec=$row1&vemp=$row4></tr> "
}
}
//fin function 
?>
P.D: te faltó el $ delante de sql.

Saludos.
  #3 (permalink)  
Antiguo 28/05/2006, 18:19
 
Fecha de Ingreso: mayo-2006
Mensajes: 99
Antigüedad: 11 años, 7 meses
Puntos: 0
Error en transcripcion del código

Bueno, creo q' he cometido un error al pasar el codigo, el parametro $fila no es igual al vector $fila[], el parametro es $filaenlace, que es el q toma los valores de $fila[], lo q quiero decir es q :
Código PHP:
$filaenlace="<a href=cliente.php?vnomb=$row0&vfec=$row1&vemp=$row4>"
este valor $filaenlace deberia cambiar al llamarse la función en diferentes paginas como por ejemplo:
Código PHP:
$fila="<a href=empresa.php?vempr=$row0&vciudad=$row3&vcli=$row2>"
espero que eme halla explicado bien, y perdon por la confucion en las variables...

Código PHP:
function planilla($tabla,$filaenlace){
sql "SELECT * FROM $tabla"
$res=mysql_query($sql);
        while( 
$fila mysql_fetch_array$res ) ) {
          
$row0 $fila[0];
          
$row1 $fila[1];  
          
$row2 $fila[2];  
          
$row3 $fila[3];      
          
$row4 $fila[4];
          
$row5 $fila[5];          
          echo
"<tr>"
          
."$filaenlace" 
          
."</tr>"                                        
       
}
}
//fin function 
__________________
El sabio puede sentarse en un hormiguero, pero sólo el necio se queda sentado en él
  #4 (permalink)  
Antiguo 29/05/2006, 08:35
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 11 años, 7 meses
Puntos: 2
Creo que la función que estas utilizando es bastante "enredada" y quizá seria mejor que buscaras otra forma de hacer lo que queres hacer. Aunque tengas que escribir un poco más de código quizá el resultado sea una función más facil de entender.
Igualmente, para hacer lo que pretendes, tenes que tener cuidado de que el nombre de las variables dentro del string enviado no se evaluen. Es decir, si tenes:

Código PHP:
<?
...
$fila="<a href=cliente.php?vnomb=$row0&vfec=$row1&vemp=$row4>"
planilla($tabla,$fila);
..
?>
vas a estar llamando a la función con el string "<a href=cliente.php?vnomb=&vfec=&vemp=>", ya que al estar entre comillas dobles, php reeplaza las variables que ocurren dentro del string por su valor. Como en este caso las variables $row0, $row1 y $row4 no tienen valor, se reemplazan por una cadena nula. Lo que vos queres enviarle a la función es el string con los nombres de las variables, no con su valor. Para esto tendrias que definir el string encerrado entre comillas simples para que las variables no se expandan:

Código PHP:
<?
...
$fila='<a href=cliente.php?vnomb=$row0&vfec=$row1&vemp=$row4>'
planilla($tabla,$fila);
..
?>
Una vez que la función obtiene este string, no es suficiente con imprimir su valor, tenes que evaluar su contenido para que el nombre de las variables se reemplace por su valor. Para ello vas a necesitar la función eval(). Creo que podrias hacerlo de varias maneras, pero te pongo un ejemplo:

Código PHP:
<?
function planilla($tabla,$filaenlace){  
$sql "SELECT * FROM $tabla"  
$res=mysql_query($sql);  
        while(list(
$row0$row1$row2$row3$row4$row5) = mysql_fetch_array($res)) {  
eval(
"\$enlace = \"$filaenlace\";");           
echo 
$enlace;  

}
//fin function  
?>
La línea eval("\$enlace = \"$filaenlace\";"); ejecuta el código php que se le pasa como parámetro a la función eval, por lo que el resultado es que la variable $enlace contengo el string $filenlace pero esta vez con las variables expandidas.
Espero haberme explicado bien.
Saludos.
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 04:42.