Small problem with pure PHP pagination

0

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>&nbsp;&nbsp'; // 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>&nbsp;&nbsp'; // paginas anteriores
            } 
        }

        echo " <b>".$p."</b>&nbsp;&nbsp "; // 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>&nbsp;&nbsp'; // paginas posteriores
            }
        }
        echo '<a href="pesquisar.php?pagina='.$pags.'""" target="_self"> >> </a>&nbsp;&nbsp'; // 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.

    
asked by anonymous 17.07.2015 / 19:03

0 answers