Foros del Web » Programando para Internet » PHP »

visualizar JPGS desde BD ACCESS

Estas en el tema de visualizar JPGS desde BD ACCESS en el foro de PHP en Foros del Web. saludos a todos los miembros, soy nuevo en el tema de php y bases de datos, me podrian ayudar. ¿como le hago para hacer una ...
  #1 (permalink)  
Antiguo 11/04/2005, 17:18
 
Fecha de Ingreso: abril-2005
Mensajes: 39
Antigüedad: 12 años, 8 meses
Puntos: 0
visualizar JPGS desde BD ACCESS

saludos a todos los miembros, soy nuevo en el tema de php y bases de datos, me podrian ayudar. ¿como le hago para hacer una consulta y que me traiga un campo de una tabla de access donde esta contenida una imagen JPG y como la muestro junto con los demas campos, basicamente la consulta la tengo hecha , pero lo que no se es como decirle que me traiga la imagen y despues como la muestro, por que la consulta si me la hace, pero no me trae la imagen, como que hace falta algun tipo de repositorio en donde colocarla una vez que me la trae la consulta. el campo de la imagen es objeto ole(en access).

No puedo meter las imagenes en una carpeta y hacer referencia desde php a dichas imagenes por que ya existen en la base de datos, eso no lo puedo modificar, por que esa BD es utilizada con otras aplicaciones. espero no haberlos hecho bolas, ya llevo 15 dias con la bronca y repasando los faqs pero me dan respuestas a medias y me dan otras soluciones que no puedo implementar. lo debo de hacer con la BD ya existente y con dichos campos, espero que haya quedado bien planteado el problema. gracias a todos por su paciencia.
  #2 (permalink)  
Antiguo 12/04/2005, 09:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No sé como vía ODBC desde PHP (www.php.net/odbc) trabaja los campos "binarios" .. Pero en principio la base es la siguiente:

1) generar las cabeceras HTTP para indicar a tu "cliente" (navegador) que el dato que vas a enviar es de tal tipo. Por ejemplo:

header("content-type: image/jpeg");

Esto es parte de las cabeceras HTTP y formatos MIME . .cosa que no define directamente PHP .. PHP sólo te presta ayuda para "enviar" esas cabeceras HTTP .. pero no las define .. eso es parte del protocolo HTTP (por si deseas buscar información sobre que formato MIME corresponde realmente al tipo de archivo "binario" que gestionas . .sea una imagen u otra cosa).

2) Arrojar al buffer de salida tus datos en sí .. tu imagen binaria que estará en tal campo de tu BD .. Para eso tendrás que hacer tu consulta SQL a tu BD como corresponda .. cuando lo tengas .. haces un "echo" como si de otro campo cualquiera se tratase. El "echo" en PHP envia "salida" al "buffer" de por sí .. el "cómo" lo entienda el cliente que lo reciba es parte del uso de las anteriores cabeceras HTTP para que sepa e interprete correctamente lo que se le envia.

"Parece" que para obtener un dato de un campo binario debes usar:

obdc_binmode()
http://www.php.net/manual/en/function.odbc-binmode.php

3) .. Todo este script debe funcionar de forma aislada .. Sólo llamará a una imagen por vez .. Por ejemplo si tienes que presentar las imagenes de N registros .. se llama por HTML con su tag de imagen tipo:

<img src="ver_imagen.php">

Si tienes más imagenes y las basas en una consulta SQL a tu BD .. puedes usar alguna variable de referencia para ejecutar tu consulta SQL condicinal tipo:

$sql="SELECT * FROM tabla_imagen WHERE id_imagen='".$_GET['id_imagen']."'";

Y la llamada desde otros scripts será por HTML tipo:

<img src="ver_imagen.php?id_imagen=1">
<img src="ver_imagen.php?id_imagen=2">
<img src="ver_imagen.php?id_imagen=N">

Aquí como veras .. te puedes imaginar que si tienes un bucle que recorre tu "record-set" y quieres mostrar campos normales de texto .. etc . . + el de tu imagen .. tendrás que tener UN_script.php que haga eso, y ver_imagen.php?id_imagen por separado donde generes ese "id" del registro pero ... la llamada es aparte .. Una página HTML es de tipo "texto plano" .. los datos binarios como imagenes se "lanzan" a este por los tag's de HTML: <img ...>

Un saludo,
  #3 (permalink)  
Antiguo 12/04/2005, 17:26
 
Fecha de Ingreso: abril-2005
Mensajes: 39
Antigüedad: 12 años, 8 meses
Puntos: 0
saludos cluster, te doy gracias, por la respuesta que me diste, fijate que tenia razon en algo, me faltaba el header image/jpg, con esta aclaracion surgio otra pregunta, para utilizar el header y para crear las imagenes necesitola famosa libreria GDLibrary, que de hecho ya la baje, pero no se instalarla, voy a checar en faqs haber si encuentro algo en castellano y como estoy trabajando con Personal web server, es dificil, ya que lo que he encontrado esta orientado a apache cdon mysql. gracias
  #4 (permalink)  
Antiguo 13/04/2005, 11:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
La instalación de las librerías GD no tienes que bajar nada .. debes tenerlas ya en tu instalación de PHP bajo el nombre de archivo (DLL): php_gd.dll .. Si no la tienes en tu sistema .. será por qué usas PHP bajo CGI y lo instalastes con el "Installer" .. Debes bajarte la versión "Zip Package" de PHP .. Para eso sería bueno que usases Apache como servidor HTTP en lugar del "Personal web server" (o usas ASP también de vez en cuando? ..)

Tienes un tutorial sobre todo esto en:
http://www.maestrosdelweb.com/editorial/phpmysqlap/


Un saludo,
  #5 (permalink)  
Antiguo 13/04/2005, 18:18
 
Fecha de Ingreso: abril-2005
Mensajes: 39
Antigüedad: 12 años, 8 meses
Puntos: 0
saludos cluster, gracias por los links, efectivamene ya baje el zip package de php para windows, y ya tengo el php_gd.dll y tambien ya lo puse en windows system, pero al utilizar la funcion imagecreatefromgif(), me dice que no reconoce la funcion, de ahi mi duda sobre si tenia instalado el gdlibrary, le di phpinfo(); y no me sale si lo tengo instalado, me meti al php.ini, para ver si habia alguna opcion para activar o algo asi, y no lo encontre, nada mas encontre gd32.dll o algo asi, y lo active y ese dll lo puse en windows system, pero aun asi no puedo usar el imagecreatefromgif(). desafortunadamente no puedo cambiar el servidor web ya que existen otras aplicaciones web. te agradeceria que me dieras algunas sugerencias cuando tengas tiempo, para ver si finalmente puedo sacar alguna imagen, de ante mano gracias por tu apoyo.
  #6 (permalink)  
Antiguo 13/04/2005, 18:43
 
Fecha de Ingreso: abril-2005
Mensajes: 39
Antigüedad: 12 años, 8 meses
Puntos: 0
baje este pakage php-5.0.3-Win32.zip en donde me dijiste y si trae el php_gd.dll, perdon pero no entiendo exactamente que me quieres decir con ......"será por qué usas PHP bajo CGI y lo instalastes con el "Installer"......, lo instale con el installer con el que venia, pero eso de CGI, no le entiendo muy bien, perdon pero apenas estoy en el A, para dummys, gracias por la paciencia.
  #7 (permalink)  
Antiguo 14/04/2005, 08:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Según la versión de GD que uses .. no soporta tratamiento de GIF por lo menos en las últimas versiones si que se permite "abrir" un gif .. pero no generar un gif

Revisa la documentación oficial de PHP al respecto.
www.php.net/gd

Cuando instales tu extensión .. debes verificar que quedó bien haciendo un phpinfo()

Código PHP:
<?
phpinfo
();
?>
Ahí mismo veras en el primer bloque de información en que modo instalastes PHP en tus servidores .. (en Server API: .. dirá "Apache" o CGI o FastCGI .. o ISAPI .. o algo así).

Más abajo . .tendras que ver la información sobre la recién instalada extensión GD con algunos datos sobre esta (versión, etc ...). Si no los ves .. es que no quedó bien instalada. En el link que te dejé sobre el tutorial de instalación de Apache+PHP+etc .. tienes indicado como se instalan extensiones (modificando tu php.ini) en windows. Lo importante también es que la versión de PHP que uses y la de las extensiones sea de la misma .. no puedes tan sólo "copiar" el "php_xxxx.dll" y listo . .esto te puede dar otros problemas al inicio de PHP.

Un saludo,
  #8 (permalink)  
Antiguo 14/04/2005, 15:45
 
Fecha de Ingreso: abril-2005
Mensajes: 39
Antigüedad: 12 años, 8 meses
Puntos: 0
saludos cluster, fijate en un intento por querer activar el gd en php.ini, le estuve moviendo y .....ya se descompuso, ahora lo que podia hacer ya no lo hace y no se que le movi, ahora lo unico que me queda hacer es borrar todo el php e instalarlo otra vez, ya tengo el documento que me diste de apache+ php pero te digo que estoy trabajando con PWS, no con apache y ese documento aunque me da una idea de como se instala esta muy enfocado al trinomio apache+php + mysql. pero bueno para empezar otra vez.

ya tengo el php-5.0.3-Win32.zip, este trae un instalador que te va guiando por dos tipos de instalacion standar y avanzada, dicho package ya contiene el php_gd.dll y tambien tiene el gd2.dll, con estos ya no tengo que hacer nada?, es decir quedan dentro de la carpeta que se cra que es C:php, aqui esta contenido el archivo php.ini, a ese se supone que no se le tiene que hacer nada o si?, ya instalado creo un documento con phpinfo() y se supone que debe de salir que el gdlibrary esta activado o disponible o que puedes utilizar los headers image/gif, image/jpeg y otros no?,bueno deja hacer todo este procedimiento otra vez y haber que sale, si tengo dudas espero poder encontrarte por este foro, gracias por la ayuda.
  #9 (permalink)  
Antiguo 14/04/2005, 15:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No sé si conoces que PHP como lo usas es bajo un servidor HTTP .. sea PWS, IIS o Apache .. realmente te recomiendo TODO menos PWS para ejecutar PHP .. usa Apache 2.x que funciona perfectamente en Windows o en su defecto IIS si es que piensas usar ASP también.

Un saludo,
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 07:21.