PHP - ver primer imagen

 
Vista:

ver primer imagen

Publicado por Ariel (2 intervenciones) el 08/01/2010 05:43:15
Hola a todos!

El sitio web esta creado en php y mysql es un sistema de registro de propiedades.

Tengo un inconveniente con mostrar la primera imagen de una tabla de nombre webFotos donde contiene 4 fotos.

En una pagina quiero mostrar los datos de la propiedad donde la tabla es webPropiedad junto a una foto la primera que se cargo, pero no puedo mostrar la primera imagen.

Tengo cargado dos registros en webPropiedades y en webFotos 8 fotos donde 4 pertenecen a un registro y las restantes al registro siguiente.

Estas son las tablas

CREATE TABLE webFotos (
idFoto int(11) NOT NULL auto_increment,
idPropiedad int(10) NOT NULL default '0',
foto varchar(255) NOT NULL,
idUsuario smallint(6) NOT NULL,
PRIMARY KEY (idFoto)
);

-- webPropiedades
DROP TABLE IF EXISTS webPropiedades;
CREATE TABLE webPropiedades (
idPropiedad int(11) NOT NULL auto_increment,
precio int(2) NOT NULL,
descripcion mediumtext NOT NULL,
fechaDesde date NOT NULL default '0000-00-00',
fechaHasta date NOT NULL default '0000-00-00',
idUsuario smallint(6) NOT NULL,
PRIMARY KEY (idPropiedad)
);

En la primer pagina quiero mostrar la primer foto del primer registro, pero hago la siguiente consulta para ver que me trae.

SELECT DISTINCT idPropiedad
FROM webFotos

resultado

idPropiedad
1
2

Si quiere traer con el nombre de la imagen

SELECT DISTINCT idPropiedad, foto
FROM webFotos

resultado

idPropiedad foto
1 1_foto1.jpg
1 1_foto2.jpg
1 1_foto3.jpg
1 1_foto4.jpg
2 2_foto5.jpg
2 2_foto6.jpg
2 2_foto7.jpg
2 2_foto8.jpg

pero me trae todo

Lo que me gustaria traer es lo siguiente

idPropiedad foto
1 1_foto1.jpg
2 2_foto5.jpg

Como puedo hacer esto?

Y en la siguiente pagina donde veo el detalle del inmueble si traigo todas las fotos que pertencen a ese registro.

Alguien sabe como puedo hacer esto?

Gracias!

Ariel
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ver primer imagen

Publicado por Diego Romero (1450 intervenciones) el 09/01/2010 04:29:02
¿No sería mejor que pusieras un segundo campo índice en la tabla webFotos que indique el orden de la foto para una propiedad?.

Digamos así:

idPropiedad numFoto foto

Donde idPropiedad sería la foregin key de la tabla webPropiedades y numFoto el número de foto para esa propiedad, entonces usando tu ejemplo quedría:

idPropiedad numFoto foto
1 1 1_foto1.jpg
1 2 1_foto2.jpg
1 3 1_foto3.jpg
1 4 1_foto4.jpg
2 1 2_foto5.jpg
2 2 2_foto6.jpg
2 3 2_foto7.jpg
2 4 2_foto8.jpg

De esta forma puedes hacer la consulta que quieres así:

SELECT idPropiedad, foto FROM webFoto WHERE numFoto = 1;

Es decir, regresar la primera foto de todas las propiedades. En el ejemplo regresaría:

idPropiedad numFoto foto
1 1 1_foto1.jpg (primera foto de la primera propiedad)
2 1 2_foto5.jpg (primera foto de la segunda propiedad)

El nuevo campo numFoto no puede ser autonumérico, obviamente, tendrás que llevarlo "a mano" pero no es difícil, cada vez que haces un INSERT en la tabla webFoto primero buscas cuál es el último numFoto de esa propiedad:

SELECT numFoto FROM webFoto WHERE idPropiedad = 1 ORDER BY numFoto DESC, LIMIT 1;

Es decir, regresar numFoto del primer resultado de todos los registros en orden descendente donde idPropiedad sea igual a 1. Regresaría 4. Le sumas uno y ya tienes el nuevo numFoto.

Otra ventaja es que puedes cambiar cuál será la primer foto en caso que la que está no sea la adecuada, simplemente intercambiando la primera por la elegida. Supongamos que 2_foto5.jpg, que es la primera de idPropiedad = 2 no es adecuada y debe ser en su lugar 2_foto8.jpg, no es nada más que copiar el campo foto del registro 2 4 al 2 1 y del 2 1 al 2 4. Como lo tienes ahora sería muy engorroso hacer algo así.

Otro inconveniente es que si debes eliminar una foto debes volver a recalcular numFoto pero tampoco es difícil hacerlo.

Al margen, he notado que idPropiedad de la tabla webPropiedades no tiene el mismo tamaño que idPropiedad de la tabla webFotos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar