Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde,
estou desenvolvendo uma página de pesquisa onde o usuário escolhe se a pesquisa é por Título ou Texto, de acordo com a palavra informada. Fiz uma busca paginada pegando um exemplo na net. O exemplo funciona perfeitamente, mas no meu caso alguma coisa ainda está errada e não estou conseguindo resolver. Já desenvolvi toda a parte de busca no banco de dados (SQL Server 2005). O form de pesquisa está em uma página e o resultado em outra.
O problema está quando mudo de página para visualizar o restante da pesquisa, a variável que utilizei no form de pesquisa perde o valor e então não consigo visualizar as outra páginas. Os códigos estão logo abaixo, espero que me ajudem.
// Página de busca (Busca.php)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<link href="css/interna.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="page_iframe">
<div id="page_int">
<div id="formulario">
<div class="topico">Documentação</div>
<table width="390" border="1">
<tr>
<th width="144" scope="col">
<form action="lista_busca.php" method="post" target = "_blank" name="frmBusca" id="frmBusca">
<input type="text" id="palavra" name="palavra"/>
<th width="230" align="left" valign="middle" scope="col"><span class="style1">
<label>
<input type="submit" name="titulo" id="titulo" value="Título"/>
<input type="submit" name="Texto" id="texto" value="Texto"/>
</label>
</span></th>
</tr>
</table>
</form><iframe name="iframe_a" width="95%" height="380" frameborder="1">
<p>Your browser does not support iframes.</p>
</iframe>
</body>
</html>
// Página de resultados (Lista_Busca.php)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<?php// Conexão com o banco de dados
$conn = @mssql_connect("192.168.1.55", "user", "senha") or die("Não foi possível a conexão com o Banco");
// Selecionando banco
$db = @mssql_select_db("DADOS", $conn) or die("Não foi possível selecionar o Banco");
// Pegamos a palavra
$palavra = $_POST['palavra'];
// Verificamos se a ação é de busca
//if ($a == "buscar")
//{
if (empty($palavra))
{
echo "<script type='text/javascript'>alert('Valor para pesquisa não informado !');</script>";
exit;
}
if (strlen($palavra) < 3) echo "<script type='text/javascript'>alert('Informe no mínimo 3 caracteres para iniciar uma pesquisa !');</script>";
exit;
}
if (isset($_POST['titulo'])) echo "<br><font size = '4'><b>Busca por Título: </b></font>";
echo "<script type='text/javascript'>alert('Passou aqui !');</script>";
// Verificamos no banco de dados documentos equivalente a palavra digitada
$sql = mssql_query("SELECT * FROM Produtos WHERE Prod_Titulo LIKE '%$palavra%' ORDER BY Prod_Titulo"
);
} echo "<br><font size = '4'><b>Busca por Texto: </b></font>";
// Verificamos no banco de dados documentos equivalente a palavra digitada
$sql = mssql_query("SELECT Prod_Titulo,CAST(CAST([Prod_Texto] AS VARCHAR(8000)) AS TEXT) FROM Produtos WHERE Prod_Texto LIKE
'%$palavra%'");
}
echo "<font color = '#EE7600'><b>";
echo $palavra;
echo "</b></font>";
// Descobrimos o total de registros encontrados
//$numRegistros = mysql_num_rows($sql);
$totreg = mssql_num_rows($sql);
// Calcula o máximo de paginas
$paginas = (($totreg % $_BS['PorPagina']) > 0) ? (int)($totreg / $_BS['PorPagina']) + 1 : ($totreg / $_BS['PorPagina']);
// Sistema simples de paginação, verifica se há algum argumento 'pagina' na URL
if (isset($_POST['pagina']))
{
$pagina = (int)$_POST['pagina'];
} $pagina = 1;
}
$pagina = max(min($paginas, $pagina), 1);
$inicio = ($pagina - 1) * $_BS['PorPagina'];
// Monta outra consulta, agora a que fará a busca com paginação
$sql2 = "SELECT TOP " .$_BS['PorPagina'] . " Prod_Cod,Prod_Desc,Prod_Titulo,Prod_Texto,Prod_Recno FROM Produtos WHERE Prod_Titulo LIKE
'%$palavra%' ORDER BY Prod_Titulo";
// Executa a consulta
$query = mssql_query($sql2);
// Começa a exibição dos resultados
echo "<p>Resultados ".min($totreg, ($inicio + 1))." - ".min($totreg, ($inicio + $_BS['PorPagina']))." de ".$totreg." resultados
encontrados para '".$_POST['palavra']."'</p>";
echo "<ul>"; $titulo = $resultado['Prod_Titulo'];
$texto = $resultado['Prod_Texto'];
$descpro= $resultado['Prod_Desc'];
$link = 'http://www.meusite.com.br/noticia.php?id=' . $resultado['Prod_Recno'];
echo "<li>";
echo '<a href="'.$link.'" title="'.$titulo.'">'.$titulo.'</a>' . ' - ' . $descpro . '<br />';
echo "</li>";
}
echo "</ul>";
// Começa a exibição dos paginadores
//==================================
if ($totreg > 0)
{
echo '<a href="index.php?pag=1">'.'Primeira página '.'</a>';
for($n = 1; $n <= $paginas; $n++)
{
if($pagina == $n)
{
echo " ".$n." "; // Escreve somente o número da página sem ação alguma
} else
{
echo '<a href="?palavra='.$_POST['palavra'].'&pagina='.$n.'">'.$n.'</a> ';
//echo '<a href="?palavra='.$palavra.'&pagina='.$n.'">'.$n.'</a> ';
}
}
echo '<a href="index.php?pag='.$paginas.'">Última página</a>';
}Supondo que usuário digitou Abraçadeira e clicou no botão Título, e no meu código decidi que serão mostrados 4 resultados por página, a página de resultados ficaria assim:
- Abraçadeira 1;
- Abraçadeira 2;
- Abraçadeira 3;
- Abraçadeira 4;
Primeira página 1 2 3 4 Última página
Ao clicar na página 2, a página de resultados deveria ser recarregada com os outros itens da pesquisa, mas isto não ocorre porque a variável $palavra está em branco, deveria continuar como Abraçadeira.
Espero que tenham entendido.
Obrigado,
Marcos
Carregando comentários...