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<form action="index.php" method="post">
<input type="text" name="TxtBuscar" value="Ingresar texto de búsqueda" />
<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:
Ver original<?php
(
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';
$p = $_GET['p'];
else
$p = 1;
$t = '';
$t = $_GET['t'];
else if(isset($_POST['TxtBuscar'])) $t = $_POST['TxtBuscar'];
else if(isset($_GET['categoria'])) $t = $_GET['categoria'];
?>
<?php
{
$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:
Ver original<?php
function paginar($datos, $l, $p, $t) {
// DEFINIMOS LA CANTIDAD DE PÁGINAS
// 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."\"> « Página Anterior</a> ";
for($i=$pagInicio; $i<=$pagFin; $i++) {
if ($i == $p)
echo "<strong>$i</strong> ";
else
echo "<a href=\"index.php?p=$i&t=$t\">$i</a> ";
}
if ($p<$paginas)
echo "<a href=\"index.php?p=" . ($p+1) . "&t=$t\">Página Siguiente » </a>";
echo '</div>';
return;
}
?>