Comunidad de diseño web y desarrollo en internet online

Realizar una consulta en un array y paginar sus resultados

Citar            
MensajeEscrito el 30 May 2016 09:05 am
Hola a tod@s
Estoy aprendiendo a programar en php y mis conocimientos son todavía muy básicos, así que necesito un poco de ayuda, mi problema es el siguiente:

Necesito paginar los resultados de una consulta que realizo en un array a través de un input, por el campo nombre $valor[1] y de unos enlaces por el campo categoría $valor[0] en el caso de la categoría me funciona perfectamente, pero en el caso del input al mostrarme los resultados de la búsqueda, me muestra correctamente la primera página, pero al pinchar en página 2, me busca los siguientes resultados en el campo categoria, que corresponde a los enlaces y no en el campo nombre, que sería lo suyo y por tanto, en la segunda página me dice que no se han encontrado resultados.

Código HTML :

<form action="index.php" method="post">
 
<input type="text" name="TxtBuscar" value="Ingresar texto de búsqueda" />
 
 </form>
 
        <div><a href=\"index.php?categoria=administrativo\">Administrativo</a></div>
        <div><a href=\"index.php?categoria=directorcomercial\">Director comercial</a></div>
        <div><a href=\"index.php?categoria=gerente\">Gerente</a></div>
        <div><a href=\"index.php?categoria=informatico\">Informático</a></div>
        <div><a href=\"index.php?categoria=mozoalmacén\">Mozo Almacén</a></div>


Código PHP :

<?php
 
$datos = array
                (
                array('administrativo','Maria','25'),
                array('directorcomercial','Antonio','45'),
                array('gerente','Susana','37'),
                array('administrativo','Luis','28'),
                array('mozoalmacén','Antonio','38'),
                array('informatico','Susana','37'),
                array('administrativo','Maria','25'),
                array('directorcomercial','Antonio','45'),
                array('gerente','Susana','37'),
                array('administrativo','Maria','25'),
                array('directorcomercial','Antonio','45'),
                array('gerente','Susana','37')
                );
 ?>
 
 <?php
     
     include_once 'paginar.php';          
 
     if (isset($_GET['p']))
       $p = $_GET['p'];
     else
       $p = 1;
 
     $t = '';
     if (isset($_GET['t']))
       $t = $_GET['t'];
     else if(isset($_POST['TxtBuscar']))
       $t = $_POST['TxtBuscar'];
     else if(isset($_GET['categoria']))  
       $t = $_GET['categoria'];
        
 ?>
 
 <?php 
        
     if (isset($t) && !empty($t))
     {        
         
         $coincidencias = array();
                 
                
            foreach($datos as $valor) {
 
                //Con este if me hace la búsqueda por un campo o por otro en función de que los datos provengan del input o de los enlaces
 
                if (!empty($_POST["TxtBuscar"])) {         
                    $cadena = $valor[1];  //busca por el nombre, la búsqueda la hace bien, pero al paginar NO muestra los resultados                                  
                } else {         
                    $cadena = $valor[0];  //busca por la categoria, la búsqueda y la paginación la hace perfectamente
                }       
                
         
         $encontrar_coincidencia = stripos($cadena, $t); 
             
              if ($encontrar_coincidencia !== false) {                   
                        $coincidencias[] = $valor;
                                                                             
             }           
         }
                 
     }
     
     else  
         
         $coincidencias = $datos;                     
 
 ?>
 
<?php      
 
//Aqui ponemos el número de elementos que queremos que aparezca por página, en este caso 3
   paginar($coincidencias, 3, $p, $t);
 
?>


En este archivo genero todo el código referente a la muestra de resultados y la paginación
paginar.php

Código PHP :


<?php
 
     function paginar($datos, $l, $p, $t) { 
             
     // DEFINIMOS LA CANTIDAD DE PÁGINAS
     $paginas = ceil(count($datos) / $l);
     // CONDICION DE INICIO
     $inicio = ($p-1)*$l;
     // CONDICION DE FINAL
     $final = $p*$l;
 
// LISTAMOS LAS PÁGINAS
      echo '<div id="paginas">';
      if ($p>1)         
     echo "<a href=\"index.php?p=" . ($p-1) . "&t=".$t."\">&nbsp;« P&aacute;gina Anterior</a>&nbsp;";
      
      for($i=$pagInicio; $i<=$pagFin; $i++) {
         if ($i == $p)
            echo "<strong>$i</strong>&nbsp;";
         else             
        echo "<a href=\"index.php?p=$i&t=$t\">$i</a>&nbsp;";
      }
      
      if ($p<$paginas)         
     echo "<a href=\"index.php?p=" . ($p+1) . "&t=$t\">P&aacute;gina Siguiente »&nbsp</a>";
      echo '</div>';
 
return;
   }
 
?>

Por pedromir

29 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 31 May 2016 11:19 am
Y porque no paginas con Jquery? te traes todos los datos, pero los muestras por paginas. Así, el cambio de pagina no tiene que viajar al servidor.


Un saludo,
David
soluciones web

Por conectart

Claber

128 de clabLevel



 

ceo

chrome
Citar            
MensajeEscrito el 31 May 2016 01:14 pm
Hola y gracias por responder
Es que el programa ya lo tengo terminado y me ha costado lo suyo y funciona perfectamente, pero lo tenía hecho para una consulta, a través del input y el problema me ha surgido ahora cuando he decidido añadirle una segunda consulta, que es cuando no me va y me gustaría intentar resolverlo con php, porque ya empiezo a entenderme con él, pero de Jquery no tengo ni idea, para mí sería empezar desde el principio y con un lenguaje que desconozco.

Por pedromir

29 de clabLevel



 

mozilla

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.