elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Como hacer esta consulta mysql desde php?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como hacer esta consulta mysql desde php?  (Leído 2,299 veces)
dyhsoluciones

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Como hacer esta consulta mysql desde php?
« en: 16 Junio 2012, 22:00 »

Tengo estas tablas:

TABLA: contenido

id

TABLA: imagenes
id

TABLA DE RELACION: contenido_x_imagenes

idContenido
idImagen

Una variable (trabajo en php): $id.
La variable $id contiene el ID de un elemento de la tabla contenido. (seria como el id de una noticia).

EL PROBLEMA:
Recuperar TODAS las imagenes de la tabla "imagenes", pero, ordenandolas de tal forma, que las imagenes que esten relacionadas con "$id" en la tabla de relaciones contenido_x_imagenes salgan primeras.
Importante: hay imagenes, es decir, "ids" de imagenes que apareceran mas de una ves en la tabla "contenido_x_imagenes", ya que una imagen puede estar relacionada a diferentes contenidos. Solo se debe mostrar esa imagen una vez.
Y tambien hay imagenes que NO estan en la tabla de relacion "contenido_x_imagenes". Estas imagenes tambien tienen que mostrarse.

Lo que hize fue esto, que funciona muy bien, pero si la imagen esta repedita en la tabla "contenido_x_imagenes", me la muestra repetida en el listado, me faltaria filtrarlo:

SUPONGAMOS QUE $id = 2.

Código:
// cxi.idContenido lo uso para saber si esta en la tabla de relacion o no...
$cadenaMostrarIMG = mysql_query("SELECT i.*, cxi.idContenido FROM imagenes i LEFT JOIN contenido_x_imagenes cxi ON i.id = cxi.idImagen ORDER BY IF (cxi.idContenido = 2, 1, 2)");  

 while($filaRecuperarIMG = mysql_fetch_array($cadenaMostrarIMG))
 {

            //Si hay idContenido, quiere decir que la imagen que estoy mostrando esta relacionada con el contenido (en este caso el contenido tiene ID=2)
            if($filaRecuperarIMG['idContenido'] == 2)
            {
                $checkbox = 'checked="checked"';
            }
            else
            {
                $checkbox = '';
            }

            echo '<img src="../../upload/'.$filaRecuperarIMG['nombreArchivo'].'" align="left"/>';
            echo '<label><strong>ADJUNTAR</strong> <input type="checkbox" value="'.$filaRecuperarIMG['id'].'" name="imagenes[]" '.$checkbox.'  /></label>';
}  

Lo que no termino de entender, es esta porsion de codigo:

Código:
ORDER BY IF (cxi.idContenido = 2, 1, 2)

MIl gracias por esta gran comunidad.


En línea

Yoghurt

Desconectado Desconectado

Mensajes: 122


Si alguien se molesto en escribir, justo es leer.


Ver Perfil WWW
Re: Como hacer esta consulta mysql desde php?
« Respuesta #1 en: 14 Julio 2012, 04:02 »

"ORDER BY IF (cxi.idContenido = 2, 1, 2)"
Me parece que ese trozo de codigo es condicional; ORDENAR POR... SI (cxi.idContenido = 2, parte verdadera, parte falsa)

Leí la sintaxis en http://dev.mysql.com/doc/refman/4.1/en/select.html  pero no puedo probar o experimentar las condiciones y operadores para una consulta (no tengo mysql aun) asi que lealo ;)

Lo otro seria que tu mismo eliminaras las imagenes repetidas que traiga la consulta MySql, tal vez mysql no puede hacer todo el trabajo. Y para agregar las imagenes que no estén en la consulta, haz una nueva consulta para obtenerlas ¬¬ pero usa LIMIT en la consulta para que no te llenes de imagenes.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cómo hacer esta consulta en MySql: Select distinct...
Bases de Datos
orion180 2 6,794 Último mensaje 21 Septiembre 2011, 20:10
por fran800m
como asignarle el resultado de una consulta de mysql a un textbox desde vb.net?
.NET (C#, VB.NET, ASP)
pauly14 3 10,058 Último mensaje 27 Marzo 2011, 15:06
por [D4N93R]
Cómo hacer esta consulta SQL
Bases de Datos
Aikanáro Anário 1 3,406 Último mensaje 17 Septiembre 2011, 01:56
por fran800m
Esta consulta mysql si nose como hacerla :S
Bases de Datos
mark182 2 2,260 Último mensaje 25 Septiembre 2011, 22:41
por seba123neo
[MYSQL] Otra forma de hacer esta consulta?
Bases de Datos
klaine 1 2,345 Último mensaje 12 Noviembre 2011, 15:07
por fran800m
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines