Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP+HTML+URL con $_SERVER

Estas en el tema de PHP+HTML+URL con $_SERVER en el foro de PHP en Foros del Web. Estoy aplicando un paginador a mi web. A la hora de pulsar sobre un botón del paginador me redirige a una URL inválida. Tengo este ...
  #1 (permalink)  
Antiguo 04/01/2014, 04:00
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 12 años
Puntos: 84
PHP+HTML+URL con $_SERVER

Estoy aplicando un paginador a mi web.

A la hora de pulsar sobre un botón del paginador me redirige a una URL inválida.

Tengo este botón donde cargo un valor para retroceder (aunque pasa lo mismo con el resto de botones que hay dentro del form)

Código PHP:
Ver original
  1. ?>
  2. <form method="get" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
  3.   <button type="submit" name="page" value="<?php echo $before_button; ?>" title="Página anterior" id="before_button">
  4.     before
  5.   </button>
  6. </form>
  7. <?php

El problema está en que en vez de mantenerme en

Código HTML:
Ver original
  1. /admin/adminapp.php?option=questions&question=settag

Crea una totalmente nueva

Código HTML:
Ver original
  1. /admin/adminapp.php?page=1

He examinado el array $_SERVER y REQUEST_URI es el único índice que me sirve para mantener la URL GET.

¿Alguien me puede ayudar a entender qué está pasando y cómo podría solucionarlo?

EDITO

Lo que pretendo obtener es

/admin/adminapp.php?option=questions&question=settag&page =1
__________________
Ayúdame a hacerlo por mi mismo.

Última edición por guardarmicorreo; 04/01/2014 a las 04:07
  #2 (permalink)  
Antiguo 04/01/2014, 07:54
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 2 meses
Puntos: 397
Respuesta: PHP+HTML+URL con $_SERVER

Bueno si revisas la documentación de $_SERVER verás que tiene un indice llamado QUERY_STRING que es el que tiene guardada esa información

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #3 (permalink)  
Antiguo 04/01/2014, 08:11
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 12 años
Puntos: 84
Respuesta: PHP+HTML+URL con $_SERVER

Gracias jonni09lo, lo he probado y me funciona a medias.

Cuando en el action del form pongo $_SERVER['QUERY_STRING']

la dirección varía de

/admin/adminapp.php?option=questions&question=settag

a

http://miweb.com/admin/option=questi...settag&?page=1

Acabo de probar a componer una URL de la siguiente manera

Código PHP:
Ver original
  1. ?>
  2. <form method="get" action="<?php echo $_server['PHP_SELF'].$_SERVER['QUERY_STRING']; ?>">
  3. <?php

Pero el navegador me arroja una advertencia de "solicitud de protocolo externo" para iniciar xdg-open porque el enlace es "notice: undefined variable: _server".

Lo cual es raro, porque al hacer el var_dump de $_SERVER sí aparece definido PHP_SELF, también aparece definido SCRIPT_NAME pero me arroja la misma advertencia :S

Es en un servidor remoto, por lo tanto no etiendo por qué mi propio navegador me advierte esto :S

Vamos, no entiendo nada :D :S
__________________
Ayúdame a hacerlo por mi mismo.
  #4 (permalink)  
Antiguo 04/01/2014, 08:13
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 2 meses
Puntos: 397
Respuesta: PHP+HTML+URL con $_SERVER

Pues

$_server != $_SERVER



Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #5 (permalink)  
Antiguo 04/01/2014, 08:18
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 12 años
Puntos: 84
Respuesta: PHP+HTML+URL con $_SERVER

cierto, lo escribí muy rápido.

Ahora persiste solamente un problema y que ahí sí que es verdad que no tengo idea de cómo solucionarlo.

es con el símbolo de inicio de variables GET en el path del navegador.

me refiero a ?.

ahora me crea toda la URL pero varía ese símbolo y si tendría que quedar así

http://miweb.com/admin/adminapp.php?option=questions&question=settag&page=1

ahora lo mueve y queda así

http://miweb.com/admin/adminapp.phpo...uestion=settag?page=1

