Foros del Web » Programando para Internet » PHP »

Varias imagenes !!!....??

Estas en el tema de Varias imagenes !!!....?? en el foro de PHP en Foros del Web. Holasssss. El tema es el siguiente: Yo quiero recuperar de mi DB una sere de imagenes y estoy usando este script: <?php $tab=$_REQUEST['t']; @mysql_connect("localhost","yo","mi_pass"); @mysql_select_db("la_base"); ...
  #1 (permalink)  
Antiguo 12/10/2005, 09:27
 
Fecha de Ingreso: abril-2005
Mensajes: 372
Antigüedad: 12 años, 7 meses
Puntos: 0
Sonrisa Varias imagenes !!!....??

Holasssss. El tema es el siguiente: Yo quiero recuperar de mi DB una sere de imagenes y estoy usando este script:

<?php


$tab=$_REQUEST['t'];

@mysql_connect("localhost","yo","mi_pass");

@mysql_select_db("la_base");

$result = mysql_query("SELECT foto1, foto2, foto3, foto4 FROM $tab WHERE id=2");
$result_array = mysql_fetch_array($result);
$tipo_foto = $result_array["filetype"];
header("Content-Type: $tipo_foto");
echo $result_array["foto2"];
echo $result_array["foto2"];
echo $result_array["foto4"];
echo $result_array[6];
mysql_close();
?>


El tema es que al pasarle la tabla donde debe buscar me devuelve una sola imagen, la primera, echo $result_array ["foto2"]; y las demas ni bola...alguien me podria indicar por que?
Yo estoy armando un sitio con sistema de actualizaciones a traves de forms, todo en php, por eso es que uso la BD para gestionar mis imagenes, se me hace mas facil para actualizar desde la web...alguna recomendacion mejor sera bienvenida!
Muchias gracias y saludos a todosss
  #2 (permalink)  
Antiguo 12/10/2005, 10:57
 
Fecha de Ingreso: abril-2005
Mensajes: 372
Antigüedad: 12 años, 7 meses
Puntos: 0
...tendre que poner un salto de linea <br>?.....
  #3 (permalink)  
Antiguo 12/10/2005, 11:41
 
Fecha de Ingreso: abril-2005
Mensajes: 372
Antigüedad: 12 años, 7 meses
Puntos: 0
...o me tendre que dedicar a panadero...
  #4 (permalink)  
Antiguo 12/10/2005, 11:54
Avatar de c4r1o5  
Fecha de Ingreso: febrero-2005
Mensajes: 81
Antigüedad: 12 años, 9 meses
Puntos: 1
Lo que sucede es que cuando devuelve el resultado de la consulta lo primero que encuentra son metadatos que corresponden a una imagen, y solo trata la primera, si lo que quieres es que las muestre debes ponerlas entre las etiquetas de <img> guardandolas al servidor primero, o, recargar la pagina N numero de veces como N imagenes hayas obtenido, siempre pasando como variable los datos de la imagen que quieras ver en el header, pero solo podras ver una sola imagen si muestra el contenido en el header.
__________________
¿Que importa el resto?, el resto es simplemente la humanidad, hay que ser superior a humanidad, por fuerza, por altura de alma, por desprecio ...
  #5 (permalink)  
Antiguo 12/10/2005, 12:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Debes llamar a tu código uno por imagen para tener el control de como debe quedar en tu página HTML

Es decir ..

ver_foto.php
Código PHP:
<?php

$tab
=$_REQUEST['t'];
$foto=$_GET['foto'];

@
mysql_connect("localhost","yo","mi_pass");

@
mysql_select_db("la_base");

$result mysql_query("SELECT foto$foto FROM $tab WHERE id=2");
$result_array mysql_fetch_array($result);
$tipo_foto $result_array["filetype"];
header("Content-Type: $tipo_foto");
echo 
$result_array["foto$foto"];
mysql_close();
?>
Y lo llamas desde HTML (en otra página):

Código PHP:
<img src="ver_foto.php?t=nose&foto=1"
ó

Código PHP:
<img src="ver_foto.php?T=nose&foto=2"
Bueno .. eso sería una solución (a falta de validaciones várias para tener algo de seguridad) según diseñastes tu BD (tabla de imagenes) .. Por qué realmente a no ser que siempre uses un máximo de "4 fotos por registro" .. yo no usaría un campo por foto sino una tabla de fotos relacionadas con ese "registro" que le dá otras propiedades a ese grupo de fotos ..

