• Viernes 26 de Abril de 2024, 05:41

Autor Tema:  Re: PHP, mysql y fotos...  (Leído 4052 veces)

Juancarlos

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: PHP, mysql y fotos...
« en: Miércoles 5 de Febrero de 2003, 17:29 »
0
Hola, como hago para guardar en una base de datos Mysql fotos y luego al emitir una consulta visualizar las fotos por pantalla.
Gracias...

Avalon

  • Miembro MUY activo
  • ***
  • Mensajes: 448
    • Ver Perfil
Re: PHP, mysql y fotos...
« Respuesta #1 en: Miércoles 5 de Febrero de 2003, 21:37 »
0
Hola,

Lo que yo hago es crear una tabla que contenga al menos estos 4 campos:

filename varchar(120) NOT NULL
filetype varchar(120) NOT NULL
filesize varchar(5) NOT NULL
filedata longblob NOT NULL

Si pones un formulario que te permita subir las fotos, deberás añadirle esta propiedad en la etiqueta <form>:

enctype="multipart/form-data"


luego para añadir un campo en el formulario que te permita adjuntar la foto debe ser de tipo file:

<input type="file" name="foto" size=20>


Ok, cuando proceses los datos en tu script deberías hacer algo como esto:

Código: Text
  1.  
  2. // Compruebas que se ha subido un archivo
  3. if(strcmp(&#036;foto, &#34;none&#34;) && &#036;foto != &#34;&#34;) {
  4.      &#036;filetype = &#036;foto_type;
  5.      // Compruebas que se trata de una foto
  6.      if (!strcmp(&#036;filetype, &#34;image/gif&#34;) || !strcmp(&#036;filetype, &#34;image/jpeg&#34;) ||
  7.      !strcmp(&#036;filetype, &#34;image/pjpeg&#34;) || !strcmp(&#036;filetype, &#34;image/x-png&#34;)) {
  8.           &#036;filename = &#036;foto_name;
  9.           &#036;filesize = &#036;foto_size;
  10.           &#036;filedata = addslashes(fread(fopen(&#036;foto, &#34;r&#34;), filesize(&#036;foto)));
  11.  
  12.           // Y a continuación insertarías los datos en la tabla normalmente...
  13.      }
  14. }
  15.  
  16.  


Para mostrar las fotos, crea un script llamado fotos.php que reciba un parametro. Lo mejor sería tener un único ID para cada foto y pasarle ese parámetro al script.

Entonces lo que harías para mostrar la foto en una página sería esto:

<img src="fotos.php?id=1">

y te mostraría la foto con ID igual a 1.


Lo que debes hacer en el script fotos.php es, en primer lugar, obtener el registro con ID = 1 de la tabla de las fotos.

Una vez tengas el registro (llamémosle $reg para este ejemplo) harías lo siguiente:

Código: Text
  1.  
  2. &#036;file = mysql_fetch_array(&#036;reg);
  3. header(&#34;Content-disposition: filename=&#036;file[filename]&#34;);
  4. header(&#34;Content-Length: &#34;.strlen(&#036;file[filedata]));
  5. header(&#34;Content-type: &#036;file[filetype]&#34;);
  6. header(&#34;Pragma: no-cache&#34;);
  7. header(&#34;Expires: 0&#34;);
  8. echo &#036;file[filedata];
  9.  
  10.  


Haciendo todo esto debería estar completo todo el proceso para subir/guardar/mostrar fotos usando bases de datos.


Espero que te sirva.

Salu2,
Avalon

Juancarlos

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
PHP, mysql y fotos...
« Respuesta #2 en: Viernes 7 de Febrero de 2003, 17:29 »
0
gracias avalon, voy a probar el codigo que me diste.:)