Foros del Web » Programando para Internet » PHP »

Paginador para sql server 2000

Estas en el tema de Paginador para sql server 2000 en el foro de PHP en Foros del Web. Hola a todos. Saludos. Hace unos cuantos días que trato de que funcione pero nada, ha sido imposible. Desde hace tiempo buscaba algo como esto, ...
  #1 (permalink)  
Antiguo 04/06/2011, 07:15
 
Fecha de Ingreso: agosto-2005
Mensajes: 152
Antigüedad: 19 años, 4 meses
Puntos: 0
Paginador para sql server 2000

Hola a todos.
Saludos.
Hace unos cuantos días que trato de que funcione pero nada, ha sido imposible.
Desde hace tiempo buscaba algo como esto, lo encontré en este sitio a partir de un código que publicó conte sobre una función para paginar los resultados de una consulta en sql server 2000.
Bueno sin más rodeo aquí les pongo el código:
Código PHP:
<?php
/* **************************************************
****/
/* Funcion paginar
* actual: Pagina actual
* total: Total de registros
* por_pagina: Registros por pagina
* enlace: Texto del enlace
* maxpags: El máximo de páginas a presentar simultáneamente (opcional)
* Devuelve un texto que representa la paginacion
*/

function paginar($actual$total$por_pagina$enlace$maxpags=0) {
$total_paginas ceil($total/$por_pagina);
$anterior $actual 1;
$posterior $actual 1;
$minimo $maxpags max(1$actual-ceil($maxpags/2)): 1;
$maximo $maxpags min($total_paginas$actual+floor($maxpags/2)): $total_paginas;
if (
$actual>1)
$texto "<a href=\"$enlace$anterior\">«</a> ";
else
$texto "<b>«</b> ";
if (
$minimo!=1$texto.= "... ";
for (
$i=$minimo$i<$actual$i++)
$texto .= "<a href=\"$enlace$i\">$i</a> ";
$texto .= "<b>$actual</b> ";
for (
$i=$actual+1$i<=$maximo$i++)
$texto .= "<a href=\"$enlace$i\">$i</a> ";
if (
$maximo!=$total_paginas$texto.= "... ";
if (
$actual<$total_paginas)
$texto .= "<a href=\"$enlace$posterior\">»</a>";
else
$texto .= "<b>»</b>";
return 
$texto;
}
?>

<?php
include("conexion/conexion.php");
mssql_query("SET ANSI_NULLS ON");
mssql_query("SET ANSI_WARNINGS ON");
$pag $HTTP_GET_VARS["pag"];
$municipio $HTTP_GET_VARS["municipio"];
$programa $HTTP_GET_VARS["programa"];

$color='#FFFFCC';
echo 
"<div align='center'><img src='imagenes/repasignacion.png' width='554' height='102'></div>";
echo 
"El municipio seleccionado es: ".$municipio."<br>";
echo 
"El programa seleccionado es: " .$programa."<br>";
 
if(isset(
$HTTP_GET_VARS['municipio']) && $HTTP_GET_VARS['programa'] && $HTTP_GET_VARS['pag']){
// asignamos los valores
// a las variables que usaremos
$municipio $HTTP_GET_VARS['municipio'];
$programa $HTTP_GET_VARS['programa'];
$pag $HTTP_GET_VARS['pag'];
$clausula "WHERE(dbo.Municipios.DMUNI = '$municipio') AND (dbo.Programa.DPROGRAMA = '$programa')";
}else{
// de lo contrario
// el titulo sera general
$titulo "Todos los registros";
}

if (!isset(
$pag)) $pag 1;
if (empty(
$HTTP_GET_VARS['pag'])){
    
// Si no se ha hecho click a ninguna página específica
    // O sea si es la primera vez que se ejecuta el script
        // $pag es la pagina actual-->será por defecto la primera.
    
$pag 1;
 }else{
    
// Si se "pidió" una página específica:
    // La página actual será la que se pidió.
        
$pag $HTTP_GET_VARS['pag'];
 }
$tampag 10
$reg1 = ($pag-1) * $tampag;

$result mssql_query("SELECT Empresas.DEMPRESA, Sector.DSECTOR, Programa.DPROGRAMA, Municipios.DMUNI, Filas444.[Desc] AS Indicador, Mod444.[PLAN MES] AS PlanMes, Mod444.[REAL MES] AS RealMes, Mod444.PORC, Mod444.[PLAN ACUM] AS PlanAcum, Mod444.[REAL ACUM] AS RealAcum, Mod444.[PORC AC] AS PorcAc, Mod444.[REAL AÑO ANT] AS RealAA, Mod444.[PLAN AÑO ACT] AS PlanAA, Mod444.REL FROM Sector RIGHT OUTER JOIN Mod444 ON Sector.Sector = Mod444.Sector LEFT OUTER JOIN Filas444 ON Mod444.FILA = Filas444.Filas LEFT OUTER JOIN Programa ON Mod444.Programa = Programa.PROGRAMA LEFT OUTER JOIN Municipios ON Mod444.MUNI = Municipios.MUNI LEFT OUTER JOIN Empresas ON Mod444.EMPRESA = Empresas.EMPRESA WHERE (dbo.Municipios.DMUNI = '$municipio') AND (dbo.Programa.DPROGRAMA = '$programa') ORDER BY Mod444.EMPRESA, Mod444.SECTOR, Mod444.PROGRAMA, Mod444.MUNI, Mod444.FILA");

$total mssql_num_rows($result)."<br>";
echo 
"El número de registros es: ".$total;
if (
mssql_num_rows($result)){
echo 
"Fecha Reporte :".date("m/d/y");
echo 
"<br>";
echo 
"<table> \n";
echo 
"<tr>
 <th>Indicador</th>
 <th>Plan del Mes</th>
 <th>Real del Mes</th>
 <th>Cumplimiento</th>
 <th>Plan Acumulado</th>
 <th>Real Acumulado</th>
 <th>Porciento</th>
 <th>Real Año Anterior</th>
 <th>Plan Año Actual</th>
 <th>Relación</th></tr>\n"
;
for (
$i=$reg1$i<min($reg1+$tampag$total); $i++) {
mssql_data_seek($result$i);
$row mssql_fetch_array($result);
echo 
"<tr><td>".$row["Indicador"]."</td>".
"<td>".$row["PlanMes"]."</td>".
"<td>".$row["RealMes"]."</td>".
"<td>".$row["PORC"]."</td>".
"<td>".$row["PlanAcum"]."</td>".
"<td>".$row["RealAcum"].
"<td>".$row["PorcAc"]."</td>".
"<td>".$row["RealAA"]."</td>".
"<td>".$row["PlanAA"]."</td>".
"<td>".$row["REL"]."</td>".
"</td></tr> \n";
}
echo 
"</table> \n";
echo 
paginar($pag$total$tampag"boletin444.php?pag=" $enlace "&municipio=" $row['DMUNI'] . "&programa=" $row['DPROGRAMA']);  
}  
else{
echo 
"¡ No se ha encontrado ningún registro !";}
echo 
"<div align='center'><a href ='formulario.htm'>Volver al Menu </a></div>";
mssql_close($conection) ;
?>
El tema es el siguiente, este paginador funciona bien cuando mientras no esté presente la clausula where, cuando la pongo solo sale bien la primera vez, es decir tengo un formulario desde donde paso el municipio el programa.
Cuando le doy al botón aceptar del mismo se muestran los registros que cumplen con ese criterio de 10 en 10 según el valor de la variable que define la cantidad de registros por página. Ahora bien cuando le doy a cualquiera de los otros enlaces (números de página) la consulta es como si se perdiera, no sale nada, me muestra el mensaje que dice que no se ha encontrado ningún registro, a pesar de poner el nombre de los parámetros, es decir el nombre del municipio y del programa seleccionado, pero al lado del programa seleccionado pone el no. de la página.
No sé a que se debe esto, si es una llamada incorrecta a la función, o estoy pasando el la variable de la página mal, en fin no sé.
Muchas Gracias.

Etiquetas: 2000, paginador, server, sql
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 05:39.