Ejemplo:

tabla "padre"
id_padre
nose
otra propiedad ..
etc

tabla fotos
id_foto
id_padre (o pertenece)
nombre
tipo
foto_binario

Así tienes un sistema más abierto .. de 0 a N imagenes por registro .. sin problemas de modificar "código" y estructura de tablas si necesitas más imagenes eventualmente .. más óptimo si no siempre usas esas "4" imagenes ..

Por cierto .. para que usas $tab? .. tienes varias tablas para hacer "grupos" de imagenes? .. creo que deberías replantearte tu modelo de datos (tu diseño de tu BD).

Un saludo,
  #6 (permalink)  
Antiguo 12/10/2005, 12:21
 
Fecha de Ingreso: abril-2005
Mensajes: 372
Antigüedad: 12 años, 7 meses
Puntos: 0
Ok, voy a probar y te cuento.
Gracias milll
  #7 (permalink)  
Antiguo 12/10/2005, 12:34
 
Fecha de Ingreso: abril-2005
Mensajes: 372
Antigüedad: 12 años, 7 meses
Puntos: 0
Mmmmmm.....mi estimado Cluster.....el tema es que soy realmente novato en esto y estoy "tocando de oido", no se si me entendes...leo, trato de interpretar, copio, modifico, y hago lo que puedo.
Originalmente tenia armada la tabla de fotos aparte, pero se me presento el problema de las actualizaciones y si pasaba la variable ID, pero si borro un registro me cambia el id y tengo que modificar la variable en cada actualizacion (en el php), se netiende? Por eso use como variable $tab (la tabla) para que me recoja los datos del campo "foto1, foto2, etc" sin importar el id....aunque seguí usando el id....
...no se...algun consejo amigos?
  #8 (permalink)  
Antiguo 12/10/2005, 13:50
 
Fecha de Ingreso: abril-2005
Mensajes: 372
Antigüedad: 12 años, 7 meses
Puntos: 0
Tuve probando, pero no puedo lograr mostrar las imagenes actualizadas por que no se como mostrar el ultimo id (el mas actualizado) de las imagenes para que em tome ese....alguien sabe?
  #9 (permalink)  
Antiguo 12/10/2005, 14:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por otraverix
Mmmmmm.....mi estimado Cluster.....el tema es que soy realmente novato en esto y estoy "tocando de oido", no se si me entendes...leo, trato de interpretar, copio, modifico, y hago lo que puedo.
Originalmente tenia armada la tabla de fotos aparte, pero se me presento el problema de las actualizaciones y si pasaba la variable ID, pero si borro un registro me cambia el id y tengo que modificar la variable en cada actualizacion (en el php), se netiende? Por eso use como variable $tab (la tabla) para que me recoja los datos del campo "foto1, foto2, etc" sin importar el id....aunque seguí usando el id....
...no se...algun consejo amigos?
Creo que tienes un tremendo lio ..

No entendí bien eso del "ID" y "pero si borro un registro me cambia el id y tengo que modificar la variable en cada actualizacion (en el php),"

Si quieres .. ves poniendo TODO el código que usas y explica que quieres hacer .. por qué TODO el mundo usa el famoso "ID" como identificativo único de registros sin problemas ...

Ya que usas Mysql .. podrías pasarte por sitios como:

www.mysql-hispano.com y leer sobre diseño de BD (práctico y orientado hacia Mysql) .. creo que te vendrá bien para no andar "tantenado" el tema. Nadie nace sabiendo .. pero es importante que si uno es autodidacta que no sólo se limite a "probar" sino también a leer algo de teoría al respecto.

Un saludo,
  #10 (permalink)  
Antiguo 12/10/2005, 14:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por otraverix
Tuve probando, pero no puedo lograr mostrar las imagenes actualizadas por que no se como mostrar el ultimo id (el mas actualizado) de las imagenes para que em tome ese....alguien sabe?
Pero .. el "último ID" despues de hacer un INSERT a tu BD .. o en cualquier momento?

Si es esto último (suponiendo que ese campo ID es uno autonumético y único) .. puedes ordenar tu resultado en orden descendente y tomar sólo un resultado (limitado)

Sería una consulta SQL tipo:
SELECT * FROM tabla ORDER BY id DESC LIMIT 1

Un saludo,
  #11 (permalink)  
Antiguo 12/10/2005, 14:19
 
