Ir para conteúdo

POWERED BY:

Arquivado

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

GilbertoSanchez

Busca Avançada com Paginação

Recommended Posts

Olá pessoal, sou novo aquí e esse é meu primeiro pedido de ajuda, pois estou penando a quase duas semanas tentando adaptar uma paginação com 10 resultados por página no meu sistema de busca com 5 campos.

A Busca funciona perfeito mas se eu tento adaptar a paginação ela para.

 

Alguem poderia me ajudar? Pode até passar orçamento. Desde já agradeço a atenção de todos.

 

O codigo é esse:

 

<?php include('Connections/conexao.php'); ?>

<form action="teste.php" method="POST" name="busca" id="busca">
Referência:
<input name="ref" class="formulario" id="ref" style="WIDTH: 160px">
<br>
Tipo de Imóvel:
<SELECT name="tipo" class="formulario" id="tipo" style="WIDTH: 160px">
		<OPTION value="todos" selected>Todos</OPTION>
		<?php
		$sql = "select * from casa group by tipo";
		$resposta = mysql_query( $sql );
		while ( $linha = mysql_fetch_array( $resposta )) {
	?>
		<option value="<?php echo $linha["tipo"];?>"><?php echo $linha["tipo"];?></option>
		<?php
		 }mysql_free_result( $resposta );
		mysql_close($conexao);
	?>
</SELECT>
<br>
Operação:
<SELECT name="operacao" class="formulario" id="operacao" style="WIDTH: 160px">
		<OPTION value="todos" selected>Todos</OPTION>
		<?php
		$sql = "select * from casa group by operacao";
		$resposta = mysql_query( $sql );
		while ( $linha = mysql_fetch_array( $resposta )) {
	?>
		<option value="<?php echo $linha["operacao"];?>"><?php echo $linha["operacao"];?></option>
	<?php
		 }mysql_free_result( $resposta );
		mysql_close($conexao);
	?>
</SELECT>
<br>
Condomínio:
<SELECT name="condominio" class="formulario" id="condominio" style="WIDTH: 160px">
		<OPTION value="todos" selected>Todos</OPTION>
		<?php
		$sql = "select * from casa group by condominio";
		$resposta = mysql_query( $sql );
		while ( $linha = mysql_fetch_array( $resposta )) {
	?>
		<option value="<?php echo $linha["condominio"];?>"><?php echo $linha["condominio"];?></option>
		<?php
		 }mysql_free_result( $resposta );
		mysql_close($conexao);
	?>
</SELECT>
<br>
Faixa de Valores:
<SELECT name="cvalor" class="formulario" id="cvalor" style="WIDTH: 160px">
		<OPTION value="todos" selected>Todos</OPTION>
		<OPTION value="a">Até R$ 200 mil</OPTION>
		<OPTION value="b">R$ 201 mil até R$ 400 mil</OPTION>
		<OPTION value="c">R$ 401 mil até R$ 600 mil</OPTION>
		<OPTION value="d">R$ 601 mil até R$ 800 mil</OPTION>
		<OPTION value="e">R$ 801 mil até R$ 1 milhão</OPTION>
		<OPTION value="f">Acima de R$ 1 milhão</OPTION>
  </SELECT>
<br>
<input name="Submit" type="submit" class="formulario" id="button" value="Pesquisar" />
<input name="button2" type="reset" class="formulario" id="button2" value="Limpar" />
<br>
</form>

<?php

$num_por_pagina = 10;

if (!$pagina) {
   $pagina = 1;
}

$primeiro_registro = ($pagina*$num_por_pagina) - $num_por_pagina;


if ($ref != '') {
	$ref = $_POST['ref'];
	$sql = "SELECT * FROM casa where ";
	$sql .= "ref='$ref' ";
	}
