Foros del Web » Programando para Internet » PHP »

Paginacion de resultados de un array en una búsqueda por 2 campos

Estas en el tema de Paginacion de resultados de un array en una búsqueda por 2 campos en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 25/04/2016, 02:09
 
Fecha de Ingreso: enero-2014
Mensajes: 91
Antigüedad: 10 años, 3 meses
Puntos: 2
Paginar los resultados de una búsqueda en un array

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 búsqueda que realizo 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 al mostrarme los resultados de la búsqueda por el input, me muestra correctamente la primera página, porque 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, y por tanto, me dice que no se han encontrado resultados.

index.php

Código HTML:
Ver original
  1. <form action="index.php" method="post">
  2.  
  3. <input type="text" name="TxtBuscar" value="Ingresar texto de búsqueda" />
  4.  
  5.  </form>
  6.  
  7.         <div><a href=\"index.php?categoria=administrativo\">Administrativo</a></div>
  8.         <div><a href=\"index.php?categoria=directorcomercial\">Director comercial</a></div>
  9.         <div><a href=\"index.php?categoria=gerente\">Gerente</a></div>
  10.         <div><a href=\"index.php?categoria=informatico\">Informático</a></div>
  11.         <div><a href=\"index.php?categoria=mozoalmacén\">Mozo Almacén</a></div>

Código PHP:
Ver original
  1. <?php
  2.  
  3. $datos = array
  4.                 (
  5.                 array('administrativo','Maria','25'),
  6.                 array('directorcomercial','Antonio','45'),
  7.                 array('gerente','Susana','37'),
  8.                 array('administrativo','Luis','28'),
  9.                 array('mozoalmacén','Antonio','38'),
  10.                 array('informatico','Susana','37'),
  11.                 array('administrativo','Maria','25'),
  12.                 array('directorcomercial','Antonio','45'),
  13.                 array('gerente','Susana','37'),
  14.                 array('administrativo','Maria','25'),
  15.                 array('directorcomercial','Antonio','45'),
  16.                 array('gerente','Susana','37')
  17.                 );
  18.  ?>
  19.  
  20.  <?php
  21.      
  22.      include_once 'paginar.php';         
  23.  
  24.      if (isset($_GET['p']))
  25.        $p = $_GET['p'];
  26.      else
  27.        $p = 1;
  28.  
  29.      $t = '';
  30.      if (isset($_GET['t']))
  31.        $t = $_GET['t'];
  32.      else if(isset($_POST['TxtBuscar']))
  33.        $t = $_POST['TxtBuscar'];
  34.      else if(isset($_GET['categoria']))  
  35.        $t = $_GET['categoria'];
  36.        
  37.  ?>
  38.  
  39.  
  40.  <?php
  41.        
  42.      if (isset($t) && !empty($t))
  43.      {        
  44.          
  45.          $coincidencias = array();
  46.                  
  47.                
  48.             foreach($datos as $valor) {
  49.  
  50.                 //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
  51.  
  52.                 if (!empty($_POST["TxtBuscar"])) {        
  53.                     $cadena = $valor[1];  //busca por el nombre, la búsqueda la hace bien, pero al paginar NO muestra los resultados                                  
  54.                 } else {        
  55.                     $cadena = $valor[0];  //busca por la categoria, la búsqueda y la paginación la hace perfectamente
  56.                 }      
  57.                
  58.          
  59.          $encontrar_coincidencia = stripos($cadena, $t);
  60.              
  61.               if ($encontrar_coincidencia !== false) {                   
  62.                         $coincidencias[] = $valor;
  63.                                                                              
  64.              }           
  65.          }
  66.                  
  67.      }
  68.      
  69.      else  
  70.          
  71.          $coincidencias = $datos;
  72.                      
  73.  
  74.  ?>
  75.  
  76. <?php      
  77.  
  78. //Aqui ponemos el número de elementos que queremos que aparezca por página, en este caso 3
  79.    paginar($coincidencias, 3, $p, $t);
  80.  
  81. ?>
En este archivo genero todo el código referente a la muestra de resultados y la paginación
paginar.php
Código PHP:
Ver original
  1. <?php
  2.  
  3.      function paginar($datos, $l, $p, $t) {
  4.              
  5.      // DEFINIMOS LA CANTIDAD DE PÁGINAS
  6.      $paginas = ceil(count($datos) / $l);
  7.      // CONDICION DE INICIO
  8.      $inicio = ($p-1)*$l;
  9.      // CONDICION DE FINAL
  10.      $final = $p*$l;
  11.  
  12. // LISTAMOS LAS PÁGINAS
  13.       echo '<div id="paginas">';
  14.       if ($p>1)        
  15.      echo "<a href=\"index.php?p=" . ($p-1) . "&t=".$t."\">&nbsp;« P&aacute;gina Anterior</a>&nbsp;";
  16.      
  17.       for($i=$pagInicio; $i<=$pagFin; $i++) {
  18.          if ($i == $p)
  19.             echo "<strong>$i</strong>&nbsp;";
  20.          else            
  21.         echo "<a href=\"index.php?p=$i&t=$t\">$i</a>&nbsp;";
  22.       }
  23.      
  24.       if ($p<$paginas)        
  25.      echo "<a href=\"index.php?p=" . ($p+1) . "&t=$t\">P&aacute;gina Siguiente »&nbsp</a>";
  26.       echo '</div>';
  27.  
  28. return;
  29.    }
  30.  
  31. ?>

Última edición por pedromir; 24/05/2016 a las 04:33

Etiquetas: campos, paginacion, resultados
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 03:06.