Foros del Web » Programando para Internet » PHP »

Una ayuda con Subida de fotos por favor

Estas en el tema de Una ayuda con Subida de fotos por favor en el foro de PHP en Foros del Web. Hola amigos el problema q tengo es el siguiente. LLENO UN HISTORIAL Y SUBO SU FOTO TODO ESO ESTA MUY BIEN EL PROBLEMA ES LO ...
  #1 (permalink)  
Antiguo 16/03/2010, 19:03
 
Fecha de Ingreso: septiembre-2009
Mensajes: 281
Antigüedad: 14 años, 7 meses
Puntos: 0
Pregunta Una ayuda con Subida de fotos por favor

Hola amigos el problema q tengo es el siguiente.

LLENO UN HISTORIAL Y SUBO SU FOTO TODO ESO ESTA MUY BIEN EL PROBLEMA ES LO SIGUIENTE.

1.- CUANDO NO TENGO UNA FOTO DEL CLIENTE ME MUESTRA UNA FOTO POR DEFECTO ES AQUI MI PROBLEMA CUANDO CARGO DEL CLIENTE SU FOTO ME LO MUESTRA EN LA PRIMERA VEZ PERO CUANDO QUIERO ACTUALIZAR ALGUNOS DATOS PERSONALES DE ESTE CLIENTE MENOS LA FOTO QUE YA TENIA GUARDADA , LO ACTUALIZA PERO CUANDO VUELVO A ENTRAR A SU HISTORIAL AL MOMENTO DE HABER ACTUALIZADO ANTERIORMENTE, ME ACTUALIZO LA FOTO Y ME MUESTRA LA POR DEFECTO CUANDO YA TENIA SU FOTO DEL CLIENTE.

Código PHP:
               $id intval($_POST['hdn_id']);
               
$categoria trim($_POST['categoria']);
        
$nacionalidad trim($_POST['nacionalidad']);
         
$lugar trim($_POST['lugar']);
         
$fecha "$dia/$mes/$ano";
         
$comentario trim($_POST['comentario']);
            

            
//subir imagen
            
            //datos del arhivo 
            
$nombre_archivo $HTTP_POST_FILES["userfile"]["name"]; 
            
$tipo_archivo $HTTP_POST_FILES["userfile"]["type"]; 
            
