Foros del Web » Programando para Internet » PHP »

Paginacion en php While dentro de funcion?

Estas en el tema de Paginacion en php While dentro de funcion? en el foro de PHP en Foros del Web. Hola les explico. Hice un sistema de paginacion en php el cual esta dentro de una funcion. Se preguntaran cual es el problema? .El while. ...
  #1 (permalink)  
Antiguo 05/05/2012, 00:34
Avatar de Ex_shadow  
Fecha de Ingreso: febrero-2012
Ubicación: Calera Avellaneda, Buenos Aires, Argentina, Argentina
Mensajes: 95
Antigüedad: 12 años, 1 mes
Puntos: 4
Pregunta Paginacion en php While dentro de funcion?

Hola les explico.
Hice un sistema de paginacion en php el cual esta dentro de una funcion.
Se preguntaran cual es el problema? .El while. Se los muestro y luego les explico.

Código PHP:
Ver original
  1. # --- Conexion mysql
  2. function Conectar ($Host,$Usuario,$Contrasena,$Base){
  3.    
  4.     $Conexion = mysql_connect($Host,$Usuario,$Contrasena);
  5.     return mysql_select_db($Base,$Conexion);
  6.    
  7. }
  8.  
  9. # --- Consulta
  10. function Consulta($Consult){
  11.    
  12.     return mysql_query($Consult);
  13.    
  14. }
  15.  
  16. # --- Reg_Num
  17. function Reg_Num($Consult){
  18.    
  19.     return mysql_num_rows($Consult);
  20.    
  21. }
  22.  
  23. # --- Asooc
  24. function Assoc($Consult){
  25.     return mysql_fetch_assoc($Consult);
  26. }
  27.  
  28. # --- Paginador
  29. function Paginador($Consult,$Reg,$Botones,$Class,$Funcion){
  30.    
  31.     # - Posicion
  32.     if(!isset($_GET['Pag']) || $_GET['Pag']<0){ // Si no Existe Pag o Es menor a 0
  33.         $Pagina = 1;
  34.     }else{
  35.         $Pagina = $_GET['Pag'];
  36.     }
  37.    
  38.     # - Opciones
  39.     $Consulta = Consulta($Consult);
  40.     $Registros = $Reg;
  41.     $Intervalo = $Botones;
  42.    
  43.     # - Configuracion
  44.     $Cantidad = Reg_Num($Consulta);
  45.     $Desde = $Pagina*$Registros;
  46.     $Total = ceil($Cantidad/$Registros);
  47.     $Botones = ($Intervalo*2)+1;
  48.     $i = 0;
  49.     $Func = $Pagina-$Intervalo;
  50.        
  51.     # - Navegacion
  52.     $Anterior = $Pagina-1;
  53.     $Siguiente = $Pagina+1;
  54.    
  55.     # - Bucle
  56.     while($Campo = Assoc($Consulta)){
  57.         echo $Funcion;
  58.     }
  59.    
  60.     # -- Empieza la Navegacion
  61.     # - Boton Anterior
  62.     if($Pagina>1){
  63.         echo '<a href="?Pag='.$Anterior.'"> <input type="button" class="Navegacion" value="Anterior"> </a>';
  64.     }
  65.    
  66.     # - Paginas
  67.     while ($i<$Botones) {
  68.      
  69.         if ($Func>0 and $Func<=$Total) {
  70.    
  71.             if($Func == $Pagina){
  72.                 echo '<input type="button" class="'.$Class.' Disabled" value="'.$Func.'" disabled="disabled"/>';
  73.             }else{
  74.               echo '<a href="?Pag='.$Func.'"> <input type="button" class="'.$Class.'" value="'.$Func.'" />  </a>';
  75.             }
  76.          $i++;
  77.         }
  78.    
  79.             if($Func>$Total){
  80.                 $i=$Botones;
  81.             }
  82.          $Func++;
  83.         }
  84.    
  85.     /* Simple
  86.     echo $Pagina.' / '.$Total;*/
  87.  
  88.     # - Boton Siguiente
  89.     if($Pagina>=1 and $Pagina<$Total || !isset($_GET['Pag'])){
  90.         echo '<a href="?Pag='.$Siguiente.'"> <input type="button" class="Navegacion" value="Siguiente"> </a>';
  91.     }  
  92. }
Acá lo único que pido son 5 parametros:

El 1: La consulta a paginar. - OK
El 2: La cantidad de registros por pagina. - OK
El 3: El Intervalo de botones ( 12 13 14) = (3). - OK
El 4: Las clases de los botones. - OK
El 5: El while en una funcion. - NO


Código PHP:
Ver original
  1. <?
  2.             include("Includes/Paginador.php");
  3.            
  4.             function Mostrador(){
  5.                 return $Campo['help_topic_id'];
  6.                
  7.             }
  8.            
  9.             Conectar('localhost','root','','mysql');
  10.            
  11.             Paginador("SELECT * FROM help_relation",20,2,'Paginas',Mostrador());
  12.         ?>

1 - No me tira ningun error
2 - Me muestra los botones como deven estar
3 - Pero no me muestra los Registros
  #2 (permalink)  
Antiguo 05/05/2012, 00:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Paginacion en php While dentro de funcion?

Así no se usan los callbacks, lo que estás pasando a tu paginador es el resultado de la ejecución de dicha función.

Lo que debes pasar es el nombre de la función como string, y donde gustes ejecutarlo hacerlo así.
Código PHP:
function foo () {}
function 
bar($candy) {
  
$candy();
}

bar('foo'); 
Te invito a leer lo siguiente:
http://php.net/manual/es/language.types.callable.php
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 05/05/2012, 12:21
Avatar de Ex_shadow  
Fecha de Ingreso: febrero-2012
Ubicación: Calera Avellaneda, Buenos Aires, Argentina, Argentina
Mensajes: 95
Antigüedad: 12 años, 1 mes
Puntos: 4
Respuesta: Paginacion en php While dentro de funcion?

:/ ya lo cambie y no funciono :S
  #4 (permalink)  
Antiguo 06/05/2012, 01:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Paginacion en php While dentro de funcion?

Cita:
Iniciado por Ex_shadow Ver Mensaje
:/ ya lo cambie y no funciono :S
Bueno, si con esa respuesta esperas recibir ayuda mejor desiste.

Entiende que sería muy inteligente de tu parte mostrar como dejaste el código para ver que haces mal, o saber si recibes un mensaje de error, etc.

Por aquí no hay adivinos.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 06/05/2012, 15:30
Avatar de Ex_shadow  
Fecha de Ingreso: febrero-2012
Ubicación: Calera Avellaneda, Buenos Aires, Argentina, Argentina
Mensajes: 95
Antigüedad: 12 años, 1 mes
Puntos: 4
Respuesta: Paginacion en php While dentro de funcion?

jajajaja xD perdon aveces soy medio navo xD

acá esta:

Código PHP:
Ver original
  1. /* --- *** --- Mysql --- *** --- */
  2. # --- Conexion mysql
  3. function Conectar ($Host,$Usuario,$Contrasena,$Base){
  4.    
  5.     $Conexion = mysql_connect($Host,$Usuario,$Contrasena);
  6.     return mysql_select_db($Base,$Conexion);
  7.    
  8. }
  9.  
  10. # --- Consulta
  11. function Consulta($Consult){
  12.    
  13.     return mysql_query($Consult);
  14.    
  15. }
  16.  
  17. # --- Reg_Num
  18. function Reg_Num($Consult){
  19.    
  20.     return mysql_num_rows($Consult);
  21.    
  22. }
  23.  
  24. # --- Asooc
  25. function Assoc($Consult){
  26.     return mysql_fetch_assoc($Consult);
  27. }
  28.  
  29.  
  30. /* --- *** --- Scripts --- *** --- */
  31. # --- Paginador
  32. function Paginador($Consult,$Reg,$Botones,$Class,$Funcion){
  33.     # - Posicion
  34.     if(!isset($_GET['Pag']) || $_GET['Pag']<0){ // Si no Existe Pag o Es menor a 0
  35.         $Pagina = 1;
  36.     }else{
  37.         $Pagina = $_GET['Pag'];
  38.     }
  39.    
  40.     # - Opciones
  41.     $Consulta = Consulta($Consult);
  42.     $Registros = $Reg;
  43.     $Intervalo = $Botones;
  44.    
  45.     # - Configuracion
  46.     $Cantidad = Reg_Num($Consulta);
  47.     $Desde = ($Pagina-1)*$Registros;
  48.     $Total = ceil($Cantidad/$Registros);
  49.     $Botones = ($Intervalo*2)+1;
  50.     $i = 0;
  51.     $Func = $Pagina-$Intervalo;
  52.    
  53.     $Consult .=' LIMIT '.$Desde.' , '.$Registros; // *** Ok
  54.    
  55.     # - Navegacion
  56.     $Anterior = $Pagina-1;
  57.     $Siguiente = $Pagina+1;
  58.        
  59.     # - Bucle
  60.     echo $Consult;
  61.     while($Campo = Assoc($Consult)){
  62.        
  63.              $Funcion();
  64.  
  65.     }
  66.    
  67.     # -- Empieza la Navegacion
  68.     # - Boton Anterior
  69.     if($Pagina>1){
  70.         echo '<a href="?Pag='.$Anterior.'"> <input type="button" class="Navegacion" value="Anterior"> </a>';
  71.     }
  72.    
  73.     # - Paginas
  74.     while ($i<$Botones) {
  75.      
  76.         if ($Func>0 and $Func<=$Total) {
  77.    
  78.             if($Func == $Pagina){
  79.                 echo '<input type="button" class="'.$Class.' Disabled" value="'.$Func.'" disabled="disabled"/>';
  80.             }else{
  81.               echo '<a href="?Pag='.$Func.'"> <input type="button" class="'.$Class.'" value="'.$Func.'" />  </a>';
  82.             }
  83.          $i++;
  84.         }
  85.    
  86.             if($Func>$Total){
  87.                 $i=$Botones;
  88.             }
  89.          $Func++;
  90.         }
  91.    
  92.     /* Simple
  93.     echo $Pagina.' / '.$Total;*/
  94.  
  95.     # - Boton Siguiente
  96.     if($Pagina>=1 and $Pagina<$Total || !isset($_GET['Pag'])){
  97.         echo '<a href="?Pag='.$Siguiente.'"> <input type="button" class="Navegacion" value="Siguiente"> </a>';
  98.     }  
  99. }


Código PHP:
Ver original
  1. <?
  2.             include("Includes/Paginador.php");
  3.            
  4.             function Mostrador(){
  5.                 echo $Campo['Nombre'];
  6.             }
  7.            
  8.             Conectar('localhost','root','','mysql');
  9.            
  10.             Paginador("SELECT * FROM help_relation",20,2,'Paginas',Mostrador);
  11.         ?>
  #6 (permalink)  
Antiguo 06/05/2012, 15:31
Avatar de Ex_shadow  
Fecha de Ingreso: febrero-2012
Ubicación: Calera Avellaneda, Buenos Aires, Argentina, Argentina
Mensajes: 95
Antigüedad: 12 años, 1 mes
Puntos: 4
Respuesta: Paginacion en php While dentro de funcion?

jajajaja xD perdon aveces soy medio navo xD

acá esta:

Código PHP:
Ver original
  1. /* --- *** --- Mysql --- *** --- */
  2. # --- Conexion mysql
  3. function Conectar ($Host,$Usuario,$Contrasena,$Base){
  4.    
  5.     $Conexion = mysql_connect($Host,$Usuario,$Contrasena);
  6.     return mysql_select_db($Base,$Conexion);
  7.    
  8. }
  9.  
  10. # --- Consulta
  11. function Consulta($Consult){
  12.    
  13.     return mysql_query($Consult);
  14.    
  15. }
  16.  
  17. # --- Reg_Num
  18. function Reg_Num($Consult){
  19.    
  20.     return mysql_num_rows($Consult);
  21.    
  22. }
  23.  
  24. # --- Asooc
  25. function Assoc($Consult){
  26.     return mysql_fetch_assoc($Consult);
  27. }
  28.  
  29.  
  30. /* --- *** --- Scripts --- *** --- */
  31. # --- Paginador
  32. function Paginador($Consult,$Reg,$Botones,$Class,$Funcion){
  33.     # - Posicion
  34.     if(!isset($_GET['Pag']) || $_GET['Pag']<0){ // Si no Existe Pag o Es menor a 0
  35.         $Pagina = 1;
  36.     }else{
  37.         $Pagina = $_GET['Pag'];
  38.     }
  39.    
  40.     # - Opciones
  41.     $Consulta = Consulta($Consult);
  42.     $Registros = $Reg;
  43.     $Intervalo = $Botones;
  44.    
  45.     # - Configuracion
  46.     $Cantidad = Reg_Num($Consulta);
  47.     $Desde = ($Pagina-1)*$Registros;
  48.     $Total = ceil($Cantidad/$Registros);
  49.     $Botones = ($Intervalo*2)+1;
  50.     $i = 0;
  51.     $Func = $Pagina-$Intervalo;
  52.    
  53.     $Consult .=' LIMIT '.$Desde.' , '.$Registros; // *** Ok
  54.    
  55.     # - Navegacion
  56.     $Anterior = $Pagina-1;
  57.     $Siguiente = $Pagina+1;
  58.        
  59.     # - Bucle
  60.     while($Campo = Assoc($Consult)){
  61.        
  62.              $Funcion();
  63.  
  64.     }
  65.    
  66.     # -- Empieza la Navegacion
  67.     # - Boton Anterior
  68.     if($Pagina>1){
  69.         echo '<a href="?Pag='.$Anterior.'"> <input type="button" class="Navegacion" value="Anterior"> </a>';
  70.     }
  71.    
  72.     # - Paginas
  73.     while ($i<$Botones) {
  74.      
  75.         if ($Func>0 and $Func<=$Total) {
  76.    
  77.             if($Func == $Pagina){
  78.                 echo '<input type="button" class="'.$Class.' Disabled" value="'.$Func.'" disabled="disabled"/>';
  79.             }else{
  80.               echo '<a href="?Pag='.$Func.'"> <input type="button" class="'.$Class.'" value="'.$Func.'" />  </a>';
  81.             }
  82.          $i++;
  83.         }
  84.    
  85.             if($Func>$Total){
  86.                 $i=$Botones;
  87.             }
  88.          $Func++;
  89.         }
  90.    
  91.     /* Simple
  92.     echo $Pagina.' / '.$Total;*/
  93.  
  94.     # - Boton Siguiente
  95.     if($Pagina>=1 and $Pagina<$Total || !isset($_GET['Pag'])){
  96.         echo '<a href="?Pag='.$Siguiente.'"> <input type="button" class="Navegacion" value="Siguiente"> </a>';
  97.     }  
  98. }


Código PHP:
Ver original
  1. <?
  2.             include("Includes/Paginador.php");
  3.            
  4.             function Mostrador(){
  5.                 echo $Campo['Nombre'];
  6.             }
  7.            
  8.             Conectar('localhost','root','','mysql');
  9.            
  10.             Paginador("SELECT * FROM help_relation",20,2,'Paginas',Mostrador);
  11.         ?>


El error {

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\UndeRock\Includes\Paginador.php on line 27

}

En cuanto le puse el "LIMIT" me devolvia un error, pero si le hago un echo a esa consulta con el limit y la pongo en el phpmyadmin me funciona bien ahi la consulta, en el php no.

Última edición por Ex_shadow; 06/05/2012 a las 15:37

Etiquetas: paginacion, registros, mysql
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 00:33.