Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

weidson

Manter pesquisa na Paginacao

Recommended Posts

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 c
inner join tb_igreja i on i.idigreja = c.idigreja
inner join tb_sermao s on s.idsermao = c.idsermao 
WHERE  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 ($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>';
?>
</body>
</html>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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]

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 !

Compartilhar este post


Link para o post
Compartilhar em outros sites

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>';
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

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>';
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

 

Se puder me ajudar a fazer isso acontecer, quem sabe eu possa te ajudar a entender porque.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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]

Compartilhar este post


Link para o post
Compartilhar em outros sites

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=

Compartilhar este post


Link para o post
Compartilhar em outros sites

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>
<?
//-----------------------------------------------------------------------------paginacao
$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>';
else
$paginacao.='
<a href="'.$_SERVER['SCRIPT_NAME'].'?p='.$i.'&busca='.$busca.'"><div class="pags">'.$i.'</div></a>';
}
$paginacao.="</div>";

}
//______________________________________________________________________________ fimpaginacao by jdl ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.