else
	{
	$tipo = $_POST['tipo'];
	$operacao = $_POST['operacao'];
	$condominio = $_POST['condominio'];
	$cvalor = $_POST['cvalor'];
	$cnt = 0;
	$sql = "SELECT * FROM casa ";

if($tipo != 'todos')
{
	$sql .= "where tipo='$tipo' ";
	$cnt=1;
}
if($operacao != 'todos')
{
	if ($cnt==1)
		$sql .= "AND operacao='$operacao' ";
	else
		$sql .= "where operacao='$operacao' ";
		$cnt=1;
}
if($condominio != 'todos')
{
	if ($cnt==1)
		$sql .= "AND condominio='$condominio' ";
	else
		$sql .= "where condominio='$condominio' ";
		$cnt=1;
}
if($cvalor != 'todos')
{
	if ($cnt==1)
		$sql .= "AND cvalor='$cvalor' ";
	else
		$sql .= "where cvalor='$cvalor' ";
}
}
$sql .= ("ORDER BY Id DESC  LIMIT $primeiro_registro, $num_por_pagina");

{


$consulta = mysql_query($sql)or die (mysql_error());
for($i=0;$result=mysql_fetch_array($consulta);$i++)
{
?>

<img src="imagens/casas/<?php echo $result['foto1']; ?>" width="200" border="0"/><br>
<?php echo $result['condominio'];?><br>
<?php echo $result['valor'];?><br>
<?php echo $result['tipo'];?><br>
<?php echo $result['descricao'];?>
<?php echo $result['ref'];?><br>

<?php
}
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muitas, sou iniciante e fiz alguns sites em que o dreamweaver deu conta.

Mas quando surgiu esse em que se tem de trabalhar o código, aí o bicho pegou.

 

Esse código montei pela net...

Não sei como começar....

Vou dar uma vasculhada na net....

Se puder me ajudar tb como começar, eu agradeço e muito...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguem me daria uma dica de como fazer essa busca com paginação funcionar...

Já tentei um monte e estou ficando maluco com isso...

 

<?php include('conecta.php'); ?>

<form action="teste2.php" method="GET" name="busca" id="busca">
	  <p>Referência:
		<input name="ref" class="formulario" id="ref" style="WIDTH: 160px" />
		  <br />
		Tipo de Imóvel:
		<select name="tipo" class="formulario" id="tipo" style="WIDTH: 160px">
		  <option value="todos" selected>Todos</option>
		  <?php
$sql = "select * from casa group by tipo";
$resposta = mysql_query( $sql );
while ( $linha = mysql_fetch_array( $resposta )) {
?>
		  <option value="<?php echo $linha["tipo"];?>"><?php echo $linha["tipo"];?></option>
		  <?php
} mysql_free_result( $resposta );
mysql_close($conexao);
?>
		</select>
		<br />
		Operação:
		<select name="operacao" class="formulario" id="operacao" style="WIDTH: 160px">
		  <option value="todos" selected>Todos</option>
		  <?php
$sql = "select * from casa group by operacao";
$resposta = mysql_query( $sql );
while ( $linha = mysql_fetch_array( $resposta )) {
?>
		  <option value="<?php echo $linha["operacao"];?>"><?php echo $linha["operacao"];?></option>
		  <?php
} mysql_free_result( $resposta );
mysql_close($conexao);
?>
		</select>
		<br />
		Condomínio:
		<select name="condominio" class="formulario" id="condominio" style="WIDTH: 160px">
		  <option value="todos" selected>Todos</option>
		  <?php
$sql = "select * from casa group by condominio";
$resposta = mysql_query( $sql );
while ( $linha = mysql_fetch_array( $resposta )) {
?>
		  <option value="<?php echo $linha["condominio"];?>"><?php echo $linha["condominio"];?></option>
		  <?php
} mysql_free_result( $resposta );
mysql_close($conexao);
?>
		</select>
		<br />
		Faixa de Valores:
		<select name="cvalor" class="formulario" id="cvalor" style="WIDTH: 160px">
		  <option value="todos" selected>Todos</option>
		  <option value="a">Até R$ 200 mil</option>
		  <option value="b">R$ 201 mil até R$ 400 mil</option>
		  <option value="c">R$ 401 mil até R$ 600 mil</option>
		  <option value="d">R$ 601 mil até R$ 800 mil</option>
		  <option value="e">R$ 801 mil até R$ 1 milhão</option>
		  <option value="f">Acima de R$ 1 milhão</option>
		</select>
		<br />
		<input name="Submit" type="submit" class="formulario" id="button" value="Pesquisar" />
		<input name="button2" type="reset" class="formulario" id="button2" value="Limpar" />
	  </p>
</form>

<?php
$pagina = $_GET['pagina'];
$num_por_pag = 4; // Quantos registros por página vai ser mostrado
if (!isset($pagina)) {
$pagina = 0;
}
$inicial = $pagina * $num_por_pag;

if ($ref != '') {
	$ref = $_GET['ref'];
	$sql = "SELECT * FROM casa where ";
	$sql .= "ref='$ref' ";
	}
else
	{
	$tipo = $_GET['tipo'];
	$operacao = $_GET['operacao'];
	$condominio = $_GET['condominio'];
	$cvalor = $_GET['cvalor'];
	$cnt = 0;
	$sql = "SELECT * FROM casa ";

if($tipo != 'todos')
{
	$sql .= "where tipo='$tipo' ";
	$cnt=1;
}
if($operacao != 'todos')
{
	if ($cnt==1)
		$sql .= "AND operacao='$operacao' ";
	else
		$sql .= "where operacao='$operacao' ";
		$cnt=1;
}
if($condominio != 'todos')
{
	if ($cnt==1)
		$sql .= "AND condominio='$condominio' ";
	else
		$sql .= "where condominio='$condominio' ";
		$cnt=1;
}
if($cvalor != 'todos')
{
	if ($cnt==1)
		$sql .= "AND cvalor='$cvalor' ";
	else
		$sql .= "where cvalor='$cvalor' ";
}
}
$sql .= ("ORDER BY Id DESC LIMIT $inicial, $num_por_pag ");
{
$consulta = mysql_query($sql)or die (mysql_error());
for($i=0;$result=mysql_fetch_array($consulta);$i++)
{
?>

<a href="imovel_detalhado.php?Id=<?php echo $result['Id']; ?>"><img src="imagens/casas/<?php echo $result['foto1']; ?>" width="200" border="0"/></a></td>
<a href="imovel_detalhado.php?Id=<?php echo $result['Id']; ?>" class="anuncio_bold"><?php echo $result['condominio'];?></a> - <strong><?php echo $result['valor'];?></strong><br />
<a href="imovel_detalhado.php?Id=<?php echo $result['Id']; ?>" class="anuncio"><?php echo $result['tipo'];?></a><br />
<a href="imovel_detalhado.php?Id=<?php echo $result['Id']; ?>" class="anuncio"><?php echo $result['descricao'];?></a><br />
<a href="imovel_detalhado.php?Id=<?php echo $result['Id']; ?>" class="anuncio_bold"><?php echo $result['ref'];?></a><br />
<strong></strong>

<?php
}
}
?>

<?php
$consulta = "SELECT COUNT(*) FROM Id";
list($total_reg) = mysql_fetch_array(mysql_query($sql));

$total_paginas = $total_reg/$num_por_pag;

$prev = $pagina - 1;
$next = $pagina + 1;

if ($pagina > 1) {
$prev_link = "<a href=\"$PHP_SELF?pagina=$prev\">Anterior</a>";
} else {
$prev_link = "Anterior";
}

if ($total_paginas > $pagina) {
$next_link = "<a href=\"$PHP_SELF?pagina=$next\">Próxima";
} else {
$next_link = "Próxima";
}

$total_paginas = ceil($total_paginas);
$painel = "";

$pag_inic=floor($pagina/10)*10;
if ($pag_inic==0)
$pag_inic=1;

$pag_final = (floor($pagina/10)*10)+10;

for ($x=$pag_inic; $x<=$total_paginas && $x<=$pag_final; $x++) {
if ($x==$pagina) {
$painel .= " [$x] ";
} else {
$painel .= " <a class=\"links\" href=\"$PHP_SELF?pagina=$x\">[$x]</a>";
}
}

if ($pag_inic >= 10) {
if ($pag_inic==10)
$menos_10 = "<a class=\"links\" href=\"$PHP_SELF?pagina=1\">-10</a>";
else
$menos_10 = "<a href=\"$PHP_SELF?pagina=".($pag_inic-9)."\">-10</a>";
} else {
$menos_10 = "-10";
}

if ($total_paginas > $pag_final) {
$mais_10 = "<a href=\"$PHP_SELF?pagina=$pag_final\">+10</a>";
} else {
$mais_10 = "+10";
}

echo "$menos_10 $prev_link $painel $next_link $mais_10";

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Giba!

 

substitui o final do teu script depois de:

$prev = $pagina - 1;
$next = $pagina + 1;

por isso:

$criterios = 
"ref=".$_GET['ref'].
"&tipo=".$_GET['tipo'].
"&operacao=".$_GET['operacao'].
"&condominio=".$_GET['condominio'].
"&cvalor=".$_GET['cvalor'];
//$_GET['']
if ($pagina > 1) {
$prev_link = "<a href=\"$PHP_SELF?pagina=".$prev."&".$criterios."\">Anterior</a>";
} else {
$prev_link = "Anterior";
}

if ($total_paginas > $pagina) {
$next_link = "<a href=\"$PHP_SELF?pagina=".$next."&".$criterios."\">Próxima</a>";
} else {
$next_link = "Próxima";
}

$total_paginas = ceil($total_paginas);
$painel = "";

$pag_inic=floor($pagina/10)*10;
if ($pag_inic==0)
$pag_inic=1;

$pag_final = (floor($pagina/10)*10)+10;

for ($x=$pag_inic; $x<=$total_paginas && $x<=$pag_final; $x++) {
if ($x==$pagina) {
$painel .= " [$x] ";
} else {
$painel .= " <a class=\"links\" href=\"$PHP_SELF?pagina=".$x."&".$criterios."\">[$x]</a>";
}
}

if ($pag_inic >= 10) {
if ($pag_inic==10)
$menos_10 = "<a class=\"links\" href=\"$PHP_SELF?pagina=1".$criterios."\">-10</a>";
else
$menos_10 = "<a href=\"$PHP_SELF?pagina=".($pag_inic-9)."&".$criterios."\">-10</a>";
} else {
$menos_10 = "-10";
}

if ($total_paginas > $pag_final) {
$mais_10 = "<a href=\"$PHP_SELF?pagina=".$pag_final."&".$criterios."\">+10</a>";
} else {
$mais_10 = "+10";
}

echo "$menos_10 $prev_link $painel $next_link $mais_10";
Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa eu não expliquei direito...

Eu gostaria que esse número aumentasse ou diminuisse automaticamente de acordo com a quantidade de resistros encontrados.

 

Se eu tenho 65 registros aparecesse 6 páginas, se eu tenho 83 aparecesse 8 páginas e assim por diante...

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que você procura esta neste link

 

http://forum.imasters.com.br/index.php?showtopic=343165

 

é uma função de paginação que eu criei,

ai você coloca a opção de quantos registros você quer exibir por pagina,

por exemplo de 10 em 10 registro

 

ai se você tiver 5887 registro no seu banco de dados

 

você tera 588 pagias de conteudo, mas você pode alterar para a quantidade que você quiser eu uso este script em todos os meus trabalho aqui na empresa, e todo mundo da equipe de programadores gostou e adotou como padrão na empresa.

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.