por lo que es una URL inválida :S
__________________
Ayúdame a hacerlo por mi mismo.
  #6 (permalink)  
Antiguo 04/01/2014, 08:22
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 2 meses
Puntos: 397
Respuesta: PHP+HTML+URL con $_SERVER

Estás trabajando con el paginador que estábamos viendo ayer, cierto?

Si es así déjame decirte lo siguiente.

No es necesario usar un formulario para el link de siguiente, solo con <a href="url">Siguiente</a> te bastaría

El paginador debe estar en la capacidad de detectar el link de la pagina y los parametros que esta recibe y así mismo construir la url en base a ello, para que simplemente solo tengas que obtener la url y ya. Esa es la manera correcta.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #7 (permalink)  
Antiguo 04/01/2014, 08:52
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 12 años
Puntos: 84
Respuesta: PHP+HTML+URL con $_SERVER

Funciona perfecto.

Era lo que necesitaba.

Entonces ¿el HTML del paginador no se puede hacer con form no?

Ahora el paginador funciona, pero en el path del navegador va guardando cada página :S

Para evitar esto ¿debería manipular el contenido de $_SERVER['QUEERY_STRING'] en otra variable y así eliminar cada page=1, 2, 3, 4, etc.?

Gracias por tu ayuda, de otra manera me hubiera llevado mucho tiempo poder resolver esto :D
__________________
Ayúdame a hacerlo por mi mismo.
  #8 (permalink)  
Antiguo 04/01/2014, 08:54
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 2 meses
Puntos: 397
Respuesta: PHP+HTML+URL con $_SERVER

No quieres guardar la url en el historial del navegador? a eso te refieres?

Por qué motivo?

No es muy optimo que digamos... si quiero regresarme a la pagina anterior (a los resultados anteriores) como lo haría? si le doy clic a anterior sería lo mismo que darle clic al botón de atrás del navegador...

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #9 (permalink)  
Antiguo 04/01/2014, 09:00
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 12 años
Puntos: 84
Respuesta: PHP+HTML+URL con $_SERVER

No me refiero a eso exactamente.

Estaría bien que la URL quedara así

http://miweb.com/admin/adminapp.php?...=settag&page=2

Pero que queda así

http://miweb.com/admin/adminapp.php?option=questions&question=settag&page =2&page=3$page=0

Tengo esta manera de hacer el a href

Código PHP:
Ver original
  1. ?>
  2. <a href="<?php echo $_SERVER['REQUEST_URI']; ?>" name="page">Página anterior</a>
  3. <?php

y aunque lo haga así

Código PHP:
Ver original
  1. ?>
  2. <a href="<?php echo $_SERVER['REQUEST_URI']."&page=".$surround_before; ?>"><?php echo $surround_before; ?></a>
  3. <?php

con el &page= sigue guardando la variable y el valor en la barra de direcciones del navegador
__________________
Ayúdame a hacerlo por mi mismo.
  #10 (permalink)  
Antiguo 04/01/2014, 09:17
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 2 meses
Puntos: 397
Respuesta: PHP+HTML+URL con $_SERVER

Ahhh creo que me entendiste mal...

Los metodos que te devuelven las paginas (como beforeButtons()) te debería devolver la URL ya armada, para que simplemente haciendo algo como

Código PHP:
Ver original
  1. <a href="<?php echo $before_button; ?>"><?php echo $surround_before; ?></a>

Ya obtengas la url ya armada

Igual puedes hacer algo como esto dentro de la clase del paginador:

Código PHP:
Ver original
  1. protected function processUrl(){
  2.     $query = explode( '&', $_SERVER['QUERY_STRING'] );
  3.     $url = '';
  4.     foreach( $query as $k=>$part ){
  5.         list($key, $value) = explode('=', $part);
  6.         if( $key != 'page' ){
  7.             $url .= "{$key}={$value}&";
  8.         }
  9.     }
  10.     $url = trim($url, '&');
  11.     return "?$url";
  12. }
o con expresiones regulares:

Código PHP:
Ver original
  1. protected function processUrl(){
  2.     $url = preg_replace('/\&?page\=(\d)/', '', $_SERVER['QUERY_STRING']);
  3.     $url = trim($url, '&');
  4.     return "?$url";
  5. }

Y lo llamas desde el metodo (por ejemplo este)

Código PHP:
Ver original
  1. function    beforeButtons()
  2.     {
  3.         //resta 1 a la pagina actual
  4.         $pageBefore  =   ceil($this->page  -   1);
  5.        
  6.         //si el resultado anterior indica que no da un valor negativo
  7.         if($pageBefore >=0)
  8.         {
  9.             $this->beforeButton  =   $pageBefore;
  10.         }
  11.        
  12.         //sino asigna false para no mostrar boton anterior
  13.         else
  14.       {
  15.             $this->beforeButton  =   FALSE;
  16.         }
  17.         $url = $this->processUrl();
  18.         return $url . "&page=" . $this->beforeButton;
  19.     }

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.

Última edición por jonni09lo; 04/01/2014 a las 09:26 Razón: Corregir la función processUrl de las expresiones regulares...
  #11 (permalink)  
Antiguo 07/01/2014, 01:20
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 12 años
Puntos: 84
Respuesta: PHP+HTML+URL con $_SERVER

Bueno, he intentado esto último que me dijistes.

El código del paginador que he realizado es este

Código PHP:
Ver original
  1. <?php
  2.  
  3. //  ==========================
  4. //  = Realiza calculos para paginar resultados =
  5. //  ==========================
  6.  
  7. class Paginator
  8. {
  9.     /*
  10.      * propiedades
  11.      */
  12.      
  13.     //resultados totales
  14.     private $totalResultsSet;
  15.      
  16.     //numero de resultados por pagina
  17.     private $resultsPage = 5;
  18.      
  19.     //numero de pagina actual
  20.     private $page;
  21.    
  22.     //registro actual que esta usando el usuario
  23.     private $currentPages;
  24.    
  25.     //numero de paginas totales
  26.     private $totalPages;
  27.      
  28.     //numero de paginas anteriores
  29.     private $pagesBefore    =   5;
  30.      
  31.     //numero de pagina siguiente
  32.     private $pagesAfter =   5;
  33.    
  34.     //pagina anterior
  35.     private $beforeButton;
  36.    
  37.     //pagina siguiente
  38.     private $afterButton;
  39.    
  40.     //botones circundantes anteriores
  41.     private $surroundBefore   =   array();
  42.    
  43.     //botones circundantes posteriores
  44.     private $surroundAfter  =   array();
  45.          
  46.     //resultado de un metodo
  47.     private $result =   array();
  48.    
  49.     // action URL, para los botones del paginador
  50.     private $url;
  51.    
  52.     //identificador, identifica el objeto que esta paginando
  53.     private    $id;
  54.    
  55.     /*
  56.      * para crear tanto las propiedades como para iniciar los calculos basicos para toda la clase
  57.      */
  58.     function    __construct($totalResultsSet, $page, $url, $id)
  59.     {
  60.         $this->totalResultsSet    =   $totalResultsSet;
  61.        
  62.         $this->page =   $page;
  63.        
  64.         $this->totalPages   =   $this->calcTotalPages($totalResultsSet, $this->resultsPage);
  65.        
  66.         $this->currentPage  =   $this->currentPages($page, $this->resultsPage);
  67.        
  68.         $this->url  =   $url;
  69.        
  70.         $this->id   =   $id;
  71.     }
  72.    
  73.     /*
  74.      * calcula las paginas totales
  75.      */
  76.     public  function    calcTotalPages($totalResultsSet, $resultsPage)
  77.     {
  78.         //divide los resultados totales entre los resultados a mostrar por pagina
  79.         return  $this->totalPages   =  ceil($totalResultsSet    /   $resultsPage);
  80.     }
  81.    
  82.     /*
  83.      * calcula el conjunto de registros que esta empleando el usuario
  84.      */
  85.     public  function    currentPages($page, $resultsPage)
  86.     {
  87.         //multiplica la pagina actual por los resultados por pagina
  88.         return  $this->currentPages  =   ceil($page   *   $resultsPage);
  89.     }
  90.    
  91.     /*
  92.      * calcula las paginas circundantes anteriores
  93.      */
  94.     public  function    surroundPagesBefore()
  95.     {  
  96.         //resta la pagina menos el numero de paginas anteriores en el centro
  97.         $pagesBefore  =   $this->page   -   $this->pagesBefore;
  98.        
  99.         //comienza a crear botones hasta llegar a la pagina actual
  100.         for($i=$pagesBefore; $i < $this->page; $i++)
  101.         {
  102.             if($i>=0)
  103.             {
  104.                 array_push($this->surroundBefore,   array(
  105.                                                                                         'page'  =>$i,
  106.                                                                                         'url'      =>$this->createURL($this->url, $this->id, $i)
  107.                                                                                         ));
  108.             }
  109.         }
  110.        
  111.         //sino retorna false para que no muestre el boton anterior
  112.         if(empty($this->surroundBefore))
  113.         {
  114.             $this->surroundBefore   =   FALSE;
  115.         }
  116.        
  117.         return  $this->surroundBefore;
  118.     }
  119.    
  120.     /*
  121.      * calcula las paginas circundantes posteriores
  122.      */
  123.     public  function    surroundPagesAfter()
  124.     {  
  125.         //suma a la pagina actual las paginas configuradas para mostrar despues
  126.         $pagesAfter  =   $this->page   +   $this->pagesAfter;
  127.        
  128.         //comienza a crear tantos botones como paginas sean posibles o menor que la suma anterior
  129.         for($i=$this->page; $i <= $this->totalPages; $i++)
  130.         {
  131.             if($i>$this->page)
  132.             {
  133.                 array_push($this->surroundAfter,   array(
  134.                                                                                         'page'  =>$i,
  135.                                                                                         'url'      =>$this->createURL($this->url, $this->id, $i) //esta es la linea 154 de la clase
  136.                                                                                      ));
  137.             }
  138.         }
  139.        
  140.         //asigna false para que no muestre botones posteriores
  141.         if(empty($this->surroundAfter))
  142.         {
  143.             $this->surroundAfter   =   FALSE;
  144.         }
  145.        
  146.         return  $this->surroundAfter;
  147.     }
  148.    
  149.     /*
  150.      * crea el boton anterior
  151.      */
  152.     public  function    beforeButtons()
  153.     {
  154.         //resta 1 a la pagina actual
  155.         $pageBefore  =   ceil($this->page  -   1);
  156.        
  157.         //si el resultado anterior indica que no da un valor negativo
  158.         if($pageBefore >=0)
  159.         {
  160.             $this->beforeButton  =   array(
  161.                                                                 'page'  =>$pageBefore,
  162.                                                                 'url'      =>$this->createURL($this->url, $this->id, $pageBefore)
  163.                                                                );
  164.         }
  165.        
  166.         //sino asigna false para no mostrar boton anterior
  167.         else
  168.       {
  169.             $this->beforeButton  =   FALSE;
  170.         }
  171.      
  172.         return $this->beforeButton;
  173.     }
  174.    
  175.     /*
  176.      * crea el boton siguiente
  177.      */
  178.     public  function    afterButtons()
  179.     {  
  180.         //suma a la pagina actual 1
  181.         $afterButton    =   $this->page   +   1;
  182.        
  183.         //si el resultado anterior es menor o igual a las paginas totales posibles
  184.         if($afterButton <=  $this->totalPages)
  185.         {
  186.             $this->afterButton  =   array(
  187.                                                              'page'  =>$afterButton,
  188.                                                              'url'      =>$this->createURL($this->url, $this->id, $afterButton)
  189.                                                             );
  190.         }
  191.         else
  192.         {
  193.             $this->afterButton  =   FALSE;
  194.         }
  195.        
  196.         return  $this->afterButton;
  197.     }
  198.    
  199.     /*
  200.      * crea el array definitivo con todos los valores necesarios para todos los botones
  201.      */
  202.     public  function    paginator()
  203.     {
  204.         //comprueba que la pagina que ha enviado el usuario no sea mayor que el total de resultados posibles
  205.         //tampoco que sea inferior a 0
  206.         if($this->page  <=  $this->totalPages   AND $this->page>=0)
  207.         {
  208.             $this->result   =   array(
  209.                                                         'page'=>$this->page,
  210.                                                         'surround_before'   =>$this->surroundPagesBefore(),
  211.                                                         'surround_after'    =>$this->surroundPagesAfter(),
  212.                                                         'before_button' =>$this->beforeButtons(),
  213.                                                         'after_button'  =>$this->afterButtons(),
  214.                                                         'total_pages'   =>$this->totalPages,
  215.                                                         'current_pages' =>$this->currentPages,
  216.                                                         'limit_since' =>$this->currentPages,
  217.                                                         'limit_result_set'  =>$this->resultsPage
  218.                                                     );
  219.                                                                                
  220.         }
  221.        
  222.         //si el usuario intentara romper el paginado poniendo páginas falsas entonces asigna FALSE
  223.         else
  224.       {
  225.             $this->result   =   FALSE;
  226.         }
  227.        
  228.         return  $this->result;
  229.     }
  230.  
  231.     /*
  232.      * busca y sustituye un patron dentro de una URL para
  233.      * eliminar ese patron y sustituirlo para crear una nueva URL
  234.      * evitando repetir el patron en la URL
  235.      *
  236.      * por ejemplo evitar::          ?page=1&page=2&page=3
  237.      */
  238.     public  function    createURL($url, $id, $page)
  239.     {
  240.         //si el identificador no se encuentra en la url
  241.         if(substr_count($url, $id)  ==0)
  242.         {
  243.             //agrega al final de la url el identificador y el valor que le corresponde
  244.             $url  =   $url."&".$id."=".$page;
  245.         }
  246.        
  247.         //sino busca y reemplaza el identificador en la url por su nuevo valor
  248.         else
  249.       {
  250.             $url  =   preg_replace("/(".$id.")/i", $url."&".$id."=".$page, $url);
  251.         }
  252.        
  253.         return  $url;
  254.     }
  255. }
  256. ?>

Pero me indica el siguiente error

Cita:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 72 bytes) in /var/www/vhosts/miweb.com/httpdocs/models/Paginator.php on line 154
En el código ya está indicada la línea 154.

No se exactamente a qué se refiere ese error, si es que el script utiliza más memoria de la que tengo configurada o es que hay otro tipo de error :S

Recalcar que el script al parecer funciona. del boton 0 al 1 funciona, pero ya en el 2 me da ese error :S
__________________
Ayúdame a hacerlo por mi mismo.
  #12 (permalink)  
Antiguo 07/01/2014, 04:55
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 12 años
Puntos: 84
Respuesta: PHP+HTML+URL con $_SERVER

Encontré el error. Después de pensar sobre el algoritmo di con el error mientras corría.

El problema estaba en la expresión regular para sustituir un valor por otro.

Quedó así

Código PHP:
Ver original
  1. <?php
  2.  /*
  3.      * busca y sustituye un patron dentro de una URL para
  4.      * eliminar ese patron y sustituirlo para crear una nueva URL
  5.      * evitando repetir el patron en la URL
  6.      *
  7.      * por ejemplo evitar::          ?page=1&page=2&page=3
  8.      */
  9.     public  function    createURL($url, $id, $page)
  10.     {
  11.         //si el identificador no se encuentra en la url
  12.         if(substr_count($url, $id)  ==0)
  13.         {
  14.             //agrega al final de la url el identificador y el valor que le corresponde
  15.             $url  =   $url."&".$id."=".$page;
  16.         }
  17.        
  18.         //sino busca y reemplaza el identificador en la url por su nuevo valor
  19.         else
  20.       {
  21.             $url  =   preg_replace("/(".$id."=[[:digit:]])/i", $id."=".$page, $url);
  22.         }
  23.        
  24.         return  $url;
  25.     }
  26. ?>
__________________
Ayúdame a hacerlo por mi mismo.
  #13 (permalink)  
Antiguo 07/01/2014, 08:19
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 2 meses
Puntos: 397
Respuesta: PHP+HTML+URL con $_SERVER

mmm no, me parece que aún te complicas mucho la vida

Mira este es el método que usé en una clase Paginador que hice basándome en tu idea

Código PHP:
Ver original
  1. protected function processUrl($page){
  2.     list($prefix, $query_string) = explode('.php', $_SERVER['REQUEST_URI']);
  3.     $prefix = end( explode('/', $prefix) );
  4.     $url = preg_replace('/\&?page\=(\d)/', '', $query_string);
  5.     $url = trim($url, '&');
  6.     $url = "{$url}&page={$page}";
  7.     $url = "{$prefix}.php?{$url}";
  8.     $url = str_replace( array('?&', '??'), array('?', '?'), $url );
  9.     return $url;
  10. }

Como ves lo único que recibe es el el número de la página. Ya la función es la que se encarga de obtener la url, procesar los parametros y añadir el parámetro del paginador.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #14 (permalink)  
Antiguo 07/01/2014, 11:53
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 12 años
Puntos: 84
Respuesta: PHP+HTML+URL con $_SERVER

Pues si te soy sincero pensé igual que tú, pero de repente me surgió el problema de que como bien dijistes puede que en una misma página haya dos o más paginaciones. por lo tanto cada paginación tiene que tener un identificador único para saber qué url está creando en cada momento.

