Ir para conteúdo

POWERED BY:

Arquivado

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

Rosye

Paginação com busca via formulário

Recommended Posts

Oi, pessoal! Mais uma vez preciso da ajuda de vcs!

 

Estou tendo dificuldade em criar uma paginação para exibir o resultado de uma pesquisa.

 

Usando o seguinte script, consegui criar a paginação com uma busca pré-definida (exemplo: um link para listar todos os membros cadastrados no BD). Nesse caso, a paginação funciona.

 

Mas quando criei um formulário para pesquisar os membros por nome, faixa de idade, sexo ou cidade a paginação não funciona, pois essas variáveis de busca vindas do formulário não estão sendo passadas de uma página para outra.

 

Será que alguém pode me ajudar a contornar isso?? Não sei mais o que fazer! :(

 

[]s!

 

Rosana

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como assim??As variáveis estão vindo do formulário, tanto que a primeira página da pesquisa funciona. O problema é nas páginas seguintes, onde aparecem mensagens de variáveis não-definidas...[]s!

Compartilhar este post


Link para o post
Compartilhar em outros sites

ué, mas os dados se foram postados (FORM) eles estão lá, só serem resgatados com ($_POST[]), ñ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

As variáveis do formulário estão declaradas na query da busca. Exemplo:

 

PHP [/tr][tr]$busca = "SELECT Nome, Cidade, Id, FROM membros WHERE nome LIKE '%$pnome%' AND cidade LIKE '%$pcidade%'"; [/tr]

 

As variáveis $pnome e $pcidade vêm do formulário, e como esse form tem vários campos, e nem todos precisam estar preenchidos ao mesmo tempo, a query tem vários if. Exemplo:

 

PHP [/tr][tr]if(empty($psexo) && empty ($pidade1) && empty ($pidade2)){

$busca = "SELECT Nome, Cidade, Id, FROM membros WHERE nome LIKE '%$pnome%' AND cidade LIKE '%$pcidade%'";

}

 

elseif(empty($psexo) && empty ($pidade2)){

$busca = "SELECT Nome, Cidade, Id, IF((date_format(Data_nascimento,'%m')>date_format(now(),'%m')) OR ((date_format(Data_nascimento,'%m')=date_format(now(),'%m')) AND (date_format(Data_nascimento,'%d')>date_format(now(),'%d'))),date_format(now(),'%Y')-date_format(Data_nascimento,'%Y')-1,date_format(now(),'%Y')-date_format(Data_nascimento,'%Y')) as idade FROM membros WHERE nome LIKE '%$pnome%' AND cidade LIKE '%$pcidade%' HAVING idade='$pidade1';

}

[/tr]

 

E por aí vai. você sugere trocar as variáveis $variavel na query por $_POST['variavel'] ?? E isso vai funcionar? :blink:

 

Não sei se é essa a questão, já que na primeira página essas variáveis funcionam... nas páginas seguintes é que elas não são declaradas...

 

Valeu!

 

Rosana

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo você preenche o formulário aí ele gera a pg com o resultado, depois você passa pra outra página e quer os dados lá, é isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É basicamente isso! ;)

 

Para testar, tentei inserir a variável $pnome (do campo nome do formulário) nos links "próximo" e "anterior" e ver se a paginação funcionava:

 

PHP [/tr][tr]<A HREF='busca.php?&pagina=$pg_proxima&nome=$pnome'>próxima</A>[/tr]

 

Mas não funcionou. Seria nesse trecho do código que está o problema? Ou tenho que declarar a variável em algum outro trecho? :unsure:

 

[]s!

 

Rosana

Compartilhar este post


Link para o post
Compartilhar em outros sites

É basicamente isso!

Ataaaa, tindiiiiiii!!! hehehe

ñ funciona pq os dados ficam na pg pra qual foram postados, na seguinte estes Ñ estão mais lá. A não ser q você coloque os dados dentro de <FORM> com hidden field e poste os novamente pra próxima pg, assim estarão lá, ou usando $_GET e passa-los pelo link....

 

PHP [/tr][tr]<A HREF='busca.php?&pagina=$pg_proxima&nome=$pnome'>próxima</A> [/tr]

Daí você recupera com $_GET[] e manda pra paginação....

 

Bjão....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que não dá pra passar os dados por hidden field, já que as próximas páginas só serão criadas quando e se houver links para elas, certo?

 

O method do form é POST, então coloquei esse código

 

PHP [/tr][tr]$pnome= $HTTP_POST_VARS ["pnome"];[/tr]

 

E a paginação continua com

 

PHP [/tr][tr]<A HREF='busca.php?&pagina=$pg_proxima&nome=$pnome'>próxima</A>[/tr]

 

logo abaixo da query. Não funcionou, e agora ele dá as seguintes mensagens:

 

Notice: Undefined variable: pnome in E:\Home Pages\membros\busca.php on line 57

 

Notice: Undefined index: pnome in E:\Home Pages\membros\busca.php on line 59.

 

Devo mudar o form para GET?

 

Valeu!

 

Rosana

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você está passando os parametros pelo link, você deve usar $_GET[], para resgatar os dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, entendi. Então mudei o form para GET e coloquei no código:

 

PHP [/tr][tr]$pnome= $_GET["pnome"];[/tr]

 

A paginação continua como antes:

 

PHP [/tr][tr]<A HREF='busca.php?&pagina=$pg_proxima&nome=$pnome'>próxima</A>[/tr]

 

E continua dando as mesmas mensagens de erro! Os links para as páginas são criados, mas quando se clica nelas aparece essas mensagens de variáveis e índices não definidos. Olhei na URL e está assim:

 

http://localhost/membros/busca.php?&pagina=4&nome=

 

Ou seja, as informações do form NÃO estão passando para a URL, mesmo usando o método GET e o $_GET[] na página!! E agora? :wacko:

 

[]s!

 

Rosana

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente $HTTP_GET_VARS['variavel'] e $HTTP_POST_VARS['variavel'] ao inves de $_GET e $_POST.

 

Pq voce msma num faz seu script de busca?

 

O segredo esta na clausula SQL "limit"

 

Leia mais na Referência para o SELECT do MySQL

 

Esta clausula que especifica quantos registros serão retornados dentro de um limite.

 

PHP [/tr][tr]$sql = "SELECT * FROM nomes LIMIT 2,5"[/tr]

 

Retorna dentre todas as tuplas encontradas, somente a tupla 3 até a 8.

Compartilhar este post


Link para o post
Compartilhar em outros sites

$HTTP_GET_VARS['variavel'] também não funcionou, eu já havia testado isso antes.Não entendi o que você quis dizer com o limit... a busca (select) está funcionando, o que não funciona é a passagem dos dados digitados no formulário para as urls subsequentes da paginação...[]s!Rosana

Compartilhar este post


Link para o post
Compartilhar em outros sites

PHP [/tr][tr]<?php

echo "<A HREF=\"busca.php?&pagina=$pg_proxima&nome=$pnome\">próxima</A>\n";

?>

[/tr]

Compartilhar este post


Link para o post
Compartilhar em outros sites

O exemplo q postei é pra passar os dados pelo link, mas pra resgatar de qualquer modo será, por $_GET[].

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo... mas não sei por que não funciona. Não sei mesmo. Parece que tudo está certo, mas não funciona.[]s!Rosana

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.