Jump to content


Photo

Problemas Em Executar Busca


  • Faça o login para participar
Nenhuma resposta neste tópico

#1 phpget

phpget

    Novato no fórum

  • Usuários
  • 13 posts
  • Sexo:Não informado

Posted 23/11/2005, 22:58

Galera, seguinte preciso estou adaptando um sistema de busca para utiliza no meu site, ao qual irei informar num form (campo) a palavra chave e selecionarei em um List/Menu (categorias), exemplo: [form] php [List/Menu] Apostilas, então estamos buscando a palava php na categoria Apostilas, e o script retorna os valores na página, bem o sistema está funcionando pela metade, pois quando efetuo a busca e acha os resultados entro com o sistema de paginação que está configurado para mostrar dados de 2 em 2, até ai tudo bem, ele gera a busca me mostra os valores, e faz a paginação correta (tenho 5 dados na tabela, faço buscas de 2 em 2, ele retorna página 1 e página 2 certinho) se eu clico em página 2 ele muda a busca pegando os 5 registros e me mostra uma terceira página de exibição, dái pra frente o que eu fizer ele se perde, com ose a busca tivesse sendo alterada... me ajudem, é urgente!

Segue o script de paginacao!

<form name="buscador" method="post" action="<? echo $PHP_SELF ?>?g1=servicos&g2=buscador&h=1">
<div align="center">
Buscar:
<input id="wi" name="cha" type="text">
<label>
Categoria:
<select id="wi" name="cat" >
<option id="wi" value="todas" selected>Todas</option>
<option value="geral">Geral</option>
<option id="wi" value="apostilas">Apostilas</option>
</select>
</label>
<input id="wb" type="submit" name="Submit" value="Buscar" />
<label>
<input id="wb" name="Limpar" type="reset" value="Limpar" />
</label>
<br>
</div>
</form>
<?
$dbname="nome_da _base"; // Indique o nome do banco de dados que será aberto
$usuario="usuario"; // Indique o nome do usuário que tem acesso
$password="senha"; // Indique a senha do usuário
//1º passo - Conecta ao servidor MySQL
$con = mysql_connect("localhost",$usuario,$password);
//2º passo - Seleciona o Banco de Dados
$id = mysql_select_db($dbname,$con);
// bloco 1 - conecte-se ao banco de dados


// bloco 2 - defina o número de registros exibidos por página
$num_por_pagina = 2;

// bloco 3 - descubra o número da página que será exibida
// se o numero da página não for informado, definir como 1
if (!$pagina) {
$pagina = 1;
}


// bloco 4 - construa uma cláusula SQL "SELECT" que nos retorne somente os registros desejados
// definir o número do primeiro registro da página. Faça a continha na calculadora que você entenderá minha fórmula.
$primeiro_registro = ($pagina*$num_por_pagina) - $num_por_pagina;

// consulta apenas os registros da página em questão utilizando como auxílio a definição LIMIT. Ordene os registros pela quantidade de pontos, começando do maior para o menor DESC.
if ($h==1){
$consulta = "SELECT * FROM busca WHERE chaves LIKE '%".$cha."%' AND categoria LIKE '%".$cat."%' ORDER BY id DESC LIMIT $primeiro_registro, $num_por_pagina";
// executar query
$res = mysql_query($consulta,$con);


// bloco 5 - exiba os registros na tela
echo "<ul>"; while (list($id, $titulo) = mysql_fetch_array($res)) {
echo "<li> $id - $titulo";
}
echo "</ul>";


// bloco 6 - construa e exiba um painel de navegabilidade entre as páginas
$consulta = "SELECT COUNT(*) FROM busca WHERE chaves LIKE '%".$cha."%'";
list($total_usuarios) = mysql_fetch_array(mysql_query($consulta,$con));

$total_paginas = $total_usuarios/$num_por_pagina;

$prev = $pagina - 1;
$next = $pagina + 1;
// se página maior que 1 (um), então temos link para a página anterior
if ($pagina > 1) {
$prev_link = "<a href=\"$PHP_SELF?g1=servicos&g2=buscador&pagina=$prev&h=1\">Anterior</a>";
} else { // senão não há link para a página anterior
$prev_link = "Anterior";
}

// se número total de páginas for maior que a página corrente, então temos link para a próxima página
if ($total_paginas > $pagina) {
$next_link = "<a href=\"$PHP_SELF?g1=servicos&g2=buscador&pagina=$next&h=1\">Próxima";
} else { // senão não há link para a próxima página
$next_link = "Próxima";
}

$total_paginas = ceil($total_paginas);
$painel = "";
for ($x=1; $x<=$total_paginas; $x++) {
if ($x==$pagina) { // se estivermos na página corrente, não exibir o link para visualização desta página
$painel .= " [$x] ";
} else {
$painel .= " <a href=\"$PHP_SELF?g1=servicos&g2=buscador&pagina=$x&h=1\">[$x]</a>";
}
}


// exibir painel na tela
echo "$prev_link | $painel | $next_link";
}
?>

me ajudem.... :unsure: :unsure: :unsure:




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq