Foros del Web » Programando para Internet » PHP »

Como hacer este Paginador ??? o el código...

Estas en el tema de Como hacer este Paginador ??? o el código... en el foro de PHP en Foros del Web. Este paginador tiene diferentes criterios de Orden de los resultados. Al inicio aparece un orden por defecto. Cuando se hace click en Fund Name, éste ...
  #1 (permalink)  
Antiguo 08/08/2005, 11:14
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 12 años, 4 meses
Puntos: 0
Como hacer este Paginador ??? o el código...

Este paginador tiene diferentes criterios de Orden de los resultados.

Al inicio aparece un orden por defecto. Cuando se hace click en Fund Name, éste ordena los resultados de menor a Mayor Nombre (ASC en SQL me imagino).

Y se pone con una flechita hacia abajo, si se vuelve a dar click se
ordena con una flecha hacia arriba ( DESC en SQL) y así con los otros criterios





Alguien ha hecho esto o conoce algún código parecido ???

La verdad tengo una mínima idea de como hacerlo, pero ando sin tiempo.


Gracias Maestros.
  #2 (permalink)  
Antiguo 08/08/2005, 11:40
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
aqui te paso el q uso yo:
Código PHP:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
    <!--
    body {
    scrollbar-face-color: #C9CCC5;
    scrollbar-shadow-color: #C9CCC5;
    scrollbar-highlight-color: #C9CCC5;
    scrollbar-3dlight-color: #EFEFEF;
    scrollbar-darkshadow-color: #EFEFEF;
    scrollbar-track-color: #EFEFEF;
    scrollbar-arrow-color: white;
    margin-bottom: 0;
    margin-top: 0;
    margin-left: 0;
    margin-right: 0;
  }
    a.p:link {
        color: #000000;
        text-decoration: none;
    }
    a.p:visited {
        color: #000000;
        text-decoration: none;
    }
    a.p:active {
        color: #000000;
        text-decoration: none;
    }
    a.p:hover {
        color: #000000;
        text-decoration: underline;
    }
    a.ord:link {
        color: #000000;
        text-decoration: none;
    }
    a.ord:visited {
        color: #000000;
        text-decoration: none;
    }
    a.ord:active {
        color: #000000;
        text-decoration: none;
    }
    a.ord:hover {
        color: #000000;
        text-decoration: underline;
    }
    -->
</style>
</head>
<body bgcolor="#9F9FFF">
<div align="center"><strong><font color="#000000" size="1" face="Verdana, Arial, Helvetica, sans-serif"><br>
</font></strong></div>
<hr noshade style="color:666666;height:2px">

<?
//Inizilizo el criterio y cojo qualquier cadena q se quiera buscar
        
$criterio "";
        if (
$_GET["nombrecampo"]!=""){
        
$criterio $_GET["nombrecampo"];
        
$criterio "and nombrecampo like '%" $criterio "%'";
}


    
$sql="SELECT campos
          FROM tablas 
          WHERE clausulas "
.$criterio;
    
$res=mysql_query($sql);
    
$numeroRegistros=mysql_num_rows($res);
    if(
$numeroRegistros<=0)
    {
        echo 
"<div align='center'>";
        echo 
"<font face='verdana' size='-2'>No s'han trobat resultats</font>";
        echo 
"</div>";
    }else{
        
//////////elementos del orden
        
if(!isset($orden))
        {
            
$orden="horaini";
        }
        
//////////fin de elememntos de orden

        //////////calculo de elementos necessarios para paginar
        //tamaño de la pagina
        
$tamPag=20;
        
//pagina actual si no esta definida y limites
        
if(!isset($pagina))
        {
               
$pagina=1;
               
$inicio=1;
               
$final=$tamPag;
        }
        
//calculo del limite inferior
        
$limitInf=($pagina-1)*$tamPag;

        
//calculo del numero de paginas
        
$numPags=ceil($numeroRegistros/$tamPag);
        if(!isset(
$pagina))
        {
               
$pagina=1;
               
$inicio=1;
               
$final=$tamPag;
        }else{
            
$seccionActual=intval(($pagina-1)/$tamPag);
            
$inicio=($seccionActual*$tamPag)+1;

            if(
$pagina<$numPags)
            {
               
$final=$inicio+$tamPag-1;
            }else{
                
$final=$numPags;
            }
                
                if (
$final>$numPags){
                     
$final=$numPags;
            }
        }

        
//////////fin del calculo

        //////////creacion de la consulta con limites
        
$sql"SELECT campos 
               FROM tabla 
               WHERE clausulas"
.$criterio.
               ORDER BY "
.$orden." ASC LIMIT ".$limitInf.",".$tamPag;
        
$res=mysql_query($sql);

        
//////////fi consulta amb limits
        
echo "<div align='center'size='1'>";
        echo 
"ordenados per <b>".$orden."</b>";

        if(isset(
$txt_criterio)){
                echo 
"<br>Valor filtre: <b>".$txt_criterio."</b>";
                }
        echo 
"</font></div>";
        echo 
"<table align='center' width='80%' border='0' cellspacing='1' cellpadding='0' style='font-size=14'>";
        echo 
"<tr><td colspan='6'><hr noshade></td></tr>";
        echo 
"<th bgcolor='#666666'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=numtick&criterio=".$txt_criterio."'>un campo</a></th>";
        echo 
"<th bgcolor='#666666'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=horaini&criterio=".$txt_criterio."'>otrocampo</a></th>";
        while(
$registro=mysql_fetch_array($res))
        {
        
?>
        <!-- tabla de resultados -->
        <tr bgcolor="#CCCCCC" onMouseOver="this.style.backgroundColor='#EFEFEF';this.style.cursor='hand';" onMouseOut="this.style.backgroundColor='#CCCCCC'"o"];">
            <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><b><? echo $registro["uncampo"]; ?></b></font></td>
            <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><b><? echo $registro["otrocampo"]; ?></b></font></td>
        </tr>
        <!-- fin tabla resultados -->
        <?
        
}//fin while
        
echo "</table>";
    }
//fin if
    //////////a partir de aqui empieza la paginacion
?>
    <table border="0" cellspacing="0" cellpadding="0" align="center">
        <tr>
            <td align="center" valign="top">
            <?
                
if($pagina>1)
                {
                    echo 
"<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina-1)."&orden=".$orden."&criterio=".$txt_criterio."'>";
                    echo 
"<font face='verdana' size='-2'>anterior</font>";
                    echo 
"</a>&nbsp;";
                }
            
                for(
$i=$inicio;$i<=$final;$i++)
                {
                    if(
$i==$pagina)
                    {
                        echo 
"<font face='verdana' size='-2'><b>".$i."</b>&nbsp;</font>";
                    }else{
                        echo 
"<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".$i."&orden=".$orden."&criterio=".$txt_criterio."'>";
                        echo 
"<font face='verdana' size='-2'>".$i."</font></a>&nbsp;";
                    }
                }
                if(
$pagina<$numPags)
                {
                    echo 
"&nbsp;<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina+1)."&orden=".$orden."&criterio=".$txt_criterio."'>";
                    echo 
"<font face='verdana' size='-2'>següent</font></a>";
                }
                
//////////fin de la paginacion
            
?>
            </td>
        </tr>
    </table>
<hr noshade style="color:666666;height:2px">
</body>
</html>
espero q te sirva...
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier

Última edición por sergi_climent; 08/08/2005 a las 11:48
  #3 (permalink)  
Antiguo 08/08/2005, 15:17
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 12 años, 4 meses
Puntos: 0
Gracias pero no he podido adaptar el script, alguien tiene algún otro ejemplo ???

Gracias de antemano.
  #4 (permalink)  
Antiguo 09/08/2005, 05:12
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
q problema te ha dado?
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #5 (permalink)  
Antiguo 09/08/2005, 08:50
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 12 años, 4 meses
Puntos: 0
Pues no sédonde coloar los datos de conexión a la BD, Y no entiendo muy bien esta parte


$criterio = "";
if (
$_GET["nombrecampo"]!=""){
$criterio = $_GET["nombrecampo"];
$criterio = "and nombrecampo like '%" . $criterio . "%'";
}


$sql="SELECT campos
FROM tablas
WHERE clausulas "
.$criterio;
  #6 (permalink)  
Antiguo 09/08/2005, 08:57
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Los datos de la conexion a la bd colocalos antes de esta linea:

$criterio="";
  #7 (permalink)  
Antiguo 09/08/2005, 10:10
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
y el criterio es por si quieres hacer un campo de busqueda... insertas un text y refrescas la consulta con esa variable..
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #8 (permalink)  
Antiguo 09/08/2005, 12:04
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 12 años, 4 meses
Puntos: 0
Código PHP:
$conex mysql_connect("localhost""root""");
mysql_select_db("base_de_datos"$conex);
$criterio ""
if (
$_GET["nombrecampo"]!=""){ 
$criterio $_GET["nombrecampo"]; 
$criterio "and nombrecampo like '%" $criterio "%'"

 
$sql="SELECT provider_id, company_name, country, medical_speciality
FROM provider
WHERE active='inactive' "
.$criterio


Me sale error en la linea de:

Código PHP:
mysql_select_db("mibase_de_datos"$conex); 

Última edición por DUDO_DE_ADRIANA; 09/08/2005 a las 12:13
  #9 (permalink)  
Antiguo 09/08/2005, 15:58
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 12 años, 4 meses
Puntos: 0
Así tampoco funciona.


Código PHP:
        $con mysql_connect("localhost","root","") or die (mysql_error()); 
        
mysql_select_db("base_de_datos",$con) or die (mysql_error()); 

sergi_climent no tienes un código más estandar ? Por qué fallará ????

Que alguien me tire un cable...
  #10 (permalink)  
Antiguo 09/08/2005, 16:38
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
que error te indica?
  #11 (permalink)  
Antiguo 09/08/2005, 16:38
Avatar de radarcba  
Fecha de Ingreso: mayo-2005
Ubicación: ureleando
Mensajes: 505
Antigüedad: 12 años, 6 meses
Puntos: 3
buscate el paginator, creo que esta posteado en este foro. es muy util y muy sencillo. de nuestro amigo Jorge Pinedo Rosas (jpinedo). Seguro que hay una version posteada, de aca llegue hasta el final que uso.
__________________
Maldición va a ser un día hermoso... PR
Tetris, correo & TU IP
  #12 (permalink)  
Antiguo 09/08/2005, 17:56
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 12 años, 4 meses
Puntos: 0
Si ya probé el paginador de jpinedo y anda muy bien, pero necesito uno con estas características de ordenasr ASC DESC por campo.

Código PHP:
 NoticeUndefined indexnombrecampo in c:easyphp1-7wwwpaginador3.php on line 62 
ordenados per horaini
 
-------------------------------------------------------------------------------- 


La linea 62 es:
Código PHP:
if ($_GET["nombrecampo"]!=""){ // Linea 62
$criterio $_GET["nombrecampo"]; 
$criterio "and nombrecampo like '%" $criterio "%'"

  #13 (permalink)  
Antiguo 09/08/2005, 20:14
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Hola:

Deberías ver este ejemplo que puso Cluster hace algún tiempo:
http://www.forosdelweb.com/f18/cambiar-orden-datos-asc-desc-174139/

Si utilizas otras variables que debes propagar, también las agregas en los enlaces.
Si fuera Paginator, agreagarás en el array $_pagi_propagar las variables 'campo' y 'orden'.

Saludos
  #14 (permalink)  
Antiguo 10/08/2005, 09:26
Avatar de radarcba  
Fecha de Ingreso: mayo-2005
Ubicación: ureleando
Mensajes: 505
Antigüedad: 12 años, 6 meses
Puntos: 3
Jpinedo, te hago una consulta acerca del paginator, ya que te encuentro por aca =). Cuando no necesito paginar porque la cantidad de pag. son menores a la que elegi como opcion, me salen unos nros. 1 en el lugar de la navegacion. Yo los elimine, pero la unica forma que encontre hace que cuando si necesito el navegador, me elimina el nro. de pagina actual, habra otra forma de decirle que si no necesito paginar no me muestre el navegador ?.
Gracias.
__________________
Maldición va a ser un día hermoso... PR
Tetris, correo & TU IP
  #15 (permalink)  
Antiguo 10/08/2005, 10:28
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 12 años, 4 meses
Puntos: 0
Gracias A Cluster y Jpinedo Y Todos los del Post

Grandisimo el Maestro Cluster..........muchas gracias Jpinedo, ya lo he resuelto.

Por cierto no has pensado en incorporar esto en el paginator ???

Iría de Maravilla.



Cita:
Iniciado por jpinedo
Hola:

Deberías ver este ejemplo que puso Cluster hace algún tiempo:
http://www.forosdelweb.com/showthread.php?t=174139

Si utilizas otras variables que debes propagar, también las agregas en los enlaces.
Si fuera Paginator, agreagarás en el array $_pagi_propagar las variables 'campo' y 'orden'.

Saludos
  #16 (permalink)  
Antiguo 10/08/2005, 21:16
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
radarcba:
Trata de no mezclar temas. Te respondo brevemente (cualquier duda sobre esto, por favor en tema aparte). Para resolver tu problema bastará con que hagas una pequeña comprobación utilizando la variable $_pagi_totalPags, que contiene el número de páginas generadas.
Código PHP:
if($_pagi_totalPags 1){
   echo
"<p>".$_pagi_navegacion."</p>";

DUDO_DE_ADRIANA:
El problema de incluir esto en Paginator es que Paginator es independiente de la consulta y de cómo se presenten los datos en pantalla.
De todos modos es una buena sugerencia para los ejemplos y las FAQ's de Paginator que espero publicar pronto.

Muchas gracias.

Saludos
  #17 (permalink)  
Antiguo 11/08/2005, 10:10
Avatar de radarcba  
Fecha de Ingreso: mayo-2005
Ubicación: ureleando
Mensajes: 505
Antigüedad: 12 años, 6 meses
Puntos: 3
Tenes razon Jpinedo, no se va a repetir.
__________________
Maldición va a ser un día hermoso... PR
Tetris, correo & TU IP
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 08:17.