Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Definir como la paginacion tiene que mostrar los resultados

Estas en el tema de Definir como la paginacion tiene que mostrar los resultados en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Muy buenas, tengo un script para paginar resultados, llamado "paginacion", tengo un metodo dentro del mismo llamado "MostrarResultados", me gustaria saber si al llamar dicho ...
  #1 (permalink)  
Antiguo 23/08/2011, 09:38
 
Fecha de Ingreso: mayo-2008
Ubicación: España
Mensajes: 130
Antigüedad: 16 años, 6 meses
Puntos: 3
Definir como la paginacion tiene que mostrar los resultados

Muy buenas, tengo un script para paginar resultados, llamado "paginacion", tengo un metodo dentro del mismo llamado "MostrarResultados", me gustaria saber si al llamar dicho metodo se pudiera definir como tiene que mostrarme los resultados
, ya que necesito en una pagina que me los muestre de forma diferente a otra.

Gracias
  #2 (permalink)  
Antiguo 23/08/2011, 10:42
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Definir como la paginacion tiene que mostrar los resultados

Sin mostrar el código que usas es complicado decirte, pero en teoría me suena que con un if() se podría manejar eso.

Saludos.
  #3 (permalink)  
Antiguo 23/08/2011, 11:10
 
Fecha de Ingreso: mayo-2008
Ubicación: España
Mensajes: 130
Antigüedad: 16 años, 6 meses
Puntos: 3
Respuesta: Definir como la paginacion tiene que mostrar los resultados

Lo he modificado para probar otra forma, pero te lo pongo como lo tenia antes, sería algo así:

Código PHP:
// Metodo para mostrar los resultados obtenidos
function mostrar_resultados($template) {
        
    
$this -> mysql_query($this -> q); // La consulta
        
    
while ($dato mysql_fetch_assoc($this -> q)) {

        echo 
$template;
            
    }


Fuera de la clase, llamo al metodo así:


Código PHP:
<ul>

    <?php
    $paginacion 
= new paginacion(variables_aqui);

    
$paginacion -> mostrarResultados("
        <li>"
.$paginacion -> $dato[nombre]."</li>
    "
);
?>

</ul>
Lo que intento hacer es que en este caso, se muestre un item de lista hasta que acabe el bucle del metodo, luego podria poner en otra pagina lo mismo pero cambiando la forma en que se presentan los datos. La lista se crea correctamente, el problema esta en que no se imprimen los valores cuando llamo a la variable "$paginacion -> $dato[nombre]". No se si me he explicado bien...
  #4 (permalink)  
Antiguo 23/08/2011, 11:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Definir como la paginacion tiene que mostrar los resultados

Creo que ya entendí, lo que podrías hacer es poner algo así:
Código PHP:
Ver original
  1. function mostrar_resultados($template, $column) {
  2.     $this->q = mysql_query($this->q); // La consulta
  3.     while ($dato = mysql_fetch_assoc($this->q)) {
  4.         echo sprintf($template, $dato[$columna]);
  5.     }
  6. }

Luego lo mandas llamar así:
Código PHP:
Ver original
  1. $paginacion -> mostrarResultados("<li>%s</li>", "nombre");

Saludos.
  #5 (permalink)  
Antiguo 23/08/2011, 11:42
 
Fecha de Ingreso: mayo-2008
Ubicación: España
Mensajes: 130
Antigüedad: 16 años, 6 meses
Puntos: 3
Respuesta: Definir como la paginacion tiene que mostrar los resultados

Muchas gracias, lo pruebo y te digo algo. Saludos
  #6 (permalink)  
Antiguo 23/08/2011, 11:48
 
Fecha de Ingreso: mayo-2008
Ubicación: España
Mensajes: 130
Antigüedad: 16 años, 6 meses
Puntos: 3
Respuesta: Definir como la paginacion tiene que mostrar los resultados

Me funciona, muchas gracias. Sino es mucha molestia, ¿podrias explicarme porque donde pone "%s" sale el resultado? De nuevo, gracias.

Ahora voy a probar si puedo usar más columnas del mismo modo.
  #7 (permalink)  
Antiguo 23/08/2011, 11:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Definir como la paginacion tiene que mostrar los resultados

Lee la documentación de sprintf(), básicamente lo que hace es reemplazos por los parámetros de entrada, %s, para una cadena, %d, para números, etc. en la documentación te explica como se usa.

Ahora si lo quieres hacer por columnas múltiples yo lo modificaría así:
Código PHP:
Ver original
  1. function mostrar_resultados($template, array $columnas) {
  2.     $this->q = mysql_query($this->q); // La consulta
  3.  
  4.     while ($dato = mysql_fetch_assoc($this -> q)) {
  5.         $valores = array();
  6.         $valores[] = $template; // El primero siempre es el template
  7.         foreach ($columnas as $columna) { // Sustituimos las columnas por los valores
  8.                if (isset($dato[$columna)) $valores[] = $dato[$columna];
  9.         }
  10.         echo call_user_func_array('sprintf', $valores);
  11.     }
  12. }

Así lo podrías usar por ejemplo:
Código PHP:
Ver original
  1. $paginacion->mostrarResultados("<li>%s</li>", array("nombre"));
  2. // o
  3. $paginacion->mostrarResultados("<li>%s - %s</li>", array("nombre", "edad"));

Saludos.
  #8 (permalink)  
Antiguo 23/08/2011, 11:57
 
Fecha de Ingreso: mayo-2008
Ubicación: España
Mensajes: 130
Antigüedad: 16 años, 6 meses
Puntos: 3
Respuesta: Definir como la paginacion tiene que mostrar los resultados

Me autorespondo: acabo de ver la funcion sprintf en el manual de php, ahora entiendo por que el parámetro %s me devuelve el valor.

Saludos
  #9 (permalink)  
Antiguo 23/08/2011, 11:59
 
Fecha de Ingreso: mayo-2008
Ubicación: España
Mensajes: 130
Antigüedad: 16 años, 6 meses
Puntos: 3
Respuesta: Definir como la paginacion tiene que mostrar los resultados

Inapreciable tu ayuda, ahora mismo lo pongo en práctica. Muchas gracias

Etiquetas: metodo, paginacion, php
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 22:21.