Foros del Web » Programando para Internet » PHP »

Como paginar busqueda LDAP (sizelimit)

Estas en el tema de Como paginar busqueda LDAP (sizelimit) en el foro de PHP en Foros del Web. Hola, estoy haciendo unas búsquedas en LDAP pero el sizelimit lo tienen puesto en 100 , no soy el administrador del sistema y entonces hay ...
  #1 (permalink)  
Antiguo 06/07/2010, 04:06
Avatar de AbdelioR  
Fecha de Ingreso: septiembre-2006
Ubicación: Tarragona
Mensajes: 926
Antigüedad: 17 años, 7 meses
Puntos: 8
Como paginar busqueda LDAP (sizelimit)

Hola,

estoy haciendo unas búsquedas en LDAP pero el sizelimit lo tienen puesto en 100, no soy el administrador del sistema y entonces hay resultados que no me son devueltos. He leído que hay una forma de devolver todos los registros que es paginando la búsqueda pero no me hago la idea de como hacerlo.

¿Álguien sabe como solventar este problema?

Gracias.
  #2 (permalink)  
Antiguo 06/07/2010, 10:03
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Como paginar busqueda LDAP (sizelimit)

Así mismo te recomiendo que busques en internet, cómo paginar php
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 07/07/2010, 07:18
Avatar de AbdelioR  
Fecha de Ingreso: septiembre-2006
Ubicación: Tarragona
Mensajes: 926
Antigüedad: 17 años, 7 meses
Puntos: 8
Respuesta: Como paginar busqueda LDAP (sizelimit)

Creo que no me has entendido, una páginacion en php la se hacer, pero no una con ldap donde no se como acceder al total de resultados debido al sizelimit.
  #4 (permalink)  
Antiguo 09/07/2012, 19:51
 
Fecha de Ingreso: julio-2012
Mensajes: 1
Antigüedad: 11 años, 9 meses
Puntos: 0
De acuerdo Respuesta: Como paginar busqueda LDAP (sizelimit)

Man yo desarrolle una clase que pagina los resultados de una consulta LDAP mediante intervalos, casi no hay documentación para la paginacion de resultados de consultas LDAP, por defecto muestra 20 registros por pagina, (seria bueno hacer que el usuario elija cuantos registros mostrar), debe definir el número de páginas dependiendo del número de registros devueltos por el array ldap_get_entries con la funcion ceil($numeroderegistros / registrosporpagina), luego debe recorrer los registros mediante intervalos con los botones Pagina anterior y Pagina siguiente, le envio el código:

Debe cambiar obviamente los valores: Servidor LDAP, usuario, contraseña, y DN.


(clase)
<?php

