Foros del Web » Programando para Internet » PHP »

No funciona dentro de 'function'

Estas en el tema de No funciona dentro de 'function' en el foro de PHP en Foros del Web. Hola! a ver tengo un problema. Tengo una función para subir imágenes que funciona MUY bien, explico: Primero el formulario para meter la función está ...
  #1 (permalink)  
Antiguo 17/11/2002, 05:12
Avatar de Wakkos
Colaborador
 
Fecha de Ingreso: octubre-2001
Ubicación: (cerca)
Mensajes: 1.795
Antigüedad: 16 años, 2 meses
Puntos: 59
No funciona dentro de 'function'

Hola! a ver tengo un problema.

Tengo una función para subir imágenes que funciona MUY bien, explico:

Primero el formulario para meter la función está así:
Código:
<input type=file name=nombre_img size=30>
Y luego tengo la función (que aún no es una función técnicamente hablando):
Código PHP:
$log "";

//begin upload 1
echo $imagen_name
echo 
"<br>";
echo 
$imagen;
//checks if file exists
if ($imagen_name == "") {
$log .= "<br>No file selected for upload 1<br>";
}
if (
$imagen_name != "") {
//checks if file exists

        //checks if files to big
        
if (($sizelim == "yes") && ($imagen_size $size)) {
        
$log .= "Archivo muy grande";

        } else {
        
$imagen_name strtolower($imagen_name);
        
$imagen_name ereg_replace" """$imagen_name);
        
//Checks if file is an image

            
if (($imagen_type == $cert1) or ($imagen_type == $cert2)) {
            @
copy($imagen"$abpath/$imagen_name") or $log .= "No se pudo copiar la imagen al servidor<br>";

                if (
file_exists("$abpath/$imagen_name")) {
                
$log .= "<br>weeeeeee";
                }

            } else {
            
$log .= "File 1 is not an image<br>";
            }
        }
}
echo 
$log
Claro, eso sube la imagen de maravilla.

Ahora, quiero que el usuario me diga primero cuantas imagenes quiere subir para así imprimirle los input files necesarios.
Cómo hago esto?

Pues el usuario introduce el número de imágenes (
Código PHP:
$imgq 
)y luego en el form se imprimen de esta manera:

Código PHP:
$num 1;
while (
$num <= $imgq ) {
echo 
"imagen #".$num." <input type=file name=nombre_img size=30><br>";
$num++;

Bien, funciona.

El problema viene cuando quiero subir las imágenes, cómo hacerlo?
se me ocurrió convertir el código ese de subir en una función, para luego hacer un while a la función dependiendo de cuántas imágenes se vayan a subir, lo primero que hice es meter el código en una función:

function upload($imagen);

Y luego la llamo:
upload($nombre_img);

Pero me dice que no he seleccionado ninguna imagen, osea, vemos este pedazo de código de la función anterior:
Código PHP:
if ($imagen_name == "") {
$log .= "<br>No file selected for upload 1<br>";

Alguien sabe porqué ocurre eso?????
__________________
Cool Village
@Wakkos
  #2 (permalink)  
Antiguo 17/11/2002, 08:00
 
Fecha de Ingreso: noviembre-2002
Mensajes: 9
Antigüedad: 15 años, 1 mes
Puntos: 0
Pues no se...

Pues...no sé si te puede pasar algo como lo que me pasó a mi no hace mucho.
Utilicé variables que estaban fuera de la función para paso de parámetros o parámetros que se pasaban por formulario.
Cuando se abre una función todos estos parámetros y variables
dejan de tener valor dentro de ella a menos que antes se
diga que se van a utilizar los de fuera con

global $parametro1;
global $parametro2;
...
global $parametroN;

Si no es así quizá te pudiera responder si publicas el código entero final.

Un saludazo.
  #3 (permalink)  
Antiguo 17/11/2002, 08:00
Avatar de Maycol  
Fecha de Ingreso: diciembre-2001
Ubicación: Ávila (España)
Mensajes: 539
Antigüedad: 16 años
Puntos: 0
wakkos lo que yo haria seria:

en el input ponerle el nombre: nombre_img$num

y luego en la siguiente pagina ir mirando hasta que variable existe para ir o no subiendolas...

si ves que no sabes, responde y a ver si te puedo ayudar.

Saludos.
__________________
Zepsilon.com
Diseño e imaginacion
  #4 (permalink)  
Antiguo 17/11/2002, 13:21
Avatar de Wakkos
Colaborador
 
Fecha de Ingreso: octubre-2001
Ubicación: (cerca)
Mensajes: 1.795
Antigüedad: 16 años, 2 meses
Puntos: 59
HUmm, maykol, no, no entiendo!
=)

El código entero es ese que está allí!
__________________
Cool Village
@Wakkos
  #5 (permalink)  
Antiguo 17/11/2002, 14:30
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Primero tienes que hacer que PHP reciba los distintos ficheros y los distinga. Como ya te han dicho, podrias hacerlo poniendo como nombre de los campos del formulario nombre_img$num (que te generaria los campos nombre_img1, nombre_img2, ...). Aunque yo te recomiendo que uses como nombre nombre_img[], sobre todo porque asi la pagina destino no necesita saber el numero que se especifico. Te quedaria asi:
Código PHP:
$num 1;

while (
$num <= $imgq ) {

echo 
"imagen #".$num." <input type=\"file\" name=\"nombre_img[]\" size=\"30\"><br>";

$num++;


Lo segundo es que debes pasarle a la funcion todas las variables que necesita. Me explico. En tu codigo le pasas $nombre_img, quizas porque pensabas que esa variable representa a todas las variables de la imagen. Pero lo que debes pasarle son todas las variables que usas en el trozo de codigo. La definicion de la funcion seria:
Código PHP:
function upload($imagen$imagen_name$imagen_size$imagen_type); 
Las que he puesto son las variables del upload de fichero. No conozco tu codigo, pero quizas necesitas pasar otras variables.

Y por ultimo, queda llamar a esa funcion con los valores de los distintos ficheros a subir. Lo podrias hacer asi:
Código PHP:
for ($i=0$i<count($nombre_img);$i++)
{
upload($nombre_img[$i],$nombre_img_name[$i],$nombre_img_size[$i],$nombre_img_type[$i]);

Y con esto creo que funcionaria.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 18/11/2002, 01:40
Avatar de Wakkos
Colaborador
 
Fecha de Ingreso: octubre-2001
Ubicación: (cerca)
Mensajes: 1.795
Antigüedad: 16 años, 2 meses
Puntos: 59
Jodemi, definitivamente, eso era, implementé tu código y me siguió dando problemas, pero era porque no contaba con las variables 'tipo de imagen' y por eso me daba otro error (file is not an image), así que metí todas las variables dentro de la función!

Acá puedes ver funcionando y darle click al botón ver código, que te mostrará el código (funcionanfo)

Script

Gracias a todos por todo!
__________________
Cool Village
@Wakkos
  #7 (permalink)  
Antiguo 18/11/2002, 09:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Como complemento .. (ya q llegué tarde xD):

El tema "multiple file upload" de php.net:
http://www.php.net/manual/en/feature...d.multiple.php

Y si usas el array superglobal: $_FILES mejor todavía .. así tu script de Upload Multiple te funcionará en cualquier tipo de configuración de PHP (con register_globals a ON o a OFF) siendo un pco mas seguro el "Upload" .

Un saludo,
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 23:44.