Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Como faço para manter uma variável em uma paginação. Exemplo:
Quero paginar os resultados do 'mes' que equivale ao número
'1'
A primeira tela aparece normalmente a requisição, já na segunda dá erro
de argumentação no mysql, verificando os logs, notei que o valor da
variável não estava sendo passado.
Como posso manter esta variável?
Já tentei passar ela através da url porém a mesma não foi passada e
continua o erro de argumentação.
Qualquer ajuda....
<?php mb_http_input("iso-8859-1"); mb_http_output("iso-8859-1");
require_once('css.php'); ?>
<!doctype html>
<html>
<head>
<style type="text/css">
.table{ text-align:center}
.box{position:relative; float:right; width:300px; padding:10px; margin:10px; background:#DCF1F1; border:1px solid #CDE2ED;}
.global-div{width:900px; height:auto; min-height:300px; padding:0 15px 15px 15px; position:absolute; float:none; left:50%; margin:5px 0 0 -470px ; border:5px solid #fff; background:#fff; box-shadow:0 0 5px #999; -moz-box-shadow:0 0 5px #999; -webkit-box-shadow:0 0 5px #999; }
.global-div img{float:left; margin-right:20px; border:1px solid #eaeaea; z-index:500; }
h1{font:italic 4em Georgia, "Times New Roman", Times, serif; text-align:center; margin: -5px -20px 20px -20px; background:#111; color:#fff; padding:15px 5px; letter-spacing:-0.04em; text-shadow:1px 1px 5px #000; font-weight:normal;}
h2{font:3em Georgia, "Times New Roman", Times, serif;}
ul{list-style:none; margin-left:300px;}
ul li{display:inline; margin-right:50px;}
.paginacao a{color:#333; padding:3px 5px; border:1px solid #ccc; text-decoration:none; margin:0 3px;}
.paginacao a:hover{background:#333; color:#fff;}
.paginacao a.atual{font-weight:bold; background:#fff; color:#333; border:0; border-bottom:1px solid #ccc; font-size:1.6em;}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Listar Controle</title>
</head>
<body>
<p style="text-align: center">
<form name="form1" method="post" action="list_controle.php">
<p>
<label for="mes">Mês:</label>
<select name="mes" id="mes">
<option>SELECIONE </option>
<option value="01">Janeiro</option>
<option value="02">Fevereiro</option>
<option value="03">Março</option>
<option value="04">Abril</option>
<option value="05">Maio</option>
<option value="06">Junho</option>
<option value="07">Julho</option>
<option value="08">Agosto</option>
<option value="09">Setembro</option>
<option value="10">Outubro</option>
<option value="11">Novembro</option>
<option value="12">Dezembro</option>
</select>
<input type="submit" name="procurar" class="button custom" id="procurar" value="Procurar">
</p>
</form>
<table width="770" border="0" align="center">
<form name="form1" method="post" action="">
<tr>
<td>DATA</td>
<td>SERMÃO</td>
<td>IGREJA</td>
<td>ATUALIZAR</td>
<td>EXCLUIR</td>
</tr>
<?php
@$mes=$_POST['mes'];
if ( $mes=='SELECIONE' ) {
echo "<script language='JavaScript'>
alert('Selecione um Mes');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}
include "db.php" ; ?>
<?php
@$pag = ($_GET['pag']);
$pag = filter_var($pag, FILTER_VALIDATE_INT);
$inicio = 0;
$limite = 2 ;
if ($pag!='') $inicio = $pag - 1;
}
$busca_total = mysql_query("SELECT COUNT(*) as total FROM tb_controle");
$total = mysql_fetch_array($busca_total);
$total = $total['total'];
$busca = mysql_query("select * from tb_controle cWHERE MONTH(c.`data`) = '$mes' ORDER BY c .`data` ASC LIMIT $inicio, $limite");
if (mysql_num_rows($busca)>0)
{
while($linha = mysql_fetch_array($busca)){
$data = implode("/",array_reverse(explode("-", $linha['data'])));
?>
<tr>
<td> <?php echo $data ?></td>
<!-- Data vem da tb_controle-->
<td> <?php echo $linha['titulo'] ?></td>
<!-- titulo vem da tb_sermao e usa o idsermao da tb_controle-->
<td> <?php echo $linha['igreja'] ?></td>
<!-- igreja vem da tb_igreja e usa o idigreja na tb_controle-->
<td><a href="ed_controle.php?id=<?php echo $linha['idcontrole']; ?>">
<img src="img/ed.png" alt="Editar" title="Editar"></a></td>
<td><a href ="ex/fun_exc_controle.php?id=<?php echo $linha['idcontrole']; ?>" >
<img src="img/ex.png" alt="Excluir" title="Excluir"></a></td>
</tr>
</form>
<? } ?>
</table>
<br><br>
<?
$prox = $pag + 1;
$ant = $pag - 1;
$ultima_pag = ceil($total / $limite);
$penultima = $ultima_pag - 1;
$adjacentes = 2;
echo '<div class="paginacao">';
if ($pag>1)
{
$paginacao = '<a href="list_controle.php?pag='.$ant.'">anterior</a>';
}
if ($ultima_pag <= 5) for ($i=1; $i< $ultima_pag+1; $i++)
{
if ($i == $pag)
{
@$paginacao .= '<a class="atual" href="list_controle.php?pag='.$i.'">'.$i.'</a>';
} else {
@$paginacao .= '<a href="list_controle.php?pag='.$i.'">'.$i.'</a>';
}
}
}
if ($ultima_pag > 5) if ($i == $pag)
{
$paginacao .= '<a class="atual" href="list_controle.php?pag='.$i.'">'.$i.'</a>';
} else {
$paginacao .= '<a href="list_controle.php?pag='.$i.'">'.$i.'</a>';
}
}
$paginacao .= '...';
$paginacao .= '<a href="list_controle.php?pag='.$penultima.'">'.$penultima.'</a>';
$paginacao .= '<a href="list_controle.php?pag='.$ultima_pag.'">'.$ultima_pag.'</a>';
}
elseif($pag > (2 * $adjacentes) && $pag < $ultima_pag - 3)
{
$paginacao .= '<a href="list_controle.php?pag=1">1</a>';
$paginacao .= '<a href="list_controle.php?pag=1">2</a> ... ';
for ($i = $pag-$adjacentes; $i<= $pag + $adjacentes; $i++)
{
if ($i == $pag)
{
$paginacao .= '<a class="atual" href="list_controle.php?pag='.$i.'">'.$i.'</a>';
} else {
$paginacao .= '<a href="list_controle.php?pag='.$i.'">'.$i.'</a>';
}
}
$paginacao .= '...';
$paginacao .= '<a href="list_controle.php?pag='.$penultima.'">'.$penultima.'</a>';
$paginacao .= '<a href="list_controle.php?pag='.$ultima_pag.'">'.$ultima_pag.'</a>';
}
else {
$paginacao .= '<a href="list_controle.php?pag=1">1</a>';
$paginacao .= '<a href="list_controle.php?pag=1">2</a> ... ';
for ($i = $ultima_pag - (4 + (2 * adjacentes)); $i <= $ultima_pag; $i++)
{
if ($i == $pag)
{
$paginacao .= '<a class="atual" href="list_controle.php?pag='.$i.'">'.$i.'</a>';
} else {
$paginacao .= '<a href="list_controle.php?pag='.$i.'">'.$i.'</a>';
}
}
}
}
}
if ($prox <= $ultima_pag && $ultima_pag > 2)
{
$paginacao .= '<a href="list_controle.php?pag='.$prox.'">próxima »</a>';
}
echo $paginacao;
echo '</div>';
?>
</body>
</html>1. Troque
>
@$mes=$_POST['mes'];
por [inline]$mes = $_REQUEST['mes'] or 1;[/inline].
2. Adicione no início do script [inline]output_add_rewrite_var('mes', $mes);[/inline]
nao deu muito certo quando eu vou para a proxima pagina ele nao me mostra os resultados do mes selecionado
Mas mostra alguma coisa? Dá algum erro? Algum aviso? Aparece alguma coisa?
só altera a url http://localhost/versao2.0/list_controle.php?pag=2&mes=
na primeira pesquisa eu seleciono um mês ex: janeiro ele exibe os dados de janeiro mas quando clico pra ir pra próxima pagina a variável mês fica vazia ae não exibe a continuação da paginação !
se eu armazenar o mês selecionado em cookie e fazer a busca na hora da paginação daria certo? me ajudem ae pessoal !
Qual é a linha que imprime essa URL aí que você clicou??
todas essas linha que montam o link fika assim anterior 1 2 3 4 5 próximo
<? $prox = $pag + 1;
$ant = $pag - 1;
$ultima_pag = ceil($total / $limite);
$penultima = $ultima_pag - 1;
$adjacentes = 2;
echo '<div class="paginacao">';
if ($pag>1)
{
$paginacao = '<a href="list_agenda.php?pag='.$ant.'">anterior</a>';
}
if ($ultima_pag <= 5)
{
for ($i=1; $i< $ultima_pag+1; $i++)
{
if ($i == $pag)
{
@$paginacao .= '<a class="atual" href="list_agenda.php?pag='.$i.'">'.$i.'</a>';
} else {
@$paginacao .= '<a href="list_agenda.php?pag='.$i.'">'.$i.'</a>';
}
}
}
if ($ultima_pag > 5)
{
if ($pag < 1 + (2 * $adjacentes))
{
for ($i=1; $i< 2 + (2 * $adjacentes); $i++)
{
if ($i == $pag)
{
$paginacao .= '<a class="atual" href="list_agenda.php?pag='.$i.'">'.$i.'</a>';
} else {
$paginacao .= '<a href="list_agenda.php?pag='.$i.'">'.$i.'</a>';
}
}
$paginacao .= '...';
$paginacao .= '<a href="list_agenda.php?pag='.$penultima.'">'.$penultima.'</a>';
$paginacao .= '<a href="list_agenda.php?pag='.$ultima_pag.'">'.$ultima_pag.'</a>';
}
elseif($pag > (2 * $adjacentes) && $pag < $ultima_pag - 3)
{
$paginacao .= '<a href="list_agenda.php?pag=1">1</a>';
$paginacao .= '<a href="list_agenda.php?pag=1">2</a> ... ';
for ($i = $pag-$adjacentes; $i<= $pag + $adjacentes; $i++)
{
if ($i == $pag)
{
$paginacao .= '<a class="atual" href="list_agenda.php?pag='.$i.'">'.$i.'</a>';
} else {
$paginacao .= '<a href="list_agenda.php?pag='.$i.'">'.$i.'</a>';
}
}
$paginacao .= '...';
$paginacao .= '<a href="list_agenda.php?pag='.$penultima.'">'.$penultima.'</a>';
$paginacao .= '<a href="list_agenda.php?pag='.$ultima_pag.'">'.$ultima_pag.'</a>';
}
else {
$paginacao .= '<a href="list_agenda.php?pag=1">1</a>';
$paginacao .= '<a href="list_agenda.php?pag=1">2</a> ... ';
for ($i = $ultima_pag - (4 + (2 * adjacentes)); $i <= $ultima_pag; $i++)
{
if ($i == $pag)
{
$paginacao .= '<a class="atual" href="list_agenda.php?pag='.$i.'">'.$i.'</a>';
} else {
$paginacao .= '<a href="list_agenda.php?pag='.$i.'">'.$i.'</a>';
}
}
}
}
}
if ($prox <= $ultima_pag && $ultima_pag > 2)
{
$paginacao .= '<a href="list_agenda.php?pag='.$prox.'">próxima »</a>';
}
echo $paginacao;
echo '</div>';
?>você disse que cai numa url list_controle.php?pag=2&mes=, mas eu não vi você definindo o mês em lugar nenhum...
alterei aqui o método da URL para o get pra ver como estava passando vi que a minha URL esta assim
list_controle.php?mes=06&procurar=Procurar isso na primeira pesquisa quando seleciono o mês que eu desejo !
o erro esta aqui nos links da paginação que esta ficando assim list_controle.php?pag=1 e teria que esta dessa forma aqui
list_controle.php?mes=06&procurar=Procurar&pag=1
no meu codigo o trecho que monta a paginação esta com a url errada como posso corrigir isso ae galera me ajudem
esse é o trecho que monta a paginação
if ($pag>1)
{
$paginacao = '<a href="list_controle.php?pag='.$ant.'">anterior</a>';
}
if ($ultima_pag <= 5)
{
for ($i=1; $i< $ultima_pag+1; $i++)
{
if ($i == $pag)
{
@$paginacao .= '<a class="atual" href="list_controle.php?pag='.$i.'">'.$i.'</a>';
} else {
@$paginacao .= '<a href="list_controle.php?pag='.$i.'">'.$i.'</a>';
}
}
}
if ($ultima_pag > 5)
{
if ($pag < 1 + (2 * $adjacentes))
{
for ($i=1; $i< 2 + (2 * $adjacentes); $i++)
{
if ($i == $pag)
{
$paginacao .= '<a class="atual" href="list_controle.php?pag='.$i.'">'.$i.'</a>';
} else {
$paginacao .= '<a href="list_controle.php?pag='.$i.'">'.$i.'</a>';
}
}
$paginacao .= '...';
$paginacao .= '<a href="list_controle.php?pag='.$penultima.'">'.$penultima.'</a>';
$paginacao .= '<a href="list_controle.php?pag='.$ultima_pag.'">'.$ultima_pag.'</a>';
}
elseif($pag > (2 * $adjacentes) && $pag < $ultima_pag - 3)
{
$paginacao .= '<a href="list_controle.php?pag=1">1</a>';
$paginacao .= '<a href="list_controle.php?pag=1">2</a> ... ';
for ($i = $pag-$adjacentes; $i<= $pag + $adjacentes; $i++)
{
if ($i == $pag)
{
$paginacao .= '<a class="atual" href="list_controle.php?pag='.$i.'">'.$i.'</a>';
} else {
$paginacao .= '<a href="list_controle.php?pag='.$i.'">'.$i.'</a>';
}
}
$paginacao .= '...';
$paginacao .= '<a href="list_controle.php?pag='.$penultima.'">'.$penultima.'</a>';
$paginacao .= '<a href="list_controle.php?pag='.$ultima_pag.'">'.$ultima_pag.'</a>';
}
else {
$paginacao .= '<a href="list_controle.php?pag=1">1</a>';
$paginacao .= '<a href="list_controle.php?pag=1">2</a> ... ';
for ($i = $ultima_pag - (4 + (2 * adjacentes)); $i <= $ultima_pag; $i++)
{
if ($i == $pag)
{
$paginacao .= '<a class="atual" href="list_controle.php?pag='.$i.'">'.$i.'</a>';
} else {
$paginacao .= '<a href="list_controle.php?pag='.$i.'">'.$i.'</a>';
}
}
}
}
}
if ($prox <= $ultima_pag && $ultima_pag > 2)
{
$paginacao .= '<a href="list_controle.php?pag='.$prox.'">próxima »</a>';
}
echo $paginacao;
echo '</div>';
?>Amigo, em algum lugar dessa maçaroca toda, existe alguma coisa como [inline]echo '<a href="list_controle.php?pag=[qualquercoisaaqui]&mes=[/inline] que eu falhei em encontrar em todos os seus posts contendo código. Sinto muito pela minha incompetência.
Em todo e qualquer teste que eu faça [inline]echo '<a href="list_controle.php?pag=2">...';[/inline], alguma força misteriosa e maligna faz o browser gerar o link para **list_controle.php?pag=2** e não **list_controle.php?pag=2&mes=**, como você cita no post [#6](http://forum.imasters.com.br/topic/506499-manter-pesquisa-na-paginacao/#entry2003417).
Se puder me ajudar a fazer isso acontecer, quem sabe eu possa te ajudar a entender porque.
quando eu utilizo a função que vc me mandou no inicio do meu codigo e altero o metodo de POST pra Request
output_add_rewrite_var('mes', $mes);
$mes = $_REQUEST['mes'] or 1;
ela me gera a url dessa forma aqui
list_controle.php?pag=2&mes=
que realmente seguindo sua lógica era pra esta recebendo o valor definido pelo select na $mes
inverte a ordem...
$mes = $_REQUEST['mes'] or 1;
output_add_rewrite_var('mes', $mes);
Me desculpe, realmente faltei com a clareza...
2. Adicione no início do script [inline]output_add_rewrite_var('mes', $mes);[/inline]
eu fiz assim mesmo coloquei
output_add_rewrite_var('mes', $mes); no inicio do meu codigo e onde eu usava $mes=$_POST['mes']; coloque o requeste
ae que da aquela url com &mes=
[inline]output_add_rewrite_var[/inline] tem que vir depois de [inline]$mes = $_REQUEST ?[/inline]
Cara seu código tá muito bagunçado então nem tentei entender.
Veja se isso te ajuda : ps.tem até o estilo aí
<!-- __________________________________________________________________________________ paginacao by jdl -->
?>
<style>
.paginacao{
width:100%;
borde:solid red 3px;
height:auto;
}
.pags{
border:solid #ccc 1px;
width:auto;
float:left;
margin:5px;
font-weight:bold;
}
.pags_atual{
border:solid #ccc 1px;
background-color:#F00;
width:auto;
float:left;
margin:5px;
font-weight:bold;
}
.pags:hover{
background-color:#F00;
color:#FFF;
}
</style>$ordem='ORDER BY nome ASC ';
$tabela='categorias';
$final = "20";
$condicao='';
$busca='';
$resubusca='';
$paginacao='';
if(isset($_REQUEST['busca']))
if( strlen($_REQUEST['busca'])>=4)
{
$busca=$_REQUEST['busca'];
$condicao="WHERE titulo LIKE '%$busca%'";
$resubusca="Resultados para a busca : <strong>$busca</strong><br>";
}
if(isset($_GET['p']))
$pagina = $_GET['p'];
else
$pagina=1;
$pag=mysql_query("SELECT * FROM $tabela $condicao $ordem ");
$total_de_linhas = mysql_num_rows($pag);
$total_de_paginas = ceil ($total_de_linhas/$final);
if ($pagina==''){ $pagina='1'; }
$inicio = ($pagina-1) * $final;
$inicioing_no = $inicio + 1;
if ($total_de_linhas - $inicio < $final) { $ultima_pagina = $total_de_linhas;
} elseif ($total_de_linhas - $inicio >= $final) { $ultima_pagina = $inicio + $final; }
//-----------------------------------------------------------------------------paginacao final
//Aqui ira exibir a paginação
if($total_de_linhas>0)
{
if ($total_de_linhas - $ultima_pagina > $final) { $var2 = $final;
} else
if ($total_de_linhas - $ultima_pagina <= $final) { $var2 = $total_de_linhas - $ultima_pagina; }
$paginacao.='
<div class="paginacao">';
for ($i=1; $i<=$total_de_paginas; $i++) {
if($i==$pagina)
$paginacao.='<div class="pags_atual">'.$i.'</div>';<a href="'.$_SERVER['SCRIPT_NAME'].'?p='.$i.'&busca='.$busca.'"><div class="pags">'.$i.'</div></a>';
}
$paginacao.="</div>";
}
//______________________________________________________________________________ fimpaginacao by jdl ?>Obg a todos que ajudaram !
Passa (ou repassa) via get.