Foros del Web » Programando para Internet » PHP »

Paginando con una sola consulta

Estas en el tema de Paginando con una sola consulta en el foro de PHP en Foros del Web. Bueno antes de todo gracias a tod@s por la ayuda que siempre he recibido de estos foros y que me ha ayudado en muchas ocasiones ...
  #1 (permalink)  
Antiguo 19/08/2008, 04:37
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
De acuerdo Paginando con una sola consulta

Bueno antes de todo gracias a tod@s por la ayuda que siempre he recibido de estos foros y que me ha ayudado en muchas ocasiones a resolver mis dudas; creo que es hora de contribuir con mi granito de arena un poquillo.

Hace mucho creé un script para paginar resultados de una consulta a la Db . pero el inconveniente era que cada vez que pasabas de página tenías que hacer una consulta tipo
$query_anuncios = "SELECT Location ,Title l FROM posts WHERE
CatCode='$cat' AND SubCatCode='$subcat $limit,5' ";

Es decir que tenías que definir un rango cada vez , cosa que no estaba del todo mal púes solo buscaba esa cantidad de filas que le indicabas y no todas; despúes de ver una pila de scripts que hacían los mismo , pensé en mejorar el tema realizando una sola consulta; del siguiente modo. (voy a poner los dos archivos que tengo).



//Aquí solo recibimos los resultados iniciales a mostrar y los pasamos a una función
muestra.php
Código:
    <div id="adds">
    	
       <? 
	 if (!isset($_GET['page']) )
		$page=1;
	
	else
		$page=$_GET['page'];
		
	    show_adds( $_GET['cat'],$_GET['subcat'],$page); ?>

           
     </div>
Función

Código:
function show_adds($cat,$subcat,$city,$page) {

//Guardamos la consulta entera en una variable de sesión
if (!$_SESSION['adds'])
$_SESSION['adds']=select_adds($cat,$subcat,$city);

  //numero de anucnios por página
	   	$tamaño_pag=4;
		
		//Calculamos el anuncio primero y último a mostrar
		//Si es la primera vez
		if ($page==1)
			{
			$lastAdd=5;
			$beginAdd=0;
			}
		else
			{	
			$lastAdd=$page+5;
			$beginAdd=$page;
			$forward=$beginAdd-5;
			}

echo "Resultados de $beginAdd <> $lastAdd";
if ($page>1)
echo "<a href='$PHP_SELF?page=$forward'>Atras</a>";
if (count($_SESSION['adds'])>$lastAdd )
echo "-<a href='$PHP_SELF?page=$lastAdd'>Siguiente</a>";

for ($i=$beginAdd;$i<$lastAdd;$i++) {

	if ($_SESSION['adds'][$i][0] != NULL ) { //MOSTRMOS SOLO LOS RESULTADOS SI HAY DATOS
echo "<p><span class='items_city'>Ciudad". $_SESSION['adds'][$i][0]."<br></p>" ;
echo "<p><span class='items_city'>".$_SESSION['adds'][$i][1]."</span><br>" ;
echo "<span class='items_texto'>".nl2br(ltrim(ucfirst($_SESSION['adds'][$i][2]))) ."</span><br>" ;
echo "<br><span class='items_email'>Email:".$_SESSION['adds'][$i][3] ."</span><br></p>" ;
	
	}
}

}
Bueno resumiendo , con solo poner en la página que queramos paginar lo que muestro en mostrar.php podemos paginar cualquier resultado. (logicamente dentro de la función indicar la consulta a vuestra Bd etc etc).

Seguramente para algunos esto era ya obvio pero para muchos creo que les puede servir mi ejemplo púes como he dicho antes casi todos los scripts que hasta ahora he visto hacen la consulta una y otra vez y eso para una bd puede resultar un poco duro cuando hay muchas conexiones simultáneas.

Nota: A cada página que enlace la página donde mostráis los resultados es necesario destruir la sesión , púes si el usuario hace otro tipo de consulta es necesario destruir esta variable de sesión para que se llene otra nueva con los resultados actualizados.
Código:
//Si tenemos cargada una sesión anterior de resultados la eliminamos
if ($_SESSION['adds']) 
			unset ($_SESSION["adds"] );
Un saludo y espero os sirva esto de algo.

Cualquier sugerencia para mejorar esto (que es muy muy mejorable seguro) será muy bien aceptada.
  #2 (permalink)  
Antiguo 19/08/2008, 08:26
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: Paginando con una sola consulta

buenas!!

muchas gracias por el aporte...
me cae de perlas, tengo algunas dudas pero aun no lo eh probado asi que te molestare si no logro hacerlo funcionar (soy novato en php)

un saludo!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #3 (permalink)  
Antiguo 19/08/2008, 09:39
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Respuesta: Paginando con una sola consulta

Cita:
Iniciado por HalconVigia Ver Mensaje
buenas!!

muchas gracias por el aporte...
me cae de perlas, tengo algunas dudas pero aun no lo eh probado asi que te molestare si no logro hacerlo funcionar (soy novato en php)

un saludo!!
Molestame todo lo que quieras , será un placer poder contribuir en estos foros con mi granito de arena. Me gustaría que la gente q entienda de esto entre en el post y comente las ventajas - desventajas de hacer una sola o varias consultas a la hora de paginar.
Un saludo
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 21:06.