Fecha de Ingreso: abril-2005
Mensajes: 372
Antigüedad: 12 años, 7 meses
Puntos: 0
Creeme que leo cuanto cae en mis manos, no solo tanteo y demas, me como cuanto tutorial o manual anda volando o "webeando" y gracias a eso y a gente como vos que ayuda desinteresadamente es que no estoy más perdido aún ;)

Si, es el ultimo ID despues de hacer un INSERT y estaba buscando en un manual exactamente ese query que me dijiste y no lo encontraba.
Y respecto al ID me refiero a que cuando haces un DELETE FROM... el id que pertenecia a ese registro se borra y si yo pongo supongamos
<img src="ver_foto.php?t=tabla&fotoId=1">
ese ID ya no va a existir...no?
Bueno, gracias mill, y pruebo y cuento ;)
  #12 (permalink)  
Antiguo 12/10/2005, 16:14
 
Fecha de Ingreso: abril-2005
Mensajes: 372
Antigüedad: 12 años, 7 meses
Puntos: 0
Ya lo tengo casi solucionado, pero tengo un "pequeño" problem:
Yo tengo una imagen, la recojo de la BD por su ID, pero cuando yo borro esta imagen e ingreso otra esta ultima ingresa con in nuevo ID. Como puedo hacer para que cada vez que yo llame a una imagen (por el id o como sea)aparezca la mas nueva Y las cuatro ó cinco que le siguen del mismo campo? Siempre las mas nuevas
Grazzia :)
  #13 (permalink)  
Antiguo 13/10/2005, 06:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Si, es el ultimo ID despues de hacer un INSERT
Si es eso lo que buscas .. la sentencia SQL que te indiqué no es para eso, aunque en muchos casos te va a dar el mismo resultado .. no es no lo que debes usar .. para eso tienes la función:

mysql_insert_id()
http://www.php.net/mysql_insert_id
(fijate los cometarios de los usuarios de esa función .. ahí tienes ejemplos completos de uso).

Pero como te decía .. esa función se ha de ejecutar seguidamente de tu ejecución de tu INSERT .. es decir .. en una secuencia así:

Código PHP:
$sql="INSER INTO ......";
mysql_query($sql);

$ultimo_id_generado=mysql_insert_id(); 
Cita:
y estaba buscando en un manual exactamente ese query que me dijiste y no lo encontraba.
En un manual o tutorial de PHP no lo vas a encontrar .. Esa "sentencia" es SQL (lenguaje estructurado de consultas) .. Si usas Mysql .. hay que ver su SQL concreto, de esa forma puedes "sabiendo" que tienes sentencias SQL para "ordenar" .. para "limitar" los registros que arroja una consulta y otros detalles implementar una solución como la que te propuse.

De hecho .. la función PHP que te menciono para obtener el último ID generado por un campo "autoincremental" de Mysql tiene su equivalente en SQL también. Normalmente es mejor usar SQL vs funciones de PHP que hagan lo mismo .. pues el trabajo lo hace integramente el "motor" de tu BD .. y no a medias entre PHP y Mysql en este caso.

Cita:
Y respecto al ID me refiero a que cuando haces un DELETE FROM... el id que pertenecia a ese registro se borra y si yo pongo supongamos
<img src="ver_foto.php?t=tabla&fotoId=1">
ese ID ya no va a existir...no?
Ok .. claro que no existirá .. pero para eso una de las cosas básicas que hay que hacer es verificar si existe tu registro a procesar antes de hacer algo con el justamente para dar un mensaje de "ya no existe tal registro .. no hay resultados" ...

Por lo demás .. esos "links" hacia esas imagenes los debes generar dinámicamente con PHP, es decir ... consultas a tu BD y obtienes lo que hay en ese momento (registros) .. los que borrastes ya no estarán y sólo quedaran los llinks apuntando a los "ID" de registros que tienes (o es que lo haces "a mano" en HTML?) ..

Si tu pusistes un link "hoy" en un e-mail .. en un foro .. etc apuntando a ese script e ID de registro que "mañana" no existe por qué lo borrastes .. ningún problema .. para eso ya te he comentado que uno debe ver -antes- si existe tu registro antes de hacer algo con el.

Cita:
Yo tengo una imagen, la recojo de la BD por su ID, pero cuando yo borro esta imagen e ingreso otra esta ultima ingresa con in nuevo ID.
Esto es parte de la teoría de la "integridad referencial" .. así debe quedar y por eso se usan campos de tipo "ID" (identificadores) como "autonuméricos" e incrementales.

