Paginacion usando ODBC y MSSQL

CustomX
21 de Enero del 2003
Hey que tal... estoy en un grandisimo atolladero... dada la naturaleza del sistema en el que estoy trabajando, a una de las paginas, debo insertarle un metodo de paginacion... pero por mas que he tratado, no he logrado dar la solucion al problemilla este, ya que estoy trabajando con MSSQL y Funciones ODBC.
A ver si alguien tendria la grandisima amabilidad de darme alguna idea..

Muchisimas gracias de antemano..


Attm.

CustomX - CCS Vzla

chuty
21 de Enero del 2003
te tengo una mala noticia para dar con odbc no vas apoder paginar ya que tendrias ke usar las funciones de msql_data_seek() y msql_fetch_array(), pero no desesperes leete estas dos funciones y luego prueba conectandote de esta manera

/* 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;
}


esta la llamas desde el programa aqui va un ejemplo


<?php



session_start();
include("conexionbd.php");
$myconn = conectarse();
$color='#FFFFCC';
// echo "<div align='center'><img src='imagenes/repasignacion.png' width='554' height='102'></div>";

if (!isset($pag)) $pag = 1; // Por defecto, pagina 1
$tampag = 2;
$reg1 = ($pag-1) * $tampag;
$result = mssql_query("SELECT PROYECTOS.Reg_ID, ASIGNACION_PRESUPUESTARIA.Asignacion_codigo, PROYECTOS.Pry_ID, PROYECTOS.Sub_sec_ID,PROYECTOS.Com_id, PROYECTOS.Pry_nom, PROYECTOS.Pry_financ, PROYECTOS.Pry_monto, PROYECTOS.Pry_FNDR, PROYECTOS.Pry_monto_RS, PROYECTOS.Pry_cos_tot, PROYECTOS.Pry_creacion
FROM ASIGNACION_PRESUPUESTARIA INNER JOIN PROYECTOS ON ASIGNACION_PRESUPUESTARIA.Reg_ID = PROYECTOS.Reg_ID AND ASIGNACION_PRESUPUESTARIA.Codigo = PROYECTOS.Pry_ID
WHERE (ASIGNACION_PRESUPUESTARIA.Asignacion_marca = 1) AND (ASIGNACION_PRESUPUESTARIA.Reg_ID = '$region') AND (PROYECTOS.Reg_ID = '$region')");
$total = mssql_num_rows($result);
if (mssql_num_rows($result)){
echo "Fecha Reporte :".date("m/d/y");
echo "<br>";
echo "<table border = '1'> n";
echo "<tr>
<td align=center bgcolor='$color'>Region</b></td>
<td align=center bgcolor='$color'>Nº Asignacion</b></td>
<td align=center bgcolor='$color'>Codigo Proyectos</b></td>
<td align=center bgcolor='$color'>Codigo Subsector</b></td>
<td align=center bgcolor='$color'>Codigo Comuna</b></td>
<td align=center bgcolor='$color'>Nombre Proyecto</b></td>
<td align=center bgcolor='$color'>Financiamiento</b></td>
<td align=center bgcolor='$color'>Monto Asignado</b></td>
<td align=center bgcolor='$color'>Monto FNDR</b></td>
<td align=center bgcolor='$color'>Monto RS</b></td>
<td align=center bgcolor='$color'>Costo Total</b></td>
<td align=center bgcolor='$color'>Año Creacion</b></td></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["Reg_ID"]."</td>".
"<td>".$row["Asignacion_codigo"]."</td>".
"<td>".$row["Pry_ID"]."</td>".
"<td>".$row["Sub_sec_ID"]."</td>".
"<td>".$row["Com_id"]."</td>".
"<td>".$row["Pry_nom"].

"<td>".$row["Pry_financ"]."</td>".
"<td>".$row["Pry_monto"]."</td>".
"<td>".$row["Pry_FNDR"]."</td>".
"<td>".$row["Pry_monto_RS"]."</td>".
"<td>".$row["Pry_cos_tot"].
"<td>".$row["Pry_creacion"].

"</td></tr> n";
}
echo "</table> n";
echo paginar($pag, $total, $tampag, "cliente.php?pag=");
}
else{
echo "¡ No se ha encontrado ningún registro !";}
echo "<div align='center'><a href ='reporasignacion.php'>Volver al Menu </a></div>";
mssql_close($myconn) ;
?>
este codigo la persona que me lo paso le funciona perfectamente pero yo todabia estoy intentando realizar el query ya que me da error.
igualmente te estoy enviando un mail. saludos