en otras palabras:

si la url final podría ser en mi caso:

http: //miweb.com? articulos=camisetas &page_camisetas=30& page_parches=2

en tu caso siempre quedaría así:

http: //miweb.com? articulos=camisetas &page=30&page=2

y ahí es donde viene el problema

¿cual es la paginación para camisetas y cual es la paginación dentro de camisetas para parches para camisetas (parches que se pegan con el calor de la plancha)?

por eso decidí que cada objeto/form/paginación debe tener un identificador único. entonces a la hora de crear la url el sistema solo busca el identificador de ese objeto y cambia el nuevo valor, manteniendo el mismo orden de las paginaciones y solo cambiaría el valor de la paginación.

¿o me he equivocado :S? ya no se!! jajajaja :D

EDITO:

es un placer que utilices mi código, para eso está :D
__________________
Ayúdame a hacerlo por mi mismo.
  #15 (permalink)  
Antiguo 07/01/2014, 11:59
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 2 meses
Puntos: 397
Respuesta: PHP+HTML+URL con $_SERVER

Claro, pero la url es la que debe de generarse automáticamente, si cuando creas la instancia de la clase defines el identificador simplemente modificas la funcion de esta manera:

Código PHP:
Ver original
  1. protected function processUrl($page){
  2.     list($prefix, $query_string) = explode('.php', $_SERVER['REQUEST_URI']);
  3.     $prefix = end( explode('/', $prefix) );
  4.     $url = preg_replace('/\&?'.$this->idpage.'\=(\d)/', '', $query_string);
  5.     $url = trim($url, '&');
  6.     $url = "{$url}&{$this->idpage}={$page}";
  7.     $url = "{$prefix}.php?{$url}";
  8.     $url = str_replace( array('?&', '??'), array('?', '?'), $url );
  9.     return $url;
  10. }

De donde $this->idpage es el parámetro de la url del paginador.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #16 (permalink)  
Antiguo 07/01/2014, 12:07
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 12 años
Puntos: 84
Respuesta: PHP+HTML+URL con $_SERVER

tienes razón! :D yo lo hice pensando en que tal vez ese método pueda o quieran usarlo para otra cosa, por eso pasé el parámetro en el método y no utilicé el $this->id pero es cierto, pensándolo bien ¿para qué iban a querer utilizar ese método si no es para paginar? :D
__________________
Ayúdame a hacerlo por mi mismo.
  #17 (permalink)  
Antiguo 07/01/2014, 12:11
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 2 meses
Puntos: 397
Respuesta: PHP+HTML+URL con $_SERVER

Claro, precisamente por eso ese metodo de la clase lo coloqué como protegido, ya que no tiene mucho sentido usarlo por fuera de la misma.

Por cierto como llevas el paginador? (puedes mostrarlo como lo has modificado hasta el momento, aunque creo que sería en el tema que creaste como aporte )

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.

Etiquetas: server
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:34.