• Viernes 8 de Noviembre de 2024, 09:49

Autor Tema:  Mostrar Imagenes Antes De Subir A La Bd  (Leído 6368 veces)

zaida20

  • Miembro MUY activo
  • ***
  • Mensajes: 213
    • Ver Perfil
Mostrar Imagenes Antes De Subir A La Bd
« en: Lunes 2 de Julio de 2007, 15:14 »
0
Hola:

Tengo el sguiente código para subir imágenes a la bd:

subir_imagen.php

Código: Text
  1. <form action="subir_imagenes_con_ruta2.php" method="post" enctype="multipart/form-data">
  2.     Archivo: <input name="fichero" type="file">
  3.     <input name="submit" type="submit" value="Enviar">  
  4. </form>
  5.  

subir_imagen2.php

Código: Text
  1. chmod('./imagenes/','0777');
  2. if($_FILES['fichero']['name']!=NULL)
  3. {
  4.   $uploadfile_temporal=$_FILES['fichero']['tmp_name'];
  5.   $uploadfile_nombre="imagenes/".$_FILES['fichero']['name'];
  6.   $ruta_foto='imagenes/'.$_FILES['fichero']['name'];//recoge la ruta de la imagen(carpeta y nombre)
  7.  
  8.   if (is_uploaded_file($uploadfile_temporal))
  9.   {
  10.     move_uploaded_file($uploadfile_temporal,$uploadfile_nombre);
  11.     //echo "ok";
  12.   }
  13.   else
  14.   {
  15.     echo "error";
  16.   }
  17. //insertamos las imágenes en la bd
  18.   $sql="INSERT INTO img (foto) VALUES ('$ruta_foto')";
  19.     $res = mysql_query($sql);
  20.     if (!$res)
  21.       echo "Error al ejecutar la consulta";
  22. }
  23. //hacemos la consulta
  24. $obtener_foto="select foto, id from img";
  25. $i=0;
  26. $consulta=mysql_query($obtener_foto,$conexion)or die(mysql_error());;
  27. if($consulta!=NULL)
  28. {
  29.   if(mysql_num_rows($consulta)!=0)
  30.   {
  31.       while($row=mysql_fetch_array($consulta))
  32.       {
  33.       $imagen[$i]=$row['foto'];
  34.       $id=$row['id'];
  35.       $size= getimagesize ($imagen[$i]);
  36.       $ancho[$i]= (int) ($size [0] * 0.3);
  37.       $alto[$i]= (int) ($size [1] * 0.3);
  38.       $i++;
  39.       }
  40.   }
  41. }
  42.  
  43. ?>
  44.  

Lo que necesito es que cuando yo elija la imagen que quiero subir y clice sobre abrir me vayan muestrando las imagenes que quiero insertar en el archivo donde se encuentra el form antes de darle a Enviar .

Alguna idea?
Gracias y saludos!!! :hola:
---- Las oportunidades que se te presentan son las que son y ellas te llevarán a la felicidad ----

ibito

  • Miembro HIPER activo
  • ****
  • Mensajes: 549
  • Nacionalidad: mx
  • Se mas de C++ que lo que se de ese CSS
    • Ver Perfil
    • http://www.ibquezada.com
Re: Mostrar Imagenes Antes De Subir A La Bd
« Respuesta #1 en: Lunes 2 de Julio de 2007, 19:31 »
0
Lo que quieres se puede hacer con javascript
Ya intentaste en ¿Google?
El primer resultado es lo que buscas creo.
______________________________________
www.hazjuegos.com Una comunidad dedicada al desarrollo de videojuegos.

LeGatoRojo

  • Miembro HIPER activo
  • ****
  • Mensajes: 552
  • Nacionalidad: mx
    • Ver Perfil
    • LeGatoRojo
