Hello, I have the following function that does the pagination according to what the user typed in the search input:
function pesquisar($botao, $input, $conteudo)
{
if(isset($_POST[$botao]) || $_GET['pagina'])
{
$busca = $_POST[$input]; // pega os dados que estao no campo para a pesquisa
$busca_divida = explode(',', $busca); // divide o que esta no campo por virgulas
$quant = count($busca_divida); // total de itens a serem pesquisados
$id_mostrado = array("");
$p = $_GET["pagina"]; // vai por isto na url
if(isset($p)) // verifica se está setado na url
{
$p = $p; // se sim a pagina recebe o que ela tem
}
else
{
$p = 1; // se nao ela recebe 1
}
$qnt = 10; // maximo de conteudo exibido por página
$inicio = ($p*$qnt) - $qnt; // calcula quantas páginas serão necessárias conforme o numero de itens por página x itens do banco
$sql = mysql_query("SELECT * FROM tbnews WHERE ".$conteudo." LIKE '%".$pesquisa."%' and publicar = 'Y' ORDER BY data DESC LIMIT $inicio, $qnt " );
$quant_campos = mysql_num_rows($sql); // cria uma variavel com o total de linhas no banco que correspondem a pesquisa
for($i = 0; $i < $quant ; $i++)
{
$pesquisa = $busca_divida[$i]; // para cada item do campo, faz um laço para percorrer e trazer o dado
if($quant_campos == 0)
{
echo "Nenhum resultado encontrado"; // se nao encontrar nada
}
else
{
while($linha = mysql_fetch_array($sql)) // se encontrar imprime eles na tela
{
$id = $linha['id'];
$titulo = $linha['titulo'];
$tags = $linha['tags'];
$data = $linha['data'];
$imagem = $linha['imagem'];
$apoio = $linha['apoio'];
$tipo = $linha['tipo'];
if ($tipo == 'I'){
$tipo = 24;
}
if ($tipo == 'G'){
$tipo = 56;
}
if(!array_search($id, $id_mostrado))
{
$imageThumb = "<a href='index.php?idConteudo=".$tipo."&idNoticia=".$id."' "
. "style='display:block; ]"
. "background-image:URL(common/thumb.php?src=../upload/noticias/".$imagem."&h=110&w=110); "
. "background-position:center; "
. "background-repeat:no-repeat; "
. "width:82px; "
. "height:82px; "
. "margin-right:10px; "
. "float:left;'> </a>";
$itemPrincipal = "".$imageThumb."<a href='index.php?idConteudo=".$tipo."&idNoticia=".$id."'>"
. "<h4 class='tituloListagem'>".$titulo."</h4> \n"
. "<h6 class='apoioListagem'>".$apoio."</h6> \n"
. "<span style='font-size:x-small; "
. "display:block; "
. "margin-top:3px; "
. "font-weight:normal;'> ".$data." </span> </a>"
. "<span style='font-size:x-small; "
. "display:block; "
. "margin-top:3px; "
. "font-weight:normal;'><b>Palavras-Chave:</b> ".$tags." </span> </a>"
. "<a href='?idConteudo=".$tipo."&idNoticia=".$id."'> <nobr> Leia mais...</nobr> </a> </p>";
echo $itemPrincipal;
array_push($id_mostrado, $id);
}
}
}
}
}
$sql_select_all = "SELECT * FROM tbnews WHERE ".$conteudo." LIKE '%".$pesquisa."%' and publicar = 'Y' ORDER BY data DESC "; // faz o mesmo select
$sql_query_all = mysql_query($sql_select_all); // executa a query
$total_registros = mysql_num_rows($sql_query_all); // conta quantos itens tem
$pags = ceil($total_registros/$qnt); // calcula quantas páginas terá e arredonda para cima.
$max_links = 3; //quantas páginas irão aparecer ao redor da página atual na paginação.
echo '<a href="pesquisar.php?pagina=1" target="_self"> << </a>  '; // primeira pagina
for($i = $p-$max_links; $i <= $p-1; $i++)
{
if($i > 0)
{
echo '<a href="pesquisar.php?pagina='.$i.'"" target="_self">' . $i . '</a>  '; // paginas anteriores
}
}
echo " <b>".$p."</b>   "; // pagina atual
for($i = $p+1; $i <= $p+$max_links; $i++)
{
if($i < $pags)
{
echo '<a href="pesquisar.php?pagina='.$i.'"" target="_self">' . $i . '</a>  '; // paginas posteriores
}
}
echo '<a href="pesquisar.php?pagina='.$pags.'""" target="_self"> >> </a>  '; // ultima pagina
}
The function makes a check if the data it will load comes from the input OR comes if it conforms to the last page of the url;
The function works pretty well right, except that it prints 2 times the paging part. One at the beginning of the listing and one at the end.
Can anyone help me?
Here is an image of how the code is printed.