Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Paginacion PHP y MSSQL SP

Estas en el tema de Paginacion PHP y MSSQL SP en el foro de SQL Server en Foros del Web. Hola amigos, este es mi seguno tema, espero ke este no me lo redirijan..jejeje bueno el caso es el siguiente, me tope con un problema ...
  #1 (permalink)  
Antiguo 12/07/2010, 13:38
Avatar de Kmilolpz  
Fecha de Ingreso: julio-2010
Mensajes: 15
Antigüedad: 14 años, 4 meses
Puntos: 0
Sonrisa Paginacion PHP y MSSQL SP

Hola amigos, este es mi seguno tema, espero ke este no me lo redirijan..jejeje

bueno el caso es el siguiente, me tope con un problema al diseñar una pagina web, en una consulta a mi bd me regresaba un numero de registros muy grande, por lo cual la mejor opcion es paginar, pero el problema fueron varios:

El primero es que mi base de datos esta en MS SQL Server, y los paginadores que encontre y a los que me mandaban desde ester foro estaban orientados a MySQL

En segundo lugar me dije, ps modificamos el paginador de mysql para usarlo con mssql, pero estos paginadores se basaban en el uso de sentencias Select y en mi caso uso procedimientos almacenados por lo cual descarte esa opcion

Y en tercer lugar desconosco mucho sobre procedimientos almacenados y ademas no puedo modificar el que estaba usando(por diversos motivos).

Asi que la opcion ke me kedaba o la opcion por la que opte fue la manipulacion del mssql_query. asi que cree una funcion la cual manipula, muy precariamente a este resultado.

bueno, basicamente funciona asi

el metodo recibe dos parametros, el segundo es de menor importcia, lo uso para definir a que if entrara el programa, pero el primer parametro es el numero de pagina actual.

function paginar($pagina,$reporte)

luego dentro del metodo, declaro algunas variables

$porPagina=0; // es una variable que me ayuda a definir cuando se completo el numero de registros por pagina (por fefault 20)
$desde=($pagina*20)-20; // para saber desde que registro empesare a desplegar
$link=conectarse(); // para conexion


aqui es donde se pone un poco inutil mi funcion, ya que ejecuta un query sobre la base de datos

$sql="exec spr_AuxiliarClientes ".$_SESSION['sucursal'].",'".$_SESSION['cliente']."',0,0,'".$_SESSION['del']."','".$_SESSION['al']."','n','sa',0,0,0";
$_SESSION['query']=mssql_query($sql);


despues, dependiendo de las variables anteriores, ejecuto un for para pocicionarme en el registro en el cual debe de iniciar a mostrar los registros para la pagina actual

for ($i=0;$i<$desde;$i++)
$row=mssql_fetch_row($_SESSION['query']);


simplemente el for va ignorando los registros.

despues de esto el siguiente valor que me regrese la variable query sera el primer valor a mostrar en mi pagina y es cuando ya empieso a mostrar los valores

while(($row=mssql_fetch_row($_SESSION['query'])) && $porPagina<=19)
{
/////////
$porPagina++;
}


y simplemente mando a llamar a la funcion desde donde quiero que se visualicen las paginas con

paginar($pagina,'auxiliar clientes');

como ven, es algo infuncional la funcion, debido a que cada que mande a llamar al metodo hace el query y si se esta paginando es obviamente por que son demaciados registros, por lo cual es una carga grande para el servidor

pero me funciona, y ps si alguien tiene alguna idea son bienvenidas

la idea original que yo tenia(y se puede ver el em metodo) era guardar el resultado del query en una variable global, y evitarme el estar ejecutando el query

aqui el codigo completo

Código:
function paginar($pagina,$reporte)
{
	$porPagina=0; // es una variable que me ayuda a definir cuando se completo el numero de registros por pagina (por fefault 20)
	$desde=($pagina*20)-20; // para saber desde que registro empesare a desplegar
	$link=conectarse(); // para conexion
	
	if ($reporte=='auxiliar clientes')
	{
		$sql="exec spr_AuxiliarClientes ".$_SESSION['sucursal'].",'".$_SESSION['cliente']."',0,0,'".$_SESSION['del']."','".$_SESSION['al']."','n','sa',0,0,0";
		$_SESSION['query']=mssql_query($sql);
	
		for ($i=0;$i<$desde;$i++)
			$row=mssql_fetch_row($_SESSION['query']);
			
		while(($row=mssql_fetch_row($_SESSION['query'])) && $porPagina<=19)
		{
			//Manupulacion de los registros
			$porPagina++;
		}
	}
}
bueno esta es una idea que a mi me funciono, si aguien tiene alguna idea de mejorarlo adelante.

PD: espero haverme explicado bien :p, si no, aqui estoy para cualquier aclaracion

Etiquetas: mssql, paginacion, stored-procedure
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 12:01.