Bruno
Problemas com paginação no php
09 de December de 2015 às 06:05PM
Pessoal é o seguinte estou com um script de paginação em php utilizando PDO que pega os itens do banco no intervalo de duas datas
a consulta e a paginação esta sendo feita corretamente o problema é quando clico no link da paginação que deveria ir para
exemplo para a pagina 2 ele na verdade faz um refresh da página segue o codigo.
// arquivo teste2.php que é o arquivo da paginação

<?php
/* Constantes de configuração */
define('QTDE_REGISTROS', 2);
define('RANGE_PAGINAS', 1);







/* Recebe o número da página via parâmetro na URL */
$pagina_atual = (isset($_GET['page'])) ? $_GET['page'] : 1;

/* Calcula a linha inicial da consulta */
$linha_inicial = ($pagina_atual-1) * QTDE_REGISTROS;

/* Cria uma conexão PDO com MySQL */
$opcoes = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8');
$pdo = new PDO("mysql:host=localhost; dbname=materiais;", "root", "", $opcoes);

/* Instrução de consulta para paginação com MySQL */
$sql = "select p.nome_prod, p.descricao, pd.quantidade, DATE_FORMAT(pd.data_entrada,'%d/%m/%Y') from produtos p inner join prod_entrada pd on p.id_prod = pd.id_prod where pd.data_entrada between '$data1' and DATE_ADD('$data2', INTERVAL 1 DAY) LIMIT {$linha_inicial}, " . QTDE_REGISTROS;
$stm = $pdo->prepare($sql);
$stm->execute();
$dados = $stm->fetchAll(PDO::FETCH_OBJ);

/* Conta quantos registos existem na tabela */
$sqlContador = "SELECT COUNT(*) AS total_pedido FROM produtos p inner join prod_entrada pd on p.id_prod = pd.id_prod where pd.data_entrada between '$data1' and DATE_ADD('$data2', INTERVAL 1 DAY)";
$stm = $pdo->prepare($sqlContador);
$stm->execute();
$valor = $stm->fetch(PDO::FETCH_OBJ);

/* Idêntifica a primeira página */
$primeira_pagina = 1;


/* Cálcula qual será a última página */
$ultima_pagina = ceil($valor->total_pedido/QTDE_REGISTROS);

/* Cálcula qual será a página anterior em relação a página atual em exibição */
$pagina_anterior = ($pagina_atual > 1) ? $pagina_atual -1 : 0 ;

/* Cálcula qual será a pŕoxima página em relação a página atual em exibição */
$proxima_pagina = ($pagina_atual < $ultima_pagina) ? $pagina_atual +1 : 0 ;

/* Cálcula qual será a página inicial do nosso range */
$range_inicial = (($pagina_atual - RANGE_PAGINAS) >= 1) ? $pagina_atual - RANGE_PAGINAS : 1 ;

/* Cálcula qual será a página final do nosso range */
$range_final = (($pagina_atual + RANGE_PAGINAS) <= $ultima_pagina ) ? $pagina_atual + RANGE_PAGINAS : $ultima_pagina ;

/* Verifica se vai exibir o botão "Primeiro" e "Pŕoximo" */
$exibir_botao_inicio = ($range_inicial < $pagina_atual) ? 'mostrar' : 'esconder';

/* Verifica se vai exibir o botão "Anterior" e "Último" */
$exibir_botao_final = ($range_final > $pagina_atual) ? 'mostrar' : 'esconder';
?>
// arquivo teste.php

<form class="form-search" action="" method="post">
<p> <strong><h3> Escolha o Período de entrada de Produtos </h3></strong></p>
<table>
<tr>
<td><strong>Data Inicial </strong> </td>
<td> &nbsp;&nbsp;&nbsp;&nbsp; </td>
<td><strong>Data Final </strong> </blockquote></td>
</tr>
<tr>
<td> <input type="text" name="data1" id="cdata1" > </td>
<td> &nbsp;&nbsp;&nbsp;&nbsp; </td>
<td><input type="text" name="data2" id="cdata2"/> </td>
<td> <button type="submit" class="btn btn-primary" name="btbusca">Busca</button> </td>
</tr>
</table>
<br>
<?php

if (isset($_POST['btbusca'])) {

$data1 = null;
$data1 = $_POST['data1'];
$data2 = $_POST['data2'];

$data1 = date('Y-d-m', strtotime($data1));
$data2 = date('Y-d-m', strtotime($data2));

include_once 'teste2.php';
$data = "DATE_FORMAT(pd.data_entrada,'%d/%m/%Y')";

?>
<?php if (!empty($dados)): ?>
<table class="table table-striped table-bordered">
<thead>
<tr class='active'>
<th>Produto</th>
<th>Descrição</th>
<th>Quantidade</th>
<th>Data</th>
</tr>
</thead>
<tbody>
<?php foreach($dados as $artigo):?>

<tr>
<td><?=$artigo->nome_prod?></td>
<td><?=$artigo->descricao?></td>
<td><?=$artigo->quantidade?></td>
<td><?=$data?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>

<div class='box-paginacao'>
<a class='box-navegacao <?=$exibir_botao_inicio?>' href="teste.php?page=<?=$primeira_pagina?>" title="Primeira Página">Primeira</a>
<a class='box-navegacao <?=$exibir_botao_inicio?>' href="teste.php?page=<?=$pagina_anterior?>" title="Página Anterior">Anterior</a>

<?php
/* Loop para montar a páginação central com os números */
for ($i=$range_inicial; $i <= $range_final; $i++):
$destaque = ($i == $pagina_atual) ? 'destaque' : '' ;


echo "<a href='teste.php?page=$i'>".$i."</a> "; ?>
<?php endfor; ?>

<a class='box-navegacao <?=$exibir_botao_final?>' href="teste.php?page=<?=$proxima_pagina?>" title="Próxima Página">Próxima</a>
<a class='box-navegacao <?=$exibir_botao_final?>' href="teste.php?page=<?=$ultima_pagina?>" title="Última Página">Último</a>
</div>
<?php else: ?>
<p class="bg-danger">Nenhum registro foi encontrado!</p>
<?php endif; ?>




<?php }?>
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.