<?
#: unset internal vars
#: if (isset ()){unset ();}
if (isset ($ERROR)){unset ($ERROR);}
if (isset ($NumPaginas)){unset ($NumPaginas);}
if (isset ($Tdbsearch)){unset ($Tdbsearch);}
if (isset ($MuestraPorPagina)){unset ($MuestraPorPagina);}
if (isset ($NumEncontrados)){unset ($NumEncontrados);}
if (isset ($ENCONTRADO)){unset ($ENCONTRADO);}
if (isset ($Paginas)){unset ($Paginas);}
if (isset ($PaginaActual)){unset ($PaginaActual);}
#: include class file.
include ('dbsearchclass.php');
#: definimos variables para la clase
#: Default values for database hostname and server port are: localhost ans 3306
$DatabaseName = 'dbsearchtest';
$DatabaseUser = 'dbsearchuser';
$DatabasePass = 'dbsearchuserpass';
$DatabaseHost = 'localhost';
$DatabasePort = 3306;
$Pattern = 'ma';
$NoBuscarEnTablas = array ('');
#: definimos tabla de errores con sus codigos
$CODEERROR = array (
"1" => 'ERROR ESTABLECIENDO CONEXION',
"2" => 'ERROR FIJANDO PATRON'
);
#: definimos variables para el paginado
$MuestraPorPagina = 5;
#: instanciamos objeto, establecemos conexion y fijamos el patron de busqueda
$Tdbsearch = new dbsearch ($DatabaseName,$DatabaseUser,$DatabasePass,$DatabaseHost,$DatabasePort);
if(!$Tdbsearch->OpenConnection()){$ERROR=1;}
if(!isset ($ERROR)){if(!$Tdbsearch->SetPattern ($Pattern)){$ERROR=2;}}
#: Realizamos busqueda sin excluyendo la tabla 'nosearch' si antes no ha ocurrido un error.
#: Buscamos cualquier ocurrencia con el patron sin respetar mayusculas/minusculas
if(!isset ($ERROR)){$Tdbsearch->FindInDb (0,0,$NoBuscarEnTablas);}
#: Si no han habido errores recogemos el numero de registros enconrados.
if(!isset ($ERROR)){$NumEncontrados = $Tdbsearch->NumResult();}
#: Si no han habido errores y por lo menos hay un registro preparamos paginado
if((!isset ($ERROR))&&($NumEncontrados>=1)){
#: Fijamos el valor de ENCONTRADO a 1
$ENCONTRADO = 1;
#: Recogemos Los Ids de los registros encontrados junto con el nombre de su tabla
$IdsEncontrados = $Tdbsearch->IdFindPerTable('');
#: Preparamos matriz con los ids y el nombre de la tabla a la que pertenece
$ListaTablaId = array();
while (list ($NombreTabla, $ArrayIds) = each ($IdsEncontrados)){
while (list ($null,$IdDelRegistro) = each ($ArrayIds)){
array_push ($ListaTablaId, array($NombreTabla,$IdDelRegistro));
}
}
#: Calculamos Numero de paginas.
$NumPaginas = ceil ($NumEncontrados/$MuestraPorPagina);
#: Si $inicio no existe o se da el caso en el que se ha modificado su valor a mano:
#: - Es mayor que lo que mandaria la ultima pagina.
#: - Es menor de 1.
#: - No es un numero.
#: , fijamos su valor en 1, que seria como estar en la pagina 1.
if (
(!isset ($inicio))||
($inicio>($NumEncontrados-1))||
($inicio<1)||
(!eregi ("^[0-9]{1,}$",$inicio))
){
$inicio = 0;
}
#: una vez fijado $inicio, calculamos en que pagina nos encontramos
$Paginas = array();
for ($c=0;$c!=$NumPaginas;$c++){
$Desde=$c*$MuestraPorPagina;
$Hasta=$Desde+$MuestraPorPagina-1;
if ($Hasta>$NumEncontrados){$Hasta=$NumEncontrados-1;}
if ($Hasta==$Desde){$Tiene=1;}
if ($Hasta==$NumEncontrados){$Hasta=$Hasta-1;}
$Paginas{$c+1}=$Hasta;
}
while (list ($Pagina,$Hasta) = each ($Paginas)){
if ($inicio<=$Hasta){ $PaginaActual=$Pagina;break;}
}
reset ($Paginas);
$Desde = ($Paginas{$PaginaActual-1})+1;
if ($Desde==1){$Desde=0;}
}
?>
<html>
<head>
<title>Test de como paginar el resultado</title>
</head>
<body>
<table align="center" border="0" width="600" cellpadding="0" cellspacing="0">
<tr bgcolor="9999CC">
<td colspan="2"><b>Como paginar los resultados</b></td>
<td align="right"><b>oO0oOo xp coding style oO0oOo |[[ mArKitos 2oo1 ]]|</b></td>
</tr>
<tr><td bgcolor="#CCCCCC" colspan="3"> </td></tr>
<tr bgcolor="#CCCCCC">
<td bgcolor="#CCCCFF"><b>Database Name</b></td>
<td> </td>
<td bgcolor="#CCCCFF"><b><?echo $DatabaseName?></b></td>
</tr>
<tr bgcolor="#CCCCCC">
<td bgcolor="#CCCCFF"><b>Database Username</b></td>
<td> </td>
<td bgcolor="#CCCCFF"><b><?echo $DatabaseUser?></b></td>
</tr>
<tr bgcolor="#CCCCCC">
<td bgcolor="#CCCCFF"><b>Database Password</b></td>
<td> </td>
<td bgcolor="#CCCCFF"><b><?echo $DatabasePass?></b></td>
</tr>
<tr bgcolor="#CCCCCC">
<td bgcolor="#CCCCFF"><b>Database Hostname</b></td>
<td> </td>
<td bgcolor="#CCCCFF"><b><?echo $DatabaseHost?></b></td>
</tr>
<tr bgcolor="#CCCCCC">
<td bgcolor="#CCCCFF"><b>Database Server Port</b></td>
<td> </td>
<td bgcolor="#CCCCFF"><b><?echo $DatabasePort?></b></td>
</tr>
<tr><td bgcolor="#CCCCCC" colspan="3"> </td></tr>
<tr bgcolor="#CCCCCC">
<td bgcolor="#CCCCFF"><b>Initial Pattern</b></td>
<td> </td>
<td bgcolor="#CCCCFF"><b><?echo $Pattern?></b></td>
</tr>
<tr><td bgcolor="#CCCCCC" colspan="3"> </td></tr>
<tr><td bgcolor="#9999CC" colspan="3"> </td></tr>
<?
if (isset ($ERROR)){?>
<tr><td bgcolor="#CCCCCC" colspan="3"> </td></tr>
<tr><td bgcolor="#9999CC" colspan="3"><?echo $CODEERROR{$ERROR}?></td></tr>
<?}?>
</table>
<br><br>
<table align="center" border="0" width="600" cellpadding="0" cellspacing="0">
<tr bgcolor="9999CC">
<td colspan="2"><b>TOTAL ENCONTRADOS:</b></td>
<td align="right"><b><?echo $NumEncontrados;?></b></td>
</tr>
<tr><td bgcolor="#CCCCCC" colspan="3"> </td></tr>
</table>
<?
#: Mostramos Resultado de la pagina deseada.
#: Los datos se hallan en la matriz $ListaTablaId
#: Mostramos del elemento $Desde hasta el $Paginas{$PaginaActual}
if ($ENCONTRADO){
$TotalAMostrar = $Paginas{$PaginaActual}-$Paginas{$PaginaActual-1};
if ($NumPaginas==1){$TotalAMostrar=$NumEncontrados;}
for ($Contador=$Desde;$Contador<=$Paginas{$PaginaActual};$Contador++){
list ($PerteneceA, $ID) = $ListaTablaId[$Contador];
?>
<table align="center" border="0" width="600" cellpadding="0" cellspacing="0">
<tr bgcolor="9999CC">
<td colspan="2"><b>seccion <?echo $PerteneceA?></b></td>
<td align="right"><b><?echo $ID;?></b></td>
</tr>
</table>
<?
}
}
?>
<!-- Mostramos paginador si hay mas de 1 pagina !-->
<?
if ($NumPaginas==1){?>
<table align="center" border="0" width="600" cellpadding="0" cellspacing="0">
<tr><td bgcolor="#CCCCCC" colspan="3"> </td></tr>
<tr bgcolor="#9999CC">
<td colspan="3"><b>PAGINA 1</b></td>
</tr>
</table>
<?} else if ($NumPaginas>1){?>
<table align="center" border="0" width="600" cellpadding="0" cellspacing="0">
<tr><td bgcolor="#CCCCCC" colspan="3"> </td></tr>
<tr bgcolor="#9999CC">
<td colspan="2"><b>PAGINA <?echo $PaginaActual." de ".$NumPaginas;?></b></td>
<td align="right"><b>
<?
#: Mostramos paginas
for ($Contador = 1; $Contador<=$NumPaginas; $Contador++){
#: Fijamos el valor de inicio. Si la pagina es 1 su valor es 1.
#: Si es mayor de 1 sera ($Contador-1) * $MuestraPorPagina.
$ValorInicio = 0;
if ($Contador>1){ $ValorInicio = ($Contador-1)* $MuestraPorPagina; }
if ($Contador==$PaginaActual){ ?><font color="red"><b><?echo $Contador?></b></font><?; continue;}
?><a href="<?echo $PHP_SELF?>?inicio=<?echo $ValorInicio?>" style="text-decoration:none"><?echo " ".$Contador." ";?></a><?
}
?>
</b></td></tr>
<tr bgcolor="#9999CC">
<td colspan="3" align="right"><b>
<?
$ValorInicio=0;
#: Mostramos flechas de avance o retroceso en las paginas
#: Para mostrar la de retroceso ha de cumplirse:
#: - $PaginaActual > 1
if ($PaginaActual>1){
$ValorInicio = ($Paginas{$PaginaActual-1}-$MuestraPorPagina)+1;
?><a href="<?echo $PHP_SELF?>?inicio=<?echo $ValorInicio?>" style="text-decoration:none"><< anterior</a><?
}
#: Para mostrar la de avance ha de cumplirse:
#: - $PaginaActual < Total De Paginas
$ValorInicio = $Paginas{$PaginaActual}+1;
if ($PaginaActual<$NumPaginas){
?> <a href="<?echo $PHP_SELF?>?inicio=<?echo $ValorInicio?>" style="text-decoration:none">siguiente >></a><?
}?>
</td></tr>
<tr><td bgcolor="#CCCCCC" colspan="3"> </td></tr>
</table>
<?} else {}?>
<!-- Fin del paginador!-->
</body>
</html>
|