Re: Mostrar Imagenes Antes De Subir A La Bd
« Respuesta #2 en: Lunes 2 de Julio de 2007, 23:05 »
0
creo que no esta muy claro...
Un día desperte y en lugar de dientes tenía colmillos, en lugar de manos, tenía garras; pero lo más impactante fue el color escarlata de mi pelaje.

ibito

  • Miembro HIPER activo
  • ****
  • Mensajes: 549
  • Nacionalidad: mx
  • Se mas de C++ que lo que se de ese CSS
    • Ver Perfil
    • http://www.ibquezada.com
Re: Mostrar Imagenes Antes De Subir A La Bd
« Respuesta #3 en: Lunes 2 de Julio de 2007, 23:38 »
0
Pues lo que debes hacer, es poner una etiqueta "img", después que en el onChange del "input file" debes poner que el "src" del "img" sea la dirección del archivo en tu pc local.

Código: Text
  1.  
  2. <img src="" id="img" name="img" width="350" height="350" /><br />
  3.  
  4. <input type="file" name="file" id="file" onchange="document.getElementById('img').src='file:///'+document.getElementById('file').value; " />
  5.  
  6.  

Pero por lo que he visto solo funciona en IE  :rolleyes:
______________________________________
www.hazjuegos.com Una comunidad dedicada al desarrollo de videojuegos.

zaida20

  • Miembro MUY activo
  • ***
  • Mensajes: 213
    • Ver Perfil
Re: Mostrar Imagenes Antes De Subir A La Bd
« Respuesta #4 en: Martes 3 de Julio de 2007, 14:26 »
0
He conseguido que me visualice cada imagen que elijo para subir a la bd y no que me recargue la página cada vez que elijo una, éste es el código por si le sirve a alguien:

mostrar_imagen.php

Código: Text
  1. <?php
  2. session_start();
  3. ?>
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  5. <html>
  6. <head>
  7. <title>Documento sin título</title>
  8. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  9. <title>Img Upload w/Preview</title>
  10. <style type="text/css">
  11. <!--
  12. input {
  13.    margin-top:10px;
  14.    display: block;
  15.    text-align:center;
  16. }
  17. form{
  18.  text-align:center;
  19.    width:400px;
  20.    margin-left:auto;
  21.    margin-right:auto;
  22. }
  23. -->
  24. </style>
  25. <script language="javascript">
  26.   function refreshImg()
  27.   {
  28.   document.iframe_imagenes.location.href='imagenes.php?ruta='+document.form1.imageField.value;
  29.    }
  30. </script>
  31. </head>
  32. <body>
  33.   <form name="form1" id="form1" action="" method="post"
  34. enctype="multipart/form-data" >
  35.   <input name="imageField" type="file" onChange="refreshImg()">
  36. </form>  
  37.   <iframe name="iframe_imagenes" src="imagenes.php">
  38.  
  39.   </iframe>
  40. </body>
  41. </html>
  42.  

imagenes.php

Código: Text
  1. <?php
  2. session_start();
  3. $ruta_imagen=$_GET['ruta'];
  4. if($ruta_imagen!=NULL)
  5. {
  6. if($_SESSION['foto']==NULL)
  7. {
  8.   $rut=array();
  9.   $rutimagen[0]=$ruta_imagen;
  10.   $_SESSION['foto']=$rutimagen;
  11.   $popo=$_SESSION['foto'];
  12. }
  13. else
  14. {
  15.   $foto=$_SESSION['foto'];
  16.   $num=count($foto);
  17.   $rutimagen=$_SESSION['foto'];
  18.   $rutimagen[$num]=$ruta_imagen;
  19.   $_SESSION['foto']=$rutimagen;
  20.   $popo=$_SESSION['foto'];
  21. }
  22.   $i=0;
  23.   while($popo[$i]!=NULL)
  24.   {
  25.     ?>
  26.     <img src="<?php echo $popo[$i];?>">
  27.     <?php
  28.     $i++;
  29.   }
  30. }
  31. ?>
  32.  

Saludos!!! :hola:
---- Las oportunidades que se te presentan son las que son y ellas te llevarán a la felicidad ----

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Mostrar Imagenes Antes De Subir A La Bd
« Respuesta #5 en: Martes 3 de Julio de 2007, 16:37 »
0
Cita de: "ibito"
Lo que quieres se puede hacer con javascript
Ya intentaste en ¿Google?
El primer resultado es lo que buscas creo.
Esta buena, gracias por esa ibito.
El pasado son solo recuerdos, el futuro son solo sueños

zaida20

  • Miembro MUY activo
  • ***
  • Mensajes: 213
    • Ver Perfil
Re: Mostrar Imagenes Antes De Subir A La Bd
« Respuesta #6 en: Miércoles 4 de Julio de 2007, 09:47 »
0
Hola:
Una duda que tengo: al hacer un echo de la ruta de la imagen me aparece con doble \\, alguien me puede decir por qué? y si tiene algún problema a la hora de que funcione correctamente?

Saludos  :hola:
---- Las oportunidades que se te presentan son las que son y ellas te llevarán a la felicidad ----

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Mostrar Imagenes Antes De Subir A La Bd
« Respuesta #7 en: Jueves 5 de Julio de 2007, 09:28 »
0
Puedes poner un ejemplo? de que es lo que te aparece

la ruta en el servidor o en el cliente?


Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

zaida20

  • Miembro MUY activo
  • ***
  • Mensajes: 213
    • Ver Perfil
Re: Mostrar Imagenes Antes De Subir A La Bd
« Respuesta #8 en: Jueves 5 de Julio de 2007, 09:35 »
0
Hola de nuevo F_Tanori :

Me aparece cuando lo pruebo de manera local:

C:\\Archivos de programa\\ejemplos de pag web\\ejemplo\\

La ruta que me aprece es así, separa los directorios con dos \ y pienso que quizás pueda afectar al funcionamiento de la página.

Saludos!!! :hola:
---- Las oportunidades que se te presentan son las que son y ellas te llevarán a la felicidad ----

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Mostrar Imagenes Antes De Subir A La Bd
« Respuesta #9 en: Jueves 5 de Julio de 2007, 10:33 »
0
Hola:

Cuando estan dentro de una cadena se utiliza la "\" como caracter de "escape"


lee esto

http://foros.solocodigo.com/index.php?showtopic=29957&hl=
http://foros.solocodigo.com/index.php?showtopic=29978&hl=


es lo mismo para php

Código: Text
  1.  
  2. $URL="C:\\Archivos de programa\\ejemplos de pag web\\ejemplo\\";
  3. echo $URL;
  4.  

resultado:
Código: Text
  1.  
  2. C:\Archivos de programa\ejemplos de pag web\ejemplo\
  3.  

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

zaida20

  • Miembro MUY activo
  • ***
  • Mensajes: 213
    • Ver Perfil
Re: Mostrar Imagenes Antes De Subir A La Bd
« Respuesta #10 en: Jueves 5 de Julio de 2007, 10:42 »
0
duda resuelta!!! ;)

De nuevo mil gracias por tu ayuda F_Tanori!!!!

Saludos!!!! :hola:
---- Las oportunidades que se te presentan son las que son y ellas te llevarán a la felicidad ----

zaida20

  • Miembro MUY activo
  • ***
  • Mensajes: 213
    • Ver Perfil
Re: Mostrar Imagenes Antes De Subir A La Bd
« Respuesta #11 en: Miércoles 11 de Julio de 2007, 14:30 »
0
Hola:
tengo otra duda más, necesito que antes de mostrarme la imagen que voy a subir a la base de datos me valide si está dañada o no, es decir, que se pueda visualizar la imagen sin problemas.
¿Cómo puedo hacerlo?

El código que tengo es éste:

Código: Text
  1. <?php
  2. session_start();
  3. $ruta_imagen=$_GET['ruta'];
  4. if($ruta_imagen!=NULL)
  5. {
  6. if($_SESSION['foto']==NULL)
  7. {
  8.   $rut=array();
  9.   $rutimagen[0]=$ruta_imagen;
  10.   $_SESSION['foto']=$rutimagen;
  11.   $popo=$_SESSION['foto'];
  12. }
  13. else
  14. {
  15.   $foto=$_SESSION['foto'];
  16.   $num=count($foto);
  17.   $rutimagen=$_SESSION['foto'];
  18.   $rutimagen[$num]=$ruta_imagen;
  19.   $_SESSION['foto']=$rutimagen;
  20.   $popo=$_SESSION['foto'];
  21. }
  22.  
  23.  
  24. }
  25. ?>
  26. <html>
  27.         <table width="265" height="80" border="0" cellpadding="0" cellspacing="0">
  28.           <?php
  29.       $i=0;
  30.   while($popo[$i]!=NULL)
  31.   {
  32.     $size=getimagesize($popo[$i]);
  33.     $ancho[$i]=(int) ($size [0]* 0.5);
  34.     $alto[$i] =(int) ($size [1]* 0.5);
  35.     ?>
  36.           <tr>
  37.             <td><img src="<?php echo $popo[$i]; ?>" width="<?php echo $ancho[$i]; ?>"  height="<?php echo $ancho[$i]; ?>">
  38. </td>
  39.           </tr>
  40.           <tr>
  41.             <td height="1" bgcolor="#CCCCCC"><img src="../img/transparente.gif" width="50" height="1"></td>
  42.           </tr>
  43.       <?php
  44.       $i++;
  45.       }
  46.       ?>
  47.         </table>
  48. </html>
  49.  

Muchisimas gracias
Saludos  :hola:
---- Las oportunidades que se te presentan son las que son y ellas te llevarán a la felicidad ----

Altareum

  • Miembro MUY activo
  • ***
  • Mensajes: 327
    • Ver Perfil
    • http://www.avian.com.ar
Re: Mostrar Imagenes Antes De Subir A La Bd
« Respuesta #12 en: Miércoles 11 de Julio de 2007, 19:53 »
0
Pues, ya lo estás haciendo-.... La función getimagesize verifica que el archivo no esté corrupto:

Citar
Si no es posible acceder a la imagen nombre_archivo, o si no es una imagen válida, getimagesize() devolverá FALSE y generará un error de nivel E_WARNING.

Por lo que deberías poner:

if( $size=getimagesize($popo[$i]) )

Altareum.
El postre!, el postre!, el postre!, el postre!, el postre!, el postre!.....
 | Klinka | Kiree | Avian |

zaida20

  • Miembro MUY activo
  • ***
  • Mensajes: 213
    • Ver Perfil
Re: Mostrar Imagenes Antes De Subir A La Bd
« Respuesta #13 en: Miércoles 11 de Julio de 2007, 23:30 »
0
Muchas gracias, lo probaré mañana en el trabajo.

Saludos!!! :hola:
---- Las oportunidades que se te presentan son las que son y ellas te llevarán a la felicidad ----

zaida20

  • Miembro MUY activo
  • ***
  • Mensajes: 213
    • Ver Perfil
Re: Mostrar Imagenes Antes De Subir A La Bd
« Respuesta #14 en: Jueves 12 de Julio de 2007, 10:34 »
0
Perfecto Altareum!!! :bravo:

Gracias por tu ayuda!!

Saludos!! :hola:
---- Las oportunidades que se te presentan son las que son y ellas te llevarán a la felicidad ----

zaida20

  • Miembro MUY activo
  • ***
  • Mensajes: 213
    • Ver Perfil
Re: Mostrar Imagenes Antes De Subir A La Bd
« Respuesta #15 en: Jueves 12 de Julio de 2007, 11:02 »
0
Hola!!! Me surge otro problema:

Cuando la imagen está dañada o no es válida me aprece el siguiente error:
Warning: getimagesize(): Read error! in c:\directorio.... junto con un echo que he puesto, lo que necesito es que sólo aparezca el "echo" y no el error.

Y otra cosa más:
cada vez que insertas una imagen al visualizarla se crea una tabla dinamicamente, se colocan una al lado de otra de forma horizontal, el código que tengo es el siguiente(el mismo que antes pero modificado):

 
Código: Text
  1.  <?php
  2.       $i=0;
  3.   while($popo[$i]!=NULL)
  4.   {
  5.     $size=getimagesize($popo[$i]);
  6.     if( $size==true)
  7.     {
  8.     $ancho=80;
  9.     $alto[$i]=$size[1]/($size[0]/$ancho);
  10.    
  11.     }
  12.     else
  13.     {
  14.       echo "La imagen está dañada o no es válida, no puede subirse al servidor,por favor, elija otra";
  15.     }
  16.     ?>
  17.         <table width="85" border="1" align="left" cellpadding="0" cellspacing="0" bordercolor="#990000" bgcolor="#ede4e4">
  18.           <tr bordercolor="#ede4e4">
  19.             <td colspan="2">
  20.               <div align="center"><img src="<?php echo $popo[$i]; ?>" width="<?php echo $ancho; ?>"  height="<?php echo $alto[$i]; ?>"></div></td>
  21.           </tr>
  22.           <tr bordercolor="#ede4e4">
  23.             <td width="20">
  24.               <div align="right">
  25.                 <input type="checkbox" name="checkbox" value="checkbox">
  26.               </div></td>
  27.             <td width="59"><font color="#990000">Borrar</font></td>
  28.           </tr>
  29.         </table>
  30.         <?php
  31.       $i++;
  32.       }
  33.       ?>
  34.  

El problema es que no todas las imágenes tienen el mismo alto, he estado mirando alguna función del array para que me devuelva el alto más grande y generar las tabls del tamaño de la imagen con más alto, pero no se cómo hacerlo puesto que sólo he encontado la función array_search pero no si se valdrá para lo que quiero.Espero que podaís ayudarme(y siento ser pesada  :losiento:  )


Muchas gracias y saludos :hola:
---- Las oportunidades que se te presentan son las que son y ellas te llevarán a la felicidad ----

Altareum

  • Miembro MUY activo
  • ***
  • Mensajes: 327
    • Ver Perfil
    • http://www.avian.com.ar
Re: Mostrar Imagenes Antes De Subir A La Bd
« Respuesta #16 en: Jueves 12 de Julio de 2007, 16:26 »
0
Primero que nada, para solucionar el problema de la imágen intenta:

$size=@getimagesize($popo[$i]);

El símbolo @ antepuesto a una función le indica a php que no muestre el error.


Por otro lado, para las tablas, lo que puedes hacer es, en lugar de hacer una tabla por cada imágen, podrías poner una imágen dentro de un td de una misma tabla. De esta forma todas las celdas se acomodarán todas al mismo alto.


Altareum.
El postre!, el postre!, el postre!, el postre!, el postre!, el postre!.....
 | Klinka | Kiree | Avian |

TBS

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Mostrar Imagenes Antes De Subir A La Bd
« Respuesta #17 en: Jueves 11 de Octubre de 2007, 20:10 »
0
No me funcioan en Firefox

-DriverOp-

  • Miembro activo
  • **
  • Mensajes: 81
    • Ver Perfil
Re: Mostrar Imagenes Antes De Subir A La Bd
« Respuesta #18 en: Viernes 12 de Octubre de 2007, 07:52 »
0
Si te refieres al código propuesto por ibito el día Julio 02, 2007 10:38 pm él mismo dice que solo funciona en IE.

PD: en Opera tampoco funciona.