$tamano_archivo $HTTP_POST_FILES["userfile"]["size"]; 
     if(empty(
$tipo_archivo)){
                         if (empty(
$id)) {
                                            if (
$MOD['jugadores']->setHistorial($comentario,$passwd,$nom_img)){
                                                echo 
"<center> <img src=modulos/imagenes/cargando.gif alt=cargando/></center>";
                                                echo 
"<center>Historial exitoso!. Espere unos instantes</center>";
                                                echo 
"<meta http-equiv=\"refresh\" content=\"3;URL=index.php?mod=jugadores&pag=listado\">\n";
                                            } else {
                                                echo 
"El Historial no fue exitoso";
                                            }
                                      } else {
                                            if (
$MOD['jugadores']->setHistorial($comentario,$passwd,$nom_img,$id)){
                                                echo 
"<center> <img src=modulos/imagenes/cargando.gif alt=cargando/></center>";
                                                echo 
"<center>Historial Guardado exitosamente!. Espere unos instantes</center>";
                                                echo 
"<meta http-equiv=\"refresh\" content=\"3;URL=index.php?mod=jugadores&pag=listado\">\n";
                                            } else {
                                                echo 
"<center>El historial no fue exitosa</center>";
                                            }
                                    }           
     }else{
             
                    if (!((
strpos($tipo_archivo"gif") || strpos($tipo_archivo"jpeg")) && (    $tamano_archivo 100000))){ 
                        echo 
"La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .gif o .jpg<br><li>se permiten archivos de             100 Kb máximo.</td></tr></table>";
                        echo 
"<meta http-equiv=\"refresh\" content=\"3;URL=index.php?mod=jugadores&pag=listado\">\n";
            
              
            
                    }else{ 
//no tiene fin
                             
$nom_img$nombre_archivo;
                             
$directorio 'modulos/jugadores/vistas/fotos/';
             
                            if (
move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'],$directorio "/" $nom_img)){ 
                                    if (empty(
$id)) {
                                            if (
$MOD['jugadores']->setHistorial($comentario,$passwd,$nom_img)){
                                                echo 
"<center> <img src=modulos/imagenes/cargando.gif alt=cargando/></center>";
                                                echo 
"<center>Historial exitoso!. Espere unos instantes</center>";
                                                echo 
"<meta http-equiv=\"refresh\" content=\"3;URL=index.php?mod=jugadores&pag=listado\">\n";
                                            } else {
                                                echo 
"El Historial no fue exitoso";
                                            }
                                      } else {
                                            if (
$MOD['jugadores']->setHistorial($comentario,$passwd,$nom_img,$id)){
                                                echo 
"<center> <img src=modulos/imagenes/cargando.gif alt=cargando/></center>";
                                                echo 
"<center>Historial Guardado exitosamente!. Espere unos instantes</center>";
                                                echo 
"<meta http-equiv=\"refresh\" content=\"3;URL=index.php?mod=jugadores&pag=listado\">\n";
                                            } else {
                                                echo 
"<center>El historial no fue exitosa</center>";
                                            }
                                    }
                           }else{
                                 echo 
"error al subir la foto";
                           } 
                    }
     }       
}else{
       echo 
" <center> Usted no tiene permisos </center>";

¿COMO PUEDO EXTRAR DE LA BD EL CAMPO FOTO CARGADO CON EL NOMBRE DE ESA FOTO Y CUANDO ACTUALIZACE LOS DATOS MENOS LA FOTO PUEDA PASAR ESE PARAMETRO Y NO ME MUESTRE LA IMAGEN POR DEFECTO CUANDO YA TENIA SU FOTO DEL CLIENTE ?
  #2 (permalink)  
Antiguo 17/03/2010, 10:13
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Una ayuda con Subida de fotos por favor

Es relativamente sencillo, solo analiza y adaptalo en tu codigo:

Código PHP:
Ver original
  1. // En cuanto cargas los datos del cliente, tomas el valor de la foto original:
  2. $fotocliente = $resultado_de_query['foto'];
  3.  
  4. // Al procesar el archivo subido:
  5. // Usa $_FILES en lugar de $_HTTP_POST_FILES
  6. if($_FILES['userfile']['tmp_name'] != '' && $_FILES['userfile']['error'] == 0) {
  7.     // Solo procesas si hay un archivo y no contiene errores
  8.     // Verificas extension y validas tamaño o redimensionas
  9.     // Renombras el archivo en caso de creerlo conveniente
  10.     // Si todo va bien:
  11.     $fotocliente = $nombre_archivo;
  12. }
  13. // En tu consulta guardas el nombre de archivo (original o el nuevo)
  14.  
  15. mysql_query("UPDATE tabla set campo1 = 'algo', campoN = 'otra cosa', foto = '$fotocliente' WHERE id_cliente = $id_cliente");
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 17/03/2010, 14:04
 
Fecha de Ingreso: septiembre-2009
Mensajes: 281
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Una ayuda con Subida de fotos por favor

Gracias tribi en verdad muy bueno tu consejo estoy adaptado lo que dices pero tengo una consulta hice este arreglo y queria preguntarte si esta bien


Estas son mis funciones donde hago updates e insert llamo en especial a estas dos funciones:
Código PHP:


function setHistorial($comentario,$passwd$foto,$id 0
        {
            global 
$MOD;
            
                if (empty(
$id)) {
                    
$consulta $MOD['mysql']->consulta('INSERT INTO jugadores (comentario,passwd,foto) VALUES ( \''.$comentario.'\',\''.$passwd.'\',\''.$foto.'\')');
                
                } else {
            
$consulta $MOD['mysql']->consulta('UPDATE jugadores SET comentario=\''.$comentario.'\',passwd=\''.$passwd.'\', foto=\''.$foto.'\' WHERE id='.$id);
                
               }
            
            return 
$consulta;
        }
        
        function 
setHistorial2($comentario,$passwd,$id 0
        {
            global 
$MOD;
            
                if (empty(
$id)) {
                    
$consulta $MOD['mysql']->consulta('INSERT INTO jugadores (comentario,passwd) VALUES ( \''.$comentario.'\',\''.$passwd.'\')');
                
                } else {
            
$consulta $MOD['mysql']->consulta('UPDATE jugadores SET comentario=\''.$comentario.'\',passwd=\''.$passwd.'\' WHERE id='.$id);
                
               }
            
            return 
$consulta;
        } 
Bien ahora en mi problema llamo a esta dos funciones una para poder modificar solo en comentario y el otro para modificar comentario y foto.
Código PHP:
 if(empty($tipo_archivo)){
                         if (empty(
$id)) {
                                            if (
$MOD['jugadores']->setHistorial2($comentario,$passwd)){
                                                echo 
"<center> <img src=modulos/imagenes/cargando.gif alt=cargando/></center>";
                                                echo 
"<center>Historial exitoso!. Espere unos instantes</center>";
                                                echo 
"<meta http-equiv=\"refresh\" content=\"3;URL=index.php?mod=jugadores&pag=listado\">\n";
                                            } else {
                                                echo 
"El Historial no fue exitoso";
                                            }
                                      } else {
                                            if (
$MOD['jugadores']->setHistorial2($comentario,$passwd,$id)){
                                                echo 
"<center> <img src=modulos/imagenes/cargando.gif alt=cargando/></center>";
                                                echo 
"<center>Historial Guardado exitosamente!. Espere unos instantes</center>";
                                                echo 
"<meta http-equiv=\"refresh\" content=\"3;URL=index.php?mod=jugadores&pag=listado\">\n";
                                            } else {
                                                echo 
"<center>El historial no fue exitosa</center>";
                                            }
                                    }           
     }else{
             
                    if (!((
strpos($tipo_archivo"gif") || strpos($tipo_archivo"jpeg")) && (    $tamano_archivo 100000))){ 
                        echo 
"La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .gif o .jpg<br><li>se permiten archivos de             100 Kb máximo.</td></tr></table>";
                        echo 
"<meta http-equiv=\"refresh\" content=\"3;URL=index.php?mod=jugadores&pag=listado\">\n";
            
              
            
                    }else{ 
//no tiene fin
                             
$nom_img$nombre_archivo;
                             
$directorio 'modulos/jugadores/vistas/fotos/';
             
                            if (
move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'],$directorio "/" $nom_img)){ 
                                    if (empty(
$id)) {
                                            if (
$MOD['jugadores']->setHistorial($comentario,$passwd,$nom_img)){
                                                echo 
"<center> <img src=modulos/imagenes/cargando.gif alt=cargando/></center>";
                                                echo 
"<center>Historial exitoso!. Espere unos instantes</center>";
                                                echo 
"<meta http-equiv=\"refresh\" content=\"3;URL=index.php?mod=jugadores&pag=listado\">\n";
                                            } else {
                                                echo 
"El Historial no fue exitoso";
                                            }
                                      } else {
                                            if (
$MOD['jugadores']->setHistorial($comentario,$passwd,$nom_img,$id)){
                                                echo 
"<center> <img src=modulos/imagenes/cargando.gif alt=cargando/></center>";
                                                echo 
"<center>Historial Guardado exitosamente!. Espere unos instantes</center>";
                                                echo 
"<meta http-equiv=\"refresh\" content=\"3;URL=index.php?mod=jugadores&pag=listado\">\n";
                                            } else {
                                                echo 
"<center>El historial no fue exitosa</center>";
                                            }
                                    }
                           }else{
                                 echo 
"error al subir la foto";
                           } 
                    }
     }       
}else{
       echo 
" <center> Usted no tiene permisos </center>";

Hasta el momento el problema principal para este tema esta resulto pero queria saber tu opinion si esta mal.
Estoy adaptando tu sugerencia pero me gustaria saber que opinas de esta solucion
  #4 (permalink)  
Antiguo 17/03/2010, 18:24
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Una ayuda con Subida de fotos por favor

Supongo que lo que hiciste funciona correctamente, aunque yo lo haria de otra forma:

1- Leer los datos del usuario o inicializar las variables si es que es nuevo (Obviamente hay que validar)
2- analizar si se esta procesando el formulario
2.1- Verificar cada entrada (nombre, foto, comentario)
2.2- Si no hay errores:
2.21- Actualizar o crear el nuevo registro
2.2.2- Hacer la redireccion
3- Si aun no se ha procesado el formulario (o hubo errores), presentarlo con los datos leidos de la tabla o capturados en el proceso anterior

Con esto evitas repetir 4 veces los mensajes... y por cierto, puede que te este funcionando, pero las etiquetas <meta...> deben estar siempre entre <head> y </head>
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: favor, fotos, subida
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 11:07.