Imagina el caso típico:
Hoy tengo un link apuntando a tal ID de esa fotografía .. yo me lo almacené como favorito en mi navegador .. o puse ese link en un foro .. lo envié por e-mail a un amigo .. etc.

Mañana tu borras ese "ID" (ese registro con esa imagen) .. si yo voy a mis favoritos a ver esa imagen .. lo normal es esperar que si no existe .. me diga que no existe ya .. pero NO que me pegues el "cambiazo" y en su lugar me pongas -otra- imagen (o conetenido en general) que NO es el que en algún momento yo vi.

Cita:
Como puedo hacer para que cada vez que yo llame a una imagen (por el id o como sea)aparezca la mas nueva Y las cuatro ó cinco que le siguen del mismo campo? Siempre las mas nuevas
Aquí no te entendí .. No sé como "identificas" tu que una imagen es más nueva que otra .. sobre todo si sigues almacenando tus imagenes como campos de una tabla y no como registros de una tabla como te hice la recomendación hace unos mensajes atras ..

Si usas "un campo de una tabla por imagen" así no hay ningún control sobre ella, ... no hay forma de saber cual será más nueva que la anterior a no ser que te guardes un campo más para almacenar la fecha en la que lo modificas o la creas ..

Insisto que bajo mi punto de vista .. el hecho de usar "campos" en una tabla para almacenar N imagenes no es lo más versatil ..

Un saludo,
  #14 (permalink)  
Antiguo 13/10/2005, 07:07
 
Fecha de Ingreso: abril-2005
Mensajes: 372
Antigüedad: 12 años, 7 meses
Puntos: 0
Cluster, antes que nada buen dia y te agradezco tu extensa y exelente respuesta!
Te comento que lo que estoy haciendo es una pagina de turismo que va a contar con un sistema de actualizaciones (back end) a traves de forms php.
Para el tema de las imagenes opte por la recomendacion que me diste ya que me parecio la mejor, mas practica y logica.
Esta tabla "fotos" tiene esta estructura:
id: autonumerico - autoincrementable
comentario: varchar 50
foto_lugar: blob
foto_lugar_2: blob
filetype: varchar 20
Entonces, yo por cada campo "foto_lugar" tengo la/las fotos que quiera y las accedo por "campo/id", hasta ahi ok. Entonces si yo en mi consulta sentencio SELECT foto_lugar_2 FROM fotos ORDER BY id DESC LIMIT 1
me arroja el ultimo registro de ese campo no? Bueno, yo aparte e ese ultimo registro necesito que me muestre tambien los que le siguen a partir de ese ultimo reg...espero que se entienda.
Voy a leer esos post que me dijiste y a ver que sale...ah! ese manual que te decia es un manual de diferentes leguajes de programacion web en el que tambien esta SQL, es ahi donde estaba buscando :) pero como es medio basico tiene poco de sql y no estaba la sentencia que me pasaste...o estaba y en la ansiedad de encontrar una respuesta no la vi.
  #15 (permalink)  
Antiguo 13/10/2005, 07:18
 
Fecha de Ingreso: abril-2005
Mensajes: 372
Antigüedad: 12 años, 7 meses
Puntos: 0
Me olvidaba...

" Por lo demás .. esos "links" hacia esas imagenes los debes generar dinámicamente con PHP, es decir ... consultas a tu BD y obtienes lo que hay en ese momento (registros) .. los que borrastes ya no estarán y sólo quedaran los llinks apuntando a los "ID" de registros que tienes (o es que lo haces "a mano" en HTML?) .. "



No se como generar estos dinamicamente, como cambiar el ID de mi link dinamicamente....
  #16 (permalink)  
Antiguo 13/10/2005, 07:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. esa no es la recomendación que te dí ..

Mi recomendación es UNA tabla de imagenes a registro por imagen .. relacionada con otra tabla donde supongo que tal vez guardes la información del "destino turistico" o algo así ...

Te recuerdo el modelo de datos:

destinos
id_destino_turistico
nombre
descripcion
etc_propiedades

fotos_destinos_turisticos
id_foto_destino
id_destino
foto_blod
type_foto
fecha_foto
etc .. propiedades de la FOTO

De esto te quedará algo tipo:
en la tabla fotos

id_foto id_destino_turistico
1 ------> 1
2 ------> 1
3 ------> 2
4 ------> 3
5 ------> 3
6 ------> 3
7 ------> 1

Si te fijas .. ahí tendríamos un registro (del "destino turístico") con 2 fotos .. otro con 1 .. otro con 3 .. y no ha de ser en este orden .. de repente otro día ingresas una nueva foto al "ID" del "destino turístico" 1 y no hay problema ...

De esta forma .. perfectamente puedes controlar por ejemplo la fecha que subes la imagen u otras propiedades .. mostrar las N imagenes de un "destino turístico" en concreto .. o de todos .. o sólo las primeras .. o las últimas imagenes que subieron en general ..

En fin .. las combinaciones son "infinitas" con "modelo de datos" bien planteado.

Un saludo,
  #17 (permalink)  
Antiguo 13/10/2005, 07:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por otraverix
" Por lo demás .. esos "links" hacia esas imagenes los debes generar dinámicamente con PHP, es decir ... consultas a tu BD y obtienes lo que hay en ese momento (registros) .. los que borrastes ya no estarán y sólo quedaran los llinks apuntando a los "ID" de registros que tienes (o es que lo haces "a mano" en HTML?) .. "



No se como generar estos dinamicamente, como cambiar el ID de mi link dinamicamente....
En tu caso ya te he comentado que por la forma que tienes de trabajar esas "imagenes" como "campos" de una tabla .. se complica enormenete el sistema cuando se puede hacer más versatil y estructurado como te comento.

Pasate por Mysql-hispano y ves leyendo estos tutoriales en este orden:
http://www.mysql-hispano.org/page.php?id=23
http://www.mysql-hispano.org/page.php?id=16
http://www.mysql-hispano.org/page.php?id=27

(y luego seguimos viendo tu sistema .. ahí te darás cuenta de algunas cosas sobre lo que usas actualmente).

Un saludo,
  #18 (permalink)  
Antiguo 13/10/2005, 09:17
 
Fecha de Ingreso: abril-2005
Mensajes: 372
Antigüedad: 12 años, 7 meses
Puntos: 0
Busqueda ...Reestructurar todo

Estuve leyendo todo lo que me dijiste y me di cuenta de MUCHAS cosas que estoy haciendo mal (por apurado, ansiedad, tiempos, etc) y a ver que te parece.
yo tengo una tabla creada por cada destino y en cada tabla hay campos del tipo "Comentarios, Hoteles, Tarifas, etc..." que se repiten en todas las tablas de destinos. Quizas lo mejor sea armar una sola tabla que los campos sea los que se repiten en todos los destinos y use la sentencia UPDATE para modificar estos registros...que te parece?
Hasta ahi me parece bien, pero se me complica con el tema de las imagenes...se puede hacer un UPDATE en un campo BLOB?
Gracias nuevamente....aun tengo la cabeza a mil con todo lo que lei...y sigo analizando
  #19 (permalink)  
Antiguo 13/10/2005, 14:28
 
Fecha de Ingreso: abril-2005
Mensajes: 372
Antigüedad: 12 años, 7 meses
Puntos: 0
Jejejeej..estoy cambiando mis 22 tablas por 5 tablas interrelacionadas...tiene otro color no?
  #20 (permalink)  
Antiguo 13/10/2005, 14:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Hasta ahi me parece bien, pero se me complica con el tema de las imagenes...se puede hacer un UPDATE en un campo BLOB?
Por supuesto que si .. un campo "BLOB" lo trabajas como cualquier otro tipo de campo (cara a SQL).

Cita:
Jejejeej..estoy cambiando mis 22 tablas por 5 tablas interrelacionadas...tiene otro color no?
A eso iva yo cuando te hice el comentario que tu "modelo de datos" no era correcto o se podía mejorar mucho.

De hecho ahora te daras cuenta que según tu nuevo modelo de datos .. añadir o definir un "destino" más no es ningún problema, el sistema puede crecer de forma ordenada sin cambiar nada de "código".

Un saludo,
  #21 (permalink)  
Antiguo 13/10/2005, 14:59
 
Fecha de Ingreso: abril-2005
Mensajes: 372
Antigüedad: 12 años, 7 meses
Puntos: 0
ajá!

Veo todo lo que se puede hacer. Igualmente me estoy encontrando con nuevos problemas..pero dentro de la logica y hasta ahora de facil solucion.
Ahora estoy peleando para interrelacionar lo mejor posible mis tablas...y bué...si me llego a encontrar con otra "pared" que no pueda atravesar yo solo te chiflo
Te agradezco mucho Cluster!
Se vemoooooo en el próximo post!
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 09:32.