Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal tenho um codigo de paginação que esta me dando uma dor de cabeça danada, ele funciona bem como uma paginação normal, mas eu uso no topo do formulário um form de busca por parametros, em um combo seleciona o parametro e em em campo de texto digita o ke ker buscar naquela coluna.
Funciona direitinho a primeira página da busca de todos os parametros, porem na hora de ir para a segunfa pagina de resultados se for sem filtro funciona na boa, porém com filtros não funciona eu não to sabendo como passar a avaria´vel do filtro
Ex tenho 600 registros em meu bd, uma consulta sem filtros vai me retornar 30 paginas com 20 registros cada, e a paginação funciona
Uma consulta com um filtro me retorna 200 resultados em 10 paginas, porem na hora de paginar não funciona, e ele vai pular para a segunda página de registros sem o filtro,
Segue o código
<h1 class="titulossubmenu">Relatório de Modelos de Impressora Cadastrados no Banco de Dados</h1>
<?php
$numeroregistros = 20;
$pagina = $_GET["pagina"];
if (!$pagina) {
$pagina = 1;
}
else {
$pagina = $pagina;
}
$paginainicial = $pagina - 1;
$inicial = $paginainicial * $numeroregistros;
if ($_POST["filtro"] == 'T') {
$totalregistros = @mysql_num_rows(@mysql_query("SELECT * FROM modelos, marcas, tipos WHERE modelos.mod_tipo_id = tipos.tipo_id AND modelos.mod_marca_id = marcas.mar_id AND tipos.tipo_tipo LIKE '%$_POST[busca]%'"));
}
else if ($_POST["filtro"] == 'M') {
$totalregistros = @mysql_num_rows(@mysql_query("SELECT * FROM modelos, marcas, tipos WHERE modelos.mod_tipo_id = tipos.tipo_id AND modelos.mod_marca_id = marcas.mar_id AND marcas.mar_marca LIKE '%$_POST[busca]%'"));
}
else if ($_POST["filtro"] == 'MO') {
$totalregistros = @mysql_num_rows(@mysql_query("SELECT * FROM modelos, marcas, tipos WHERE modelos.mod_tipo_id = tipos.tipo_id AND modelos.mod_marca_id = marcas.mar_id AND modelos.mod_modelo LIKE '%$_POST[busca]%'"));
}
else {
$totalregistros = @mysql_num_rows(@mysql_query("SELECT * FROM modelos, marcas, tipos WHERE modelos.mod_tipo_id = tipos.tipo_id AND modelos.mod_marca_id = marcas.mar_id"));
}
$totalpaginas = ceil($totalregistros / $numeroregistros);
// consulta o banco de dados
if ($_POST["filtro"] == 'T') {
$consulta ="SELECT modelos.mod_id, modelos.mod_tipo_id, modelos.mod_marca_id, modelos.mod_modelo, marcas.mar_id, marcas.mar_marca, tipos.tipo_id, tipos.tipo_tipo FROM modelos, marcas, tipos WHERE modelos.mod_tipo_id = tipos.tipo_id AND modelos.mod_marca_id = marcas.mar_id AND tipos.tipo_tipo LIKE '%$_POST[busca]%' ORDER BY modelos.mod_modelo ASC LIMIT $inicial, $numeroregistros";
}
else if ($_POST["filtro"] == 'M') {
$consulta ="SELECT modelos.mod_id, modelos.mod_tipo_id, modelos.mod_marca_id, modelos.mod_modelo, marcas.mar_id, marcas.mar_marca, tipos.tipo_id, tipos.tipo_tipo FROM modelos, marcas, tipos WHERE modelos.mod_tipo_id = tipos.tipo_id AND modelos.mod_marca_id = marcas.mar_id AND marcas.mar_marca LIKE '%$_POST[busca]%' ORDER BY modelos.mod_modelo ASC LIMIT $inicial, $numeroregistros";
}
else if ($_POST["filtro"] == 'MO') {
$consulta ="SELECT modelos.mod_id, modelos.mod_tipo_id, modelos.mod_marca_id, modelos.mod_modelo, marcas.mar_id, marcas.mar_marca, tipos.tipo_id, tipos.tipo_tipo FROM modelos, marcas, tipos WHERE modelos.mod_tipo_id = tipos.tipo_id AND modelos.mod_marca_id = marcas.mar_id AND modelos.mod_modelo LIKE '%$_POST[busca]%' ORDER BY modelos.mod_modelo ASC LIMIT $inicial, $numeroregistros";
} $consulta = "SELECT modelos.mod_id, modelos.mod_tipo_id, modelos.mod_marca_id, modelos.mod_modelo, marcas.mar_id, marcas.mar_marca, tipos.tipo_id, tipos.tipo_tipo FROM modelos, marcas, tipos WHERE modelos.mod_tipo_id = tipos.tipo_id AND modelos.mod_marca_id = marcas.mar_id ORDER BY modelos.mod_modelo ASC LIMIT $inicial, $numeroregistros";
}
$resultado = @mysql_query($consulta, $conexao) or die(mysql_error());
?>
<div class="busca">
<form id="form" method="post" action="">
<select id="filtro" name="filtro" size="1">
<option value="" selected="selected">Escolha o Filtro</option>
<option value="T" <?php if($_POST["filtro"] == "T") { echo "selected=\"selected\""; } ?>>Tipo da Impressora</option>
<option value="M" <?php if($_POST["filtro"] == "M") { echo "selected=\"selected\""; } ?>>Marca da Impressora</option>
<option value="MO" <?php if($_POST["filtro"] == "MO") { echo "selected=\"selected\""; } ?>>Modelo da Impressora</option>
</select>
<input type="text" id="busca" name="busca" size="52" maxlength="50" value="<?php echo $_POST["busca"];?>" />
<input type="submit" id="submit" name="submit" value="Consultar" class="minibotoes" />
</form>
</div><!--fim de busca-->
<?php?>
<div class="numeroregistros">
<?php
if ($totalregistros != 0) {
if ($totalpaginas == 1) {
if ($totalregistros == 1) {
echo "".$totalregistros." modelo encontrado em ".$totalpaginas." página";
}
else {
echo "".$totalregistros." modelos encontrados em ".$totalpaginas." página";
}
}
else {
echo "".$totalregistros." modelos encontrados em ".$totalpaginas." páginas";
}
}
?>
</div><!--fim de numeroregistros-->
<?php
if ($totalregistros == 0) {
?>
<div class="bancovazio">
<p>Nenhum modelo encontrado no banco de dados</p>
</div><!--fim de banco vazio-->
<?php
}?>
<div class="cabecalhovinteecincoporcento">Tipo da Impressora</div>
<div class="cabecalhovinteecincoporcento">Marca da Impressora</div>
<div class="cabecalhotrintaporcento">Modelo da Impressora</div>
<div class="cabecalhodezporcento"> </div>
<div class="cabecalhodezporcento"> </div>
<?php
while ($registro = @mysql_fetch_row($resultado)) {
?>
<div class="linharegistros">
<div class="colunavinteecincoporcento"><?php echo "$registro[7]";?></div>
<div class="colunavinteecincoporcento"><?php echo "$registro[5]";?></div>
<div class="colunatrintaporcento"><?php echo "$registro[3]";?></div>
<div class="colunadezporcento"><a href="index.php?menu=gerenciar&submenu=editarmodelo&id=<?php echo "$registro[0]";?>">Editar</a></div>
<div class="colunadezporcento"><a href="index.php?menu=gerenciar&submenu=excluirmodelo&id=<?php echo "$registro[0]";?>">Excluir</a></div>
</div><!--fim de linharegistros-->
<?php
}
// se o número total de registros for maior que o número máximo de registros por página, mostra a paginação
if ($totalregistros > $numeroregistros) {
?>
<div class="paginaresultados">
<?php
if ($pagina > 1) {
?>
<span class="anterior"><a href="index.php?menu=gerenciar&submenu=visualizarmodelos&pagina=<?php echo ($pagina - 1);?>">Página Anterior</a></span>
<?php
}
else {
?>
<span class="inativo">Página Anterior</span>
<?php
}
?>
<div class="contaregistros">Página <?php echo "$pagina";?> de <?php echo "$totalpaginas";?></div>
<?php
if ($pagina < $totalpaginas) {
?>
<span class="proxima"><a href="index.php?menu=gerenciar&submenu=visualizarmodelos&pagina=<?php echo ($pagina + 1);?>">Próxima Página</a></span>
<?php
}
else {
?>
<span class="inativo">Próxima Página</span>
<?php
}
?>
</div><!--fim de paginaresultados-->
<?php
}
?>
<?php
}
?>se alguém puder der um help de como posso resolver isso, em suma, o que eu precisaria era que fosse preservado a opção do select e o que está escrito no textbox de pesquisa quando fosse para apágina 2. mas não estou conseguindo fazerDesde já agradecidoCarregando comentários...