Foros del Web » Programando para Internet » PHP »

Paginar resultados sin LIMIT odbc-access en php

Estas en el tema de Paginar resultados sin LIMIT odbc-access en php en el foro de PHP en Foros del Web. Por si alguien le sirve: (a mi me toco guglear mucho) Lo basico es: $tamPag = 30; $regUltimo = ($vPag-1) * $tamPag; .... odbc_fetch_row( $rs,$regUltimo ...
  #1 (permalink)  
Antiguo 25/03/2011, 05:46
 
Fecha de Ingreso: febrero-2011
Mensajes: 7
Antigüedad: 13 años, 9 meses
Puntos: 0
Paginar resultados sin LIMIT odbc-access en php

Por si alguien le sirve: (a mi me toco guglear mucho)
Lo basico es:
$tamPag = 30;
$regUltimo = ($vPag-1) * $tamPag;
....
odbc_fetch_row( $rs,$regUltimo );
Necesito hacer 2 sql ($sql = "SELECT count(*) FROM Usuarios";) por que el odbc de access siempre responde -1 a odbc_num_rows().

Para mandar los registros a pantalla lo sacos en una <table> que con cuatro líneas me sirve para cualquier sql.
La function paginar() no es mía, pero creo que está muy bien y le he añadido algún detallito.
Código PHP:
<HTML>
<HEAD>
<TITLE>Detalle de Usuarios</TITLE>
<LINK rel="stylesheet" href="estilos.css" type="text/css">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=windows-1252">
</HEAD>
<TITLE>Detalle de Usuarios</TITLE>
<BODY>
<CENTER>
<table ><tr><td ><H1> Detalle de Usuarios&nbsp;&nbsp;&nbsp;&nbsp;</H1>
           <td> <a href="javascript: history.back();"> Pág. Anterior</a>&nbsp;&nbsp;&nbsp;&nbsp;</td>
           <td> <a href="BuscarEquipo.php">Nueva Búsqueda</a></td>
</tr></table>
<?php
$vPag
=$_REQUEST["pPag"];
if (empty(
$vPag)) $vPag 1// Por defecto, pagina 1
$tamPag 30;
$regUltimo = ($vPag-1) * $tamPag;

// ***Inicio Conexion Base de Datos
$db getcwd() . "\\Datos\\RegUsers.mdb"// Direccion de la bd
$cadenaconex "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=$db"// Se define la cadena de conexión
$conex = @odbc_connect$cadenaconex'''' ); // Se realiza la conexón con los datos anteriores
if (!$conex) { exit( "<br><br>Error al conectar: " $db);}
// ***Finalizo Conexion Base de Datos
// -----Para cualquier  consulta sacarla en tabla html
$sql "SELECT count(*) as Contador FROM Usuarios";
//echo "Hora antes del count: ".date('d/m/Y g:i:s:')."*". microtime()."*<br>";
$rs = @odbc_exec$conex$sql );
if ( !
$rs ) { exit( "Error en la consulta SQL" );}
if ( @
odbc_fetch_into($rs$dato)) {  //$dato=odbc_fetch_array($rs); $numReg = trim( $dato['Contador'] );
    
$totReg trim$dato[0] );
    
//$totReg =  $dato[0] ;
} else {
    exit( 
"Error en el volcado de datos" );
}
$sql "SELECT * FROM Usuarios";
$rs = @odbc_exec$conex$sql );
if ( !
$rs ) { exit( "Error en la consulta SQL" );}
//while ( odbc_fetch_row($rs) ) { $resultado=odbc_result($rs,"Usuario")."-".odbc_result($rs,"Nombre"); echo $resultado."<BR>"; }
$numCampos odbc_num_fields($rs);
print 
"<table border='1' width='60%'>";
// Cabedcera de tabla
    
for ($i=1$i <= $numCampos$i++){
         
printf("<th bgcolor='silver'>%s</th>"odbc_field_name$rs,$i)); }
// Datos de la tabla
    
$cuentaReg=0;
    
odbc_fetch_row$rs,$regUltimo );
    while( 
odbc_fetch_row$rs ) && $cuentaReg<$tamPag){
        
$cuentaReg++;
        echo 
"<tr>";
        for(
$i=1$i <= $numCampos$i++){
            
printf("<td nowrap>%s</td>"odbc_result$rs$i ) == "" "-" odbc_result$rs$i ));}
        echo 
"</tr>\n";
    }
echo 
"</table>";
odbc_close$conex ); // Se cierra la conexión
echo paginar($vPag,$totReg,$tamPag,"paginarUsuarios.php?pPag=",10);
exit();
///******************** FIN
function paginar($actual$total$por_pagina$enlace$maxenlaces=0) {
/******************************************************/
/* Funcion paginar
 * actual:          Pagina actual
 * total:           Total de registros
 * por_pagina:      Registros por pagina
 * enlace:          Texto del enlace
 * maxenlaces:      El máximo de enlaces a presentar simultáneamente (opcional)
 * Devuelve un texto que representa la paginacion
 */
  
$total_paginas ceil($total/$por_pagina);
  
$anterior $actual 1;
  
$posterior $actual 1;
  
$minimo $maxenlaces max(1min($actual-ceil($maxenlaces/2),$total_paginas-$maxenlaces)): 1;
  
$maximo $maxenlaces min($total_paginasmax($actual+floor($maxenlaces/2),$maxenlaces)): $total_paginas;
  if (
$actual>1)
    
$texto "<a href=\"$enlace$anterior\">&laquo;</a> ";
  else
    
$texto "<b>&laquo;</b> ";
  
//if ($minimo!=1) $texto.= "... ";
  
if ($minimo!=1$texto "<a href=\"$enlace\"1>|&laquo;</a> ".$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\">&raquo; </a>";
  else
    
$texto .= "<b>&raquo;</b>";
  if (
$maximo!=$total_paginas$texto.= "<a href=\"$enlace$total_paginas\">&raquo;|</a> ";
  
$texto.="<br> Mostrando registros del ".(($actual*$por_pagina)-$por_pagina+1)." al ";
  
$texto.=($actual*$por_pagina)>$total?$total:($actual*$por_pagina);
  
$texto.= " (de un total de $total). Página $actual de $total_paginas.";
  return 
$texto;
}
?>
</CENTER>
</BODY>
</HTML>

Última edición por Domsec; 25/03/2011 a las 07:25
  #2 (permalink)  
Antiguo 25/03/2011, 10:06
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Paginar resultados sin LIMIT odbc-access en php

¿y porque no mejor utilizar un verdadero SDBMS?: access no posee servidor, es muy ineficiente y limitado en cumplimiento de estándares, lo mejor es utilizar verdaderas bases de datos, entre ellas: MySQL, Postgres, Oracle, MsSQL Server y otras.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 25/03/2011, 17:52
 
Fecha de Ingreso: febrero-2011
Mensajes: 7
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Paginar resultados sin LIMIT odbc-access en php

Totalmente de acuerdo.
Pero cuando trabajas para alguien debes hacer lo que te pidan con las herramientas que te autorizan.
Con una BD de verdad se resolverían muchos problemas de forma más eficiente.
Saludos.
  #4 (permalink)  
Antiguo 22/04/2015, 15:23
 
Fecha de Ingreso: octubre-2005
Mensajes: 129
Antigüedad: 19 años, 1 mes
Puntos: 0
Respuesta: Paginar resultados sin LIMIT odbc-access en php

como puedo pagina con parametros en sql
$sql=select * from tabla where campo1like '%campo1%'
__________________
Pablo Baez

Etiquetas: access, limit, odbc, paginar, resultados
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 11:25.