Ver Mensaje Individual
  #6 (permalink)  
Antiguo 24/02/2013, 12:42
Avatar de kahlito
kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Error enviando noticias con o sin imágenes a base de datos desde formulari

Hola Nemutagk.

He probado varias opciones con isset o empty pero no me lo reconocía:

Código PHP:
if(empty($_FILES["imagen1"]['tmp_name'])) 
if(isset(
$_FILES["imagen1"]['tmp_name'])) 
En cuanto al resto de explicacioes tendría que ir paso a paso de nuevo ya que muchas de estas son nuevas para mi, incluso lo del tiempo del navegador y el máximo de 2mb, de todas formas he probado y a veces lo reconoce y otras no.

El ejemplo que estaba siguiendo es sobre una aportación del foro, en concreto esta:

http://www.forosdelweb.com/f18/aport...on-php-568511/
http://www.forosdelweb.com/f18/aport...1/#post2333342

Y bueno no había puesto antes todo lo de subir el archivo para no llenar de códigos mi error. Lo que tengo ahora al completo sería algo así:

Código PHP:
<?php
                
if (isset($_POST["enviar"]))
                {                    
                    
/*Primero compruebo si se ha elegido una imagen*/                    
                    
if($_FILES["imagen1"]['tmp_name']!="")
                    {                    
                        
/*echo "Hay imagen ";*/
                        /*--------------------------- Aquí preparo la imagen, imagen1*/
                        //Ruta para subir el archivo
                        
$destino '../img';                    
                        
//Nombre de la imagen
                        
$imagen1=$_FILES["imagen1"]["name"];        
                        
//Nombre Imagen temporal
                        
$imagen1_tmp=$_FILES["imagen1"]["tmp_name"];        
                        
//Tamaño
                        
$imagen1_tamano=$_FILES["imagen1"]["size"];
                        
$kilobytes=$imagen1_tamano/1024;//Tamaño de la imagen en Kylobytes;
                        
$maximo 102400//100Kb
                        
$max=1500000//(1.5Mb)        
                        //Tipo de archivo     
                        
$imagen1_tipo=$_FILES["imagen1"]["type"];
                        
//Compruebo si el tipo de archivo es correcto                        
                        
if( ($imagen1_tipo == "image/jpeg") || ($imagen1_tipo == "image/gif") || ($imagen1_tipo == "image/png") || ($imagen1_tipo == "image/x-png") )  
                        {
                            
/*echo "Formato de imagen correcto<br />";*/
                            //Preparo la extensión para el nombre de la imagen.
                            
switch($imagen1_tipo)
                            {
                                case
'image/jpeg';
                                
$ext=".jpg";
                                break;
                                case
'image/gif';
                                
$ext=".gif";
                                break;
                                case
'image/png';
                                
$ext=".png";
                                break;
                                case
'image/x-png';
                                
$ext=".png";
                                break;
                            }                            
                            
//Si es correcto compruebo el tamaño máximo
                            
if($imagen1_tamano <1500000)
                            {                                 
                                
/*echo "Tamaño permitido, se puede hacer el envío"; */                                
                                // Creamos la cadena aletoria
                                
$str "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
                                
$cad1 "";
                                for(
$i=0;$i<12;$i++)
                                {
                                    
$cad1 .= substr($str,rand(0,62),1);
                                }
                                
// Fin de la creacion de la cadena aletoria 
                                
$nombre_imagen1=$cad1;
                                
//En caso de que tenga espacios los sustituyo por un guión bajo
                                
$nombre_imagen1=str_replace(" ","_"$nombre_imagen1);
                                
//Le añado la extensión 
                                
$nombre_imagen1=$nombre_imagen1.$ext;
                                
//La subo al servidor
                                
move_uploaded_file $_FILES 'imagen1' ][ 'tmp_name' ], $destino '/' .$nombre_imagen1);                                             
                                
/*--Preparo el envío----------*/
                                
$enviar="Insert into noticias (titulo, noticia, imagen, fecha) values ('".$_POST["titulo"]."','".$_POST["noticia"]."','".$nombre_imagen1."', now())";
                                if(
$ejecutar_enviar=mysql_query($enviar))
                                {
                                    echo 
"Noticia enviada correctamente";
                                }
                                else
                                {
                                    echo 
"Error: " .mysql_error();
                                }                                                        
                            }
                            
/*Si el tamaño es mayor que 1.5mb da error*/                    
                            
else
                            {                                
                                echo 
'<p class="">Error: El tamaño máximo es 1.5 Mb</p>';
                            }
                        }                                
                        
/*Si el el formato de imagen no es correcto da error*/
                        
else
                        {
                            echo 
"Error, formato de imagen no válida.";
                        }
                        
/*Fin del envío con imágenes -----------*/                         
                    
}
                    
/*Si no se ha elegido ninguna imagen preparo el envio*/
                    
else
                    {                                
                        
/*echo "No lleva imágenes y preparo el envío sin imagen.";*/
                        
$enviar="Insert into noticias (titulo, noticia, fecha) values ('".$_POST["titulo"]."','".$_POST["noticia"]."', now())";                                                        
                                if(
$ejecutar_enviar=mysql_query($enviar))
                                {
                                    echo 
"Noticia enviada correctamente";
                                }
                                else
                                {
                                    echo 
"Error: " .mysql_error();
                                }                        
                    }
                    
/*Fin del envío sin imágenes -----------*/                         
                
}
                
?>
Por ahora me sigue fallando lo mismo, voy a ver si busco otro ejemplo o alguna otra manera de arreglarlo con tus explicaciones.

Gracias por tu ayuda, saludos.