class LDAP{

public $servercon;
private $ldapbind, $ldapsearch, $filtro, $entradas, $tamarray, $arraynombre,
$arrayestado, $arraycorreo, $arraydoc, $arrayciud, $arraymemberof, $arraydescr,
$rxp, $npag, $pagactual, $in, $lim, $estado, $attrib;

public function __construct() {
$this->servercon = ldap_connect("Direccion IP Servidor LDAP");
$this->ldapbind = ldap_bind($this->servercon, "[email protected]", 'Su contraseña') or
die("Autenticación fallida ó la cuenta está deshabilitada");
$this->filtro = "(&(objectCategory=person)(objectClass=user))" ;
$this->arraynombre = array();
$this->arrayestado = array();
$this->arraycorreo = array();
$this->arraydoc = array();
$this->arraydescr = array();
$this->arrayciud = array();
$this->arraymemberof = array();
$this->arraydescr = array();
}

public function search() {
$this->ldapsearch = ldap_search($this->servercon, "OU=suempresa,DC=sudominio,DC=com", $this->filtro);
$this->entradas = ldap_get_entries($this->servercon, $this->ldapsearch);

if ($this->entradas == 0) {
exit("<h1>No hay registros para mostrar</h1>");
}

foreach ($this->entradas as $val) {
if ($val['name'][0] != "") {
$this->arraynombre[] = $val['name'][0];
$this->arrayestado[] = $val['useraccountcontrol'][0];
$this->arraycorreo[] = $val['mail'][0];
$this->arraydoc[] = $val['postalcode'][0];
$this->arrayciud[] = $val['l'][0];
$this->arraymemberof[] = $val['memberof'][0];
}
}
$this->tamarray = count($this->arraynombre);
}

private function setAtributos($code) {
switch ($code){
case 514:
$this->estado = "<img src=\"imagenes/deshabilitado.png\" title=\"Deshabilitado\">";
$this->attrib = "NORMAL_ACCOUNT";
break;
case 546:
$this->estado = "<img src=\"imagenes/deshabilitado.png\" title=\"Deshabilitado\">";
$this->attrib = "PASSWD_NOTREQD | NORMAL_ACCOUNT";
break;
case 66050:
$this->estado = "<img src=\"imagenes/deshabilitado.png\" title=\"Deshabilitado\">";
$this->attrib = "NORMAL_ACCOUNT | DONT_EXPIRE_PASSWD";
break;
case 66082:
$this->estado = "<img src=\"imagenes/deshabilitado.png\" title=\"Deshabilitado\">";
$this->attrib = "PASSWD_NOTREQD | NORMAL_ACCOUNT | DONT_EXPIRE_PASSWD";
break;
case 512:
$this->estado = "<img src=\"imagenes/habilitado.png\" title=\"Habilitado\">";
$this->attrib = "NORMAL_ACCOUNT";
break;
case 544:
$this->estado = "<img src=\"imagenes/habilitado.png\" title=\"Habilitado\">";
$this->attrib = "PASSWD_NOTREQD | NORMAL_ACCOUNT";
break;
case 66048:
$this->estado = "<img src=\"imagenes/habilitado.png\" title=\"Habilitado\">";
$this->attrib = "DONT_EXPIRE_PASSWD | NORMAL_ACCOUNT";
break;
case 66080:
$this->estado = "<img src=\"imagenes/habilitado.png\" title=\"Habilitado\">";
$this->attrib = "PASSWD_NOTREQD | NORMAL_ACCOUNT | DONT_EXPIRE_PASSWD";
break;
default:
$this->estado = "NULL";
$this->attrib = "NULL";
$this->imagen = "NULL";
break;
}
}

private function getAttrib(){
return $this->attrib;
}

private function getEstado(){
return $this->estado;
}

public function paginar($nreg, $paginactual, $in, $lim) {

$this->pagactual = $paginactual;
$this->in = $in;
$this->lim = $lim;

if ($nreg > $this->tamarray)
$this->rxp = $this->tamarray;
else
$this->rxp = $nreg;
$this->npag = ceil($this->tamarray / $this->rxp);

echo "<div align=\"center\" class=\"navegacion\">\n";
if ($this->pagactual > 1) {
echo "<button onclick=\"location.href='ldap.php?regxpag=$this->rxp&pag=" . ($this->pagactual - 1) . "&in=" . ($this->in - $this->rxp) . "&lim=" . ($this->lim - $this->rxp) . "'\">&nbsp;&nbsp;<&nbsp;&nbsp;</button>\n";
} else {
echo "<button disabled=\"disabled\">&nbsp;&nbsp;<&nbsp;&nbsp;</button>\n";
}
echo "&nbsp;&nbsp;&nbsp;Pagina $this->pagactual de $this->npag&nbsp;&nbsp;&nbsp;\n";
if ($this->pagactual < $this->npag) {
echo "<button onclick=\"location.href='ldap.php?regxpag=$this->rxp&pag=" . ($this->pagactual + 1) . "&in=" . ($this->in + $this->rxp) . "&lim=" . ($this->lim + $this->rxp) . "'\">&nbsp;&nbsp;>&nbsp;&nbsp;</button>\n";
} else {
echo "<button disabled=\"disabled\">&nbsp;&nbsp;>&nbsp;&nbsp;</button>\n";
}
echo "</div>\n";
echo "<br>\n";

echo "<table width=\"100%\" align=\"center\" border=\"0\">\n";
echo " <tr class=\"nombrecol\">\n";
echo " <td><b>Nombre</b></td>\n";
echo " <td><b>Estado</b></td>\n";
//echo " <td><b>Atributos</b></td>\n";
echo " <td><b>Correo</b></td>\n";
echo " <td><b>Documento</b></td>\n";
echo " <td><b>Cargo</b></td>\n";
echo " <td><b>Ciudad</b></td>\n";
//echo " <td><b>Miembro de</b></td>\n";
echo " </tr>\n";

while (($this->in < $this->lim) && ($this->in < $this->tamarray)) {
$this->setAtributos($this->arrayestado[$this->in]);
echo " <tr class=\"registros\">\n";
echo " <td>".$this->arraynombre[$this->in]."</td>\n";
echo " <td>".$this->getEstado()."</td>\n";
//echo " <td>".$this->getAttrib()."</td>\n";
echo " <td>".$this->arraycorreo[$this->in]."</td>\n";
echo " <td>".$this->arraydoc[$this->in]."</td>\n";
echo " <td>".$this->arraydescr[$this->in]."</td>\n";
echo " <td>".$this->arrayciud[$this->in]."</td>\n";
//echo " <td>".$this->arraymemberof[$this->in]."</td>\n";
echo " </tr>\n";
$this->in++;
}
echo "</table>";
}
}
?>

(Pagina PHP donde debe crear una instancia de la clase y hacer el llamado a los metodos)

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Consulta LDAP</title>
<link href="estilos.css" type="text/css" rel="stylesheet">
</head>
<body>
<?php
require 'class.ldap.php';
$obj = new LDAP();
$obj->search();
if (!isset($_GET['regxpag'])) {
$_GET['regxpag'] = 20;
}
if (!isset($_GET['pag'])) {
$_GET['pag'] = 1;
}
if (!isset($_GET['in'])) {
$_GET['in'] = 0;
}
if (!isset($_GET['lim'])) {
$_GET['lim'] = $_GET['regxpag'];
}
$obj->paginar($_GET['regxpag'], $_GET['pag'], $_GET['in'], $_GET['lim']);
?>
</body>
</html>

Espero le sea útil, asi el post haya sido publicado hace mucho :D

Etiquetas: ldap, paginar, busquedas
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 21:00.