Foros del Web » Programando para Internet » PHP »

Subir imágenes: errores cambio tamaño y campos

Estas en el tema de Subir imágenes: errores cambio tamaño y campos en el foro de PHP en Foros del Web. Hola! He leído varios de los mensajes que hay sobre la subida múltiple de archivos. A pesar de todo tengo algunos errores que no consigo ...
  #1 (permalink)  
Antiguo 16/10/2006, 03:36
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 17 años, 11 meses
Puntos: 3
Pregunta Subir imágenes: errores cambio tamaño y campos

Hola!

He leído varios de los mensajes que hay sobre la subida múltiple de archivos. A pesar de todo tengo algunos errores que no consigo solucionar. La subida de archivos la hago a un directorio y los datos a una tabla. A ver si podéis echarme una mano:

Las variables:
Código PHP:
$pie_foto_sp $_REQUEST['pie_foto_sp'];
$pie_foto_en $_REQUEST['pie_foto_en']; 
La parte correspondiente del formulario:
Código PHP:
<?php for ($j=1$j<=3$j++){?>
<input name="foto[]" type="file" size="20" />
<br />
Pie de foto español:
<input name="pie_img_sp" type="text" value="" size="20" />
<br />
Pie de foto inglés:<br />
<input name="pie_img_en" type="text" value="" size="20" />
<br /><br />
<?php ?>
Código de errores y subida de archivos. Fichero: imagen_errores_galeria.php
Código PHP:
<?php
        
if ($_FILES['foto']['error'][$i] > 0)
        {
            echo 
'Ha habido un problema con la subida del archivo:<br />';
            switch (
$foto_error)
            {
                case 
1: echo 'El fichero supera el tamaño máximo permitido'; break;
                case 
2: echo 'El fichero supera el tamaño máximo permitido'; break;
                case 
3: echo 'Solo se ha subido una parte del fichero'; break;
                case 
4: echo 'El fichero no se ha subido'; break;
            }
            exit;
        }
        
        if (
is_uploaded_file($_FILES['foto']['tmp_name'][$i]))
        {
            if (!
move_uploaded_file($_FILES['foto']['tmp_name'][$i], $upfile))
            {
            echo 
'El fichero no se ha podido mover al directorio correcto';
            exit;
            }
        }
        else
        {
            echo 
'El fichero ha sido víctima de un ataque, notifíquelo al webmaster';
            exit;
        }

// Si todo ha ido bien...
echo 'La imagen se ha cargado correctamente.';
?>
Código para cambiar de tamaño las imágenes. Fichero: imagen_resize.php
Código PHP:
<?php
function ResizeImage($directorio$max_width$max_height)
{
$src imagecreatefromjpeg($directorio);
$width imagesx($src);
$height imagesy($src);

$x_ratio $max_width $width;
$y_ratio $max_height $height;

if ( (
$width <= $max_width) && ($height <= $max_height) ) {
    
$tn_width $width;
    
$tn_height $height;
}
else if ((
$x_ratio $height) < $max_height ) {
    
$tn_height ceil($x_ratio $height);
    
$tn_width $max_width;
}
else {
    
$tn_width ceil($y_ratio $width);
    
$tn_height $max_height;
}


$dst imagecreatetruecolor($tn_width,$tn_height);

imagecopyresampled($dst,$src,0,0,0,0,$tn_width,$tn_height,$width,$height);

imagejpeg($dst$directorio100);
imagedestroy($src);
imagedestroy($dst);

}

?>

Subida de datos, imágenes y cambio de tamaño de imágenes:
Código PHP:
for($i=0$i<count($_FILES['foto']['name']); $i++) {
    
$conn db_connect(); // Llamo a una función que me conecta con la BD
    
$query =
        
"INSERT INTO
            productos_imgs
        VALUES
            ('', '$id_producto', '$pie_img_sp', '$pie_img_en')
        "
;
    
$result = @$conn->query($query);
        if (
$result){
            echo 
' La galería ha sido actualizada.<br />';
            }
        
        
// Recupero el id_img de la foto
        
$query_id "Select Max(id_img) as id_img from productos_imgs";        
        
$result_id = @$conn->query($query_id);
        
$row $result_id->fetch_assoc();
        
$id_img $row['id_img'];
        
        
// Subo la foto de la galería
        
$upfile '../imgs/productos/' $id_producto '_' $id_img '.jpg';
        include(
'imagen_errores_galeria.php');
        include(
'imagen_resize.php');
        
ResizeImage($upfile4401000);
        
        } 

Los problemas que me aparecen son:
— En este caso, puedo subir hasta tres imágenes, de las cuales sólo me sube dos.
— Solo me respeta el cambio de tamaño de la segunda que subo, la primera no me hace el cambio de tamaño.
— El pie de foto ($pie_img_sp), me pone para todas las imágenes el último que he insertado, ignorando el resto.

Gracias y saludos.
  #2 (permalink)  
Antiguo 16/10/2006, 14:59
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 17 años, 11 meses
Puntos: 3
¿A nadie se le ocurre por qué me da estos problemas?

A lo mejor es un poco largo, pero si alguien tiene un poco de tiempo para echarle un vistazo me vendría muy bien, no hago más que darle vueltas....
  #3 (permalink)  
Antiguo 17/10/2006, 10:57
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 17 años, 11 meses
Puntos: 3
Le doy un empujón al mensaje, por si alguno no lo ha visto y tiene tiempo de mirarlo y echarme una mano. Hasta ahora no he conseguido avanzar

Recuerdo los problemas que me aparecen:

— Sólo me sube dos imágenes, aunque debería subir tres (no hay problema de tamaños ni de subida por POST).
— Solo me respeta el cambio de tamaño de la segunda que subo, la primera no me hace el cambio de tamaño.
— El pie de foto ($pie_img_sp), me pone para todas las imágenes el último que he insertado, ignorando el resto.
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 01:40.