Comunidad de diseño web y desarrollo en internet online

PHP: Listado con prioridades

Citar            
MensajeEscrito el 19 Jun 2008 07:57 pm
Intentaré no vagar.

Estoy realizando un sitio de noticias.
En su portada se muestran 6 noticias de la siguiente manera:



Estas son mostradas según la prioridad dada por el data entry.

Para mostrar la primer noticia, según su prioridad, hago lo siguiente:

Código :

$mysql = [url=http://www.d-sur.com.ar/?p=37]new mysql[url];
$mysql->connect();
$mysql->query("SELECT * FROM noticias ORDER BY IDnoticia DESC,IDprioridad ASC,fecha_creacion DESC LIMIT 1,1");
if ($row = $mysql->fetch_array()) {
    // formato de la noticia que de seguro no les interesa...
}
$mysql->close();


Luego para mostrar la segunda noticia hago lo mismo solo que:

Código :

$mysql->query("SELECT * FROM noticias ORDER BY IDnoticia DESC,IDprioridad ASC,fecha_creacion DESC LIMIT 2,2");


Y desde luego, hago lo mismo para las 4 que se listan en el costado solo que a estas con un while.

¿Es esto correcto? Me parece un tanto "sucio" mi "solución" ¿Existe una forma "más adecuada"?

Muchas gracias.

Por Necrophasto

Claber

148 de clabLevel



Genero:Masculino  

Diseñador gráfico y web

mozilla
Citar            
MensajeEscrito el 19 Jun 2008 07:59 pm
Hago una correción sobre la imagen:

La primer noticia y la segunda son las mismas ya que la tengo repetida en mi database. Estas dos se supone que son distintas.

Por Necrophasto

Claber

148 de clabLevel



Genero:Masculino  

Diseñador gráfico y web

mozilla
Citar            
MensajeEscrito el 19 Jun 2008 09:59 pm
Ummm. tu pregunta es si los 4 registros que necesitas pueden salir en un solo query.?

Si es asi utiliza el limit

Código :

$mysql->query("SELECT * FROM noticias ORDER BY IDnoticia DESC,IDprioridad ASC,fecha_creacion DESC LIMIT 0,4");


Eso debe devolver los 4 primeros registros segun el orden (prioridad) que le hayas dado en el order by

PD: Obvio, sustituyendo el 4 por cualquier otro numero te mostrará los N registros que desees

Por mauril26

161 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Jun 2008 02:22 am
Sí, eso está claro, pero mi pregunta "para-nada-clara" era de cómo luego los muestro.

Yo tengo el query con el LIMIT de 0 a 6, pero ¿Cómo hago para decirle que a una la acomode de cierta forma y a otra de otra con un solo query?

En mi caso yo generé en total 3 querys; el primero que sería de LIMIT 1, la segunda con LIMIT 2 y luego un while() con LIMIT 2,4

Entonces, repregunto ¿Cómo puedo, con UN solo query, dar formatos diferentes a 6 noticias?

Por Necrophasto

Claber

148 de clabLevel



Genero:Masculino  

Diseñador gráfico y web

mozilla
Citar            
MensajeEscrito el 20 Jun 2008 05:11 am
Cambia:

Código :

if ($row = $mysql->fetch_array()) {
    // formato de la noticia que de seguro no les interesa...
}

por

Código :

while ($row = $mysql->fetch_array()) {
    // formato de la noticia que de seguro no les interesa...
}


Es todo, alli veras que estaran todas las noticias, solo debe condicionar por cada noticia y su formato especifico

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.