Cita:
Iniciado por mortiprogramador
Hola
Bueno, no se si has probado todo el "poder" del limit
tu tienes
SELECT * FROM `noticias` ORDER BY `posicion`,`importancia`,`fecha_y_hora` DESC LIMIT 1
lo que trae solo 1 dato y luego haces tus diligencias, porque no intentas con esto
SELECT * FROM `noticias` ORDER BY `posicion`,`importancia`,`fecha_y_hora` DESC LIMIT 0,5
asì pues, la consulta traera solo 5 registros que es lo que entiendo necesitas, y pues empieza desde la posiciòn 0, es decir, desde la primera coincidencia, si necesitaras por ej mostrar 6 noticias, entonces te recomendaria usar una variable que se incremente (y decremente) de a 1 para que solo se cambie el limit, asi
"SELECT * FROM `noticias` ORDER BY `posicion`,`importancia`,`fecha_y_hora` DESC LIMIT ".$var.",5"
y asi entonces, $var empezaria en 0 y mostraria las primeras 5, y luego al volverse $var = 1 entonces mostraria las noticias 2 a 5 y la noticia 6, sacando a la primera noticia, y para volver a verla, entonces $var = 0, espero no haberte enredado mas.... jajaj, bueno, intenta con eso a ver si te da alguna soluciòn
saludos
Hola mortiprogramador y gracias.
Lo que me decis estaría bien en caso que yo mostrara las noticias desde LA QUE VEO hacia las 5 siguientes (es decir, es muy util si estoy viendo menos de las 6 primeras noticias). Pero como está en el ejemplo en mi post anterior, la que se está viendo es (en el paginador por numeros) la del medio, por lo que debo obtener los 2 registros siguientes y los 2 anteriores. Si hago un limite determinado por una variable que se acrecienta en cada loop, como determino el valor de esa variable si estoy viendo la noticia 654 (por decir un numero) si justamente lo que necesito averiguar que esa noticia es la 654 sin recorrer toda la base.
De cualquier manera me hiciste notar que para obtener la ultima pagina era mas facil que como lo hacia, ya que previamente puedo obtener el numero TOTAL de registros bajo ciertos delimitadores y partiendo de ese numero, muestro la ultima noticia, sería así:
$sql1 = mysql_query("SELECT * FROM `noticias`");
$total = mysql_num_rows($sql1);
// supongamos que me devuelve 2000
$total = $total-1;
// le resto uno para en el siguiente query llevarlo DESDE el registro 1999 y mostrar 1 solo (el ultimo)
$sql = mysql_query("SELECT * FROM `noticias` ORDER BY posicion,importancia,fecha_y_hora DESC LIMIT $total,1");
Y con esa ultima sentencia ya se cual es el ultimo registro ordenado de la manera que quiero sin recorrer toda la tabla.
Acá te agradezco porque el uso de esa variable se me ocurrió debido a tu post, je.
Pero sigue siendo un tema el paginador de numeros...
Ahora... me pregunto:
¿HAY ALGUNA SENTENCIA SQL QUE ME PERMITA CONTAR LOS REGISTROS
HASTA UN DETERMINADO REGISTRO QUE YO QUIERA?
Creo que podria ir por ahi la solución, si pudiera obtener la cuenta de registros hasta (...por ejemplo) la noticia con id 345 (que puede estar en la posición 100, de acuerdo al ORDER BY) entonces podria determinar a partir de ahi las siguientes o posteriores noticias con mas facilidad. El problema es que no se si realmente se puede hacer, o al menos no he leido nada al respecto en foros o en San Google.
Nuevamente gracias y saludos