Foros del Web » Programando para Internet » PHP »

Variables variables y referencias

Estas en el tema de Variables variables y referencias en el foro de PHP en Foros del Web. Hola a todos. Estoy intentando una cosa, pero se me hace complicada. Estoy haciendo un script de upload. Cada fichero que subo tiene el nombre: ...
  #1 (permalink)  
Antiguo 13/10/2003, 10:54
Avatar de El Menda  
Fecha de Ingreso: junio-2001
Ubicación: Jaén
Mensajes: 516
Antigüedad: 16 años, 5 meses
Puntos: 0
Variables variables y referencias

Hola a todos. Estoy intentando una cosa, pero se me hace complicada.
Estoy haciendo un script de upload.
Cada fichero que subo tiene el nombre:
archiv1
archiv2
archiv3...
El fichero a subir se llama asi: $_FILES['archiv1']['name']

Lo que quería hacer es dar a $i un valor ($i=1) y poner algo así:
$_FILES['archiv".$i."']['name'], para no tener que estar poniendo en el script todos los números (1 2 3 4 5 6 ...). Esto sería cutre y poco eficiente.
Claro, esto que he dicho no funciona, por lo que miré en el manual PHP algo sobre las variables variables.
Estas variables variables dan la solución que yo quiero pero solo para variables del tipo $variable, pero no para variables del tipo $_GET, $_POST, $_FILES, etc.
Aquí pongo el mensaje del manual:
Tener en cuenta que variables variables no pueden usarse con Matrices superglobales. Esto significa que no se pueden hacer cosas como ${$_GET}.

Pues mira, no tengo ni idea como segir esto. A ver si me ayudais.
Gracias y saludos
__________________
"No hay mujer fea sino copa de menos"
  #2 (permalink)  
Antiguo 13/10/2003, 15:04
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Quizas es que eso que has intentado esta mal escrito. Porque esto deberia funcionar:
Código PHP:
echo $_FILES['archiv'.$i]['name']; 
Aqui no estas haciendo nada de variables variables. Simplemente estas creando la cadena del indice con una variable. Si vas a acceder a varias propiedades del fichero, puede ser mas comodo hacer:
Código PHP:
$archivo='archiv'.$i;
echo 
$_FILES[$archivo]['name'];
echo 
$_FILES[$archivo]['tmp_name']; 
Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 14/10/2003, 02:02
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 16 años, 1 mes
Puntos: 5
exacto poco tiene que ver la concatenacion de cadenas con las variables variables o las referencias ;) al igual que te comenta josemi lo de $archivo = "archivo" . $i; yo te recomendaria que usaes un array y que almacenaras los datos dentro del array que para eso estan

es decir, el formulario en vezde ser name="archivo" seria name="archivo[0]", 1, 2, .... asi y luego accedes a esos nombres recorriendo el array con un simple bucle tal como :

Código PHP:
for($i 0$i count($archivo); $i++) {
//aki haces lo que quieras con el nombre

o sino con un:
Código PHP:
foreach($archivo as $name) {
//aki tb haces lo mismo que antes :D

Saludillos!!!
__________________
Usuario registrado de Linux #288725
  #4 (permalink)  
Antiguo 14/10/2003, 15:45
Avatar de El Menda  
Fecha de Ingreso: junio-2001
Ubicación: Jaén
Mensajes: 516
Antigüedad: 16 años, 5 meses
Puntos: 0
De acuerdo

Ya me rula:
Código PHP:
<?
    
for ($i=1;$i<=$_POST['nfotos'];$i++) {
$archivo'archivo'.$i;
echo 
$_FILES[$archivo]['name']."<br>";
    }
//mientras escucho Basement Jaxx - Romeo
?>
__________________
"No hay mujer fea sino copa de menos"
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 03:34.