Ir para conteúdo
Fórum Script Brasil
  • 0

Php - Mysql - Busca


Guest Paulo Fornazari

Pergunta

Guest Paulo Fornazari

Caras, sei que sou leigo, mas criei um script de busca no php/mysql que funciona bem, porém quando faz a paginação dos resultados ele só retorna direito o primeiro link, pois quando clico no link 2 por exemplo ele faz a querie de novo porém perde o valor da variável que veio do formulário de busca... aí me traz todos os registros ...

o que está errado?

Alguém pode me indicar um bom script para paginação de resultados que quando eu clicar no outros links de resultados ele funcione direito ????

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Amigo, só vendo o script,

Mas segue abaixo um tutorial de um script de busca...

Espero que ajude.

Primeiramente vamos criar a tabela no MySQL onde os dados serão buscados:

CREATE TABLE noticias (

codigo INT(11) NOT NULL DEFAULT '0' AUTO_INCREMENT PRIMARY KEY,

titulo VARCHAR(255) NOT NULL,

noticia TEXT NOT NULL

);

Pronto! A tabela acima é um exemplo de uma tabela de notícia.

Bom, agora iremos criar o script de busca:

busca.php

<form method="POST">

Palavra: <input type="text" name="palavra">

<input type="submit" value="Buscar">

</form>

<?

if(!empty($HTTP_POST_VARS[palavra])) {

$palavra = str_replace(" ", "%", $HTTP_POST_VARS[palavra]); /* Altera os espaços adicionando no lugar o simbolo % */

$qr = "SELECT * FROM noticias WHERE noticia LIKE '%".$palavra."%' ORDER BY codigo DESC";

$sql = mysql_query($qr); // Executa a query no Banco de Dados

$total = mysql_num_rows($sql); // Conta o total ded resultados encontrados

echo "Sua busca retornou <b>'$total'</b> resultados.<br>\n";

while($r = mysql_fetch_array($sql)) { // Gera o Loop com os resultados

echo "<hr>\n";

echo $r[noticia]."<br>\n";

}

}

?>

Pronto, o seu sistema de busca já esta funcionando.

Tutorial por

Fábio Luis Matavelli da Silva

fabio@superphp.com.br

Abraços

AllexPina

:D

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Paulo Fornazari

O script está assim, como abaixo, ele funciona na primeira página de resultados que retorna, mas se eu clico no link 2 por exemplo ele não me retorna o segundo resultado, mas faz a querie de novo e aumenta o numero de resultados...parece que perde a referencia de busca.

Na página que envia as variáveis para a busca tá tudo certo, action="paulo.php".

O script :

<?

/* PAGINAÇÃO DE RESULTADOS DE UM BANCO DE DADOS MYSQL

Mostra links para 5 páginas anteriores e 5 posteriores, além do link Anterior e Próxima

Autor: Flavio Cambraia - flavio@brazilsoftware.com.br

*/

function f_paginacao ($tr,$rpp,$pg) { // $tr é total_records e $rpp é registros por pagina

if ($tr%$rpp==0){$pages = intval($tr / $rpp)-1;} else {$pages = intval($tr / $rpp);} // calcula quantas paginas serao necessarias

if ($tr>0){

echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Total de Registros Encontrados: $tr&nbsp;&nbsp;-&nbsp;&nbsp; ";

$NumRegistroInicial = ($pg*$rpp)+1;

if ($pg <> $pages) {$NumRegistroFinal = ($pg*$rpp)+$rpp;} else {$NumRegistroFinal = $tr;}

echo "Exibindo Registros de $NumRegistroInicial a $NumRegistroFinal";

echo "<br>";

echo "<p align=\"center\">Páginas:&nbsp;&nbsp;&nbsp;&nbsp;";

if ($pg <> 0) {

$showpage = $pg - 1;

echo '<a id=mulink href="'.$PHP_SELF.'?pg='.$showpage.'">Anteriores</a>&nbsp;';

}

for ($i = $pg-5; $i<$pg; $i++) {

$showpage=$i+1;

if ($i>=0) {

echo '<a id=mulink href="'.$PHP_SELF.'?pg='.$i.'">'.$showpage.'</a>';

echo '&nbsp;&nbsp;';

}

}

for ($i = $pg; ($i<=$pages AND $i<=($pg+5)); $i++) {

$showpage=$i+1;

if ($i == $pg) {

echo '<font face=Arial size=2 color=ff0000><b>'.$showpage.'&nbsp;&nbsp;</b></font>';}

else {

echo '<a id=mulink href="'.$PHP_SELF.'?pg='.$i.'">'.$showpage.'</a>';

echo '&nbsp;&nbsp;';

}

}

if ($pg < $pages) {

$showpage = $pg + 1;

echo '<a id=mulink href="'.$PHP_SELF.'?pg='.$showpage.'"> Próximas</a>';}

}

}

// FINAL DA FUNÇÃO DE PAGINAÇÃO

$dbname="database"; // Indique o nome do banco de dados que será aberto

$usuario="usuario"; // Indique o nome do usuário que tem acesso

//1º passo - Conecta ao servidor MySQL

$id = mysql_connect("host",$usuario);

//2º passo - Seleciona o Banco de Dados

$con=mysql_select_db($dbname);

$sql_tr = "SELECT * FROM consultor WHERE nome LIKE '%".$nome."%' ORDER BY nome";

$res_tr = mysql_query($sql_tr);

$tr = mysql_num_rows($res_tr); // $tr é o total de registros

if (isset($_GET[rpp])) {$rpp = $_GET[rpp];} else {$rpp = 1;} // $rpp é registros por pagina - o padrão é 10

if (isset($_GET[pg])) {$pg = $_GET[pg];} else {$pg = 0;}

$inicial = $pg * $rpp ;

$sql = "SELECT * FROM consultor WHERE nome LIKE '%".$nome."%' ORDER BY nome";

$res = mysql_query($sql);

f_paginacao($tr,$rpp,$pg);

?>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">

<title>Paginacao</title>

</head>

<body>

<table border="0" cellpadding="0" cellspacing="0" width="60%">

<? while ($row=mysql_fetch_array($res)) { ?>

<tr>

<td width="50%"><? echo $row[nome]; ?></td>

<td width="50%"><? echo $row[func]; ?></td>

</tr>

<? } ?>

</table>

</body>

</html>

E aí ????

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Paulo Fornazari

O tal de Eddie falou que só vendo o script, eu mandei e ele sumiu ... será que não sabe nada e ainda se acha no direito de tirar uma da cara dos outros ????

Só vejo você zoando os outros mas não sabe p**** nenhuma ná véio??

Link para o comentário
Compartilhar em outros sites

  • 0

Muita calma aí! Primeiramente não tenho nada a provar pra ti, se eu sei programar ou não é um problema meu! Só te digo uma coisa, eu pelo menos não fico copiando código por aí como tu tá fazendo. Mas nem quero questionar isso, muita gente copia e altera, creio que é isso que tu tá fazendo. Bom, parece que o teu código está correto. O erro parece estar na chamada à função que faz a paginação. TAmbém não entendi o porquê disso: $inicial = $pg * $rpp ; Tu também não deve passra $pg com valor zero... Dá uma olhada melhor nessa função, tenta reestruturar ela quem sabe... Ah, não respondi antes porque vi uma resposta com código mas não li, pensei que fosse o que tu queria...

Link para o comentário
Compartilhar em outros sites

  • 0

Mas um Dia Vossa Senhoria teve que ver scripts prontos e comentados para aprender ... certo ?, eu não copiio o script e jogo de qualquer jeito ... claro que altero, esse que colei aí é só um exeplo de como fiz o MEU script.

Ah, o $inicial que você mencionou tá na cara, serve para a LIMIT da query ...

Só disse tudo o que disse pois eu programei em clipper por anos e nunca tratei os outros como você trata os caras do fórum que eu vejo ... CUIDADO, ninguém sabe tudo meu caro...nem você.

Link para o comentário
Compartilhar em outros sites

  • 0

Muito pelo contrário, eu sei muito pouco perto do que quero saber, e perto do que muita gente sabe por aí... Se serve de limit para a query, não consegui ver onde tu está usando essa variável... Eu falei que tu alterou o script... não disse que tinha apenas copiado... E, como falei, não tenho nada contra quem usa scripts prontos para aprender, tenho apenas contra quem pega os scripts prontos e sai usando muitas vezes sem nem saber direito o que o script faz... Eu não trato ninguém de maneira desrespeitosa, apenas deixo clara a minha opinião sobre cópia de código... Eu apoio quem pega o código pronto e vem aqui tirar dúvidas, mas não quem pega um código pronto com erros e quer que os outros consertem apenas para que ele possa usar e não para aprender...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...