Ir para conteúdo

POWERED BY:

Arquivado

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

paranoid

Sistema de Busca

Recommended Posts

Ola galera..Estou querendo criar um sistema de busca...É o seguinte tenho uma tabela no DB chamada cadastros, essa tabela possui as seguintes colunas:Nome, Sb_nome, Rua, Numero, Bairro, referencia, tel.Quero que o usuário tenha possibilidade de realizar uma pesquisa a partir do Nome ou da Rua ou os dois juntos.Um formulário assim:<form action="buscando.php" method="post">nome: <input type="text" name="nome">rua: <input type="text" name="rua"><input type="submit" value="buscar"></form>E que quando retornasse o resultado da busca, que exibisse todos os dados de cada usuário encontrado na busca.Ex: Resultados encontrados.Nome: leoSobrenome: portoRua: Henrique TerraNumero: 555Bairro: PassagemRef: Próximo a praça.Tel: 298148782Nome: leoSobrenome: silvaRua: ArdósiaNumero: 134Bairro: CentroRef: Próximo a quadra.Tel: 28732654------Pô se puderem comentar o código vai ajudar abessa;;;----Um Kara mt maneiro o nik117, me deu uma força, mas mesmo assim ainda não consegui fazer asse negócio..Valeww nik117, valew galera....aguardo a força... Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

huahuahua, é Níck171, hehehehehe

 

Ai, a Biblia ataca novamente, lá vai outra longa explicação bem detalhada, hehehe

 

Então cara é simples, se vai fazer o seguinte, coloca o formulário para enviar por GET

 

<form action="buscando.php" method="get">

nome: <input type="text" name="nome">

rua: <input type="text" name="rua">

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

</form>

 

Pergunta: Mas porque GET???

Resposta: Porque os dados vão ficar gravados na url, e quando você utilizar a paginação (Anterior 1 - 2 - 3 Próximo) ele vai continuar a pesquisa apartir do que tem na url.

 

Em method POST a query ia fazer isso:

 

Pagina atual

$query = mysql_query("SELECT * FROM tabela WHERE palavra LIKE '%$palavra%'");

 

Pagina seguinte

$query = mysql_query("SELECT * FROM tabela WHERE palavra LIKE '%%'");

 

Ele iria perder o valor, a unica maneira de fazer em modo post é por session, mas por get facilita mais.

 

Voltando ao assunto é simples.

 

Após submeter o formulário você vai receber os dados

 

PHP

[*]$nome = $_GET["nome"];

[*]$rua = $_GET["rua"];

 

Depois que os dados forem recebidos você vai fazer o seguinte:

 

PHP

[*]if (($nome != "") and ($rua != "")){

[*]$busca = mysql_query("SELECT * FROM cadastro WHERE Nome LIKE '%$nome%' and Rua LIKE '%$rua%");

[*]}else{

[*]

[*]if ($nome != ""){

[*]$busca = mysql_query("SELECT * FROM cadastro WHERE Nome LIKE '%$nome%'");

[*]}

[*]if ($rua != ""){

[*]$busca = mysql_query("SELECT * FROM cadastro WHERE Rua LIKE '%$rua%'");

[*]}

[*]}

[*]

[*]while ($hp = mysql_fetch_array($busca)){

[*]...

[*]...

[*]...

 

Oque estou fazendo aqui é simples, na linha

if (($nome != "") and ($rua != ""))

 

Eu vejo se o campo nome e rua forma preenchidos, se foram ele executa esta query

$busca = mysql_query("SELECT * FROM cadastro WHERE Nome LIKE '%$nome%' and Rua LIKE '%$rua%");

 

Agora se os 2 campos não foram preenchidos ele vai verificar se o nome foi, se foi ele faz esta query

$busca = mysql_query("SELECT * FROM cadastro WHERE Nome LIKE '%$nome%'");

 

Se ele não foi preenchido então ele verifica se o rua foi preenchido

$busca = mysql_query("SELECT * FROM cadastro WHERE Rua LIKE '%$rua%'");

 

 

 

Pergunta: Legal então meu script ja funciona???

Resposta: Ainda não, tem uma coisa importante a se fazer!!!!

 

 

 

Para não dar erro nenhum coloque assim:

 

O PHP_SELF é para ele enviar para o mesmo script que está sendo executado.

 

PHP

[*]<form action="<? $_SERVER[php_SELF];?>" method="post">

[*]nome: <input type="text" name="nome">

[*]rua: <input type="text" name="rua">

[*]<input type="hidden" name="enviado" value="enviado">

[*]<input type="submit" value="buscar">

[*]</form>

[*]

[*]<?

[*]if ($_GET["enviado"]){

[*]if (($nome != "") and ($rua != "")){

[*]$busca = mysql_query("SELECT * FROM cadastro WHERE Nome LIKE '%$nome%' and Rua LIKE '%$rua%");

[*]}else{

[*]

[*]if ($nome != ""){

[*]$busca = mysql_query("SELECT * FROM cadastro WHERE Nome LIKE '%$nome%'");

[*]}

[*]if ($rua != ""){

[*]$busca = mysql_query("SELECT * FROM cadastro WHERE Rua LIKE '%$rua%'");

[*]}

[*]}

[*]

[*]while ($hp = mysql_fetch_array($busca)){

[*]...

[*]...

[*]...

[*]}

 

Esse campo oculto enviado ai é para ele verificar se o formulário foi submetido, porque se ele for a $_GET["enviado"] sera submetida e isso dirá para o script que ele deve utilizar a query.

 

Se você não fizer isso, pode perceber que o loop

 

 

while ($hp = mysql_fetch_array($busca)){

 

iria ser chamado mesmo sem oq procurar, e como não foi digitado nada a variavel $busca não existe.

 

Oque ira ocasionar em um erro.

 

 

Flw ai espero ter ajudado desta vez http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

[crosspost]cara voce ta usando mysql ?se estiver existe o LIKEselect * from tabela WHERE campo LIKE valor AND campo LIKE valorse nao me engano usa assim o like, tentai , se nao der certo a gente corrige ^^[]'s[/crosspost:malz ai nick171]

Compartilhar este post


Link para o post
Compartilhar em outros sites

[crosspost]cara voce ta usando mysql ?

 

se estiver existe o LIKE

 

select * from tabela WHERE campo LIKE valor AND campo LIKE valor

 

se nao me engano usa assim o like, tentai , se nao der certo a gente corrige ^^

[]'s[/crosspost:malz ai nick171]

<{POST_SNAPBACK}>

Foi mal pq??? Relaxa

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

ae galera, valew...Vamos ver se vai funcionar...rsrs...acho q sim__Abraços!!!PO mas ae perde a falta wde conhecimento mas o que siguinifica o LIKE? e o sinal de % ae no código?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também fiquei curioso... o que é o LIKE e para que serve os %???Tem algum lugar com uma documentação sobre esses comandos mysql tipo like... set e coisas do gênero???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ficar brabo... mas eu não achei, devo procurar pelo que??? (esses iniciantes sempre enchenco o saco... <_< )

 

LIKE = COMO

 

% = Coringa

 

ou seja

 

WHERE Rua LIKE '%$rua%'" seguinifica

 

procurar Rua COMO (QUALQUER PARTE)$RUA

 

 

Falou

 

 

Adailton

 

Ref: http://dev.mysql.com/doc/mysql/pt/index.html

<{POST_SNAPBACK}>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae adailton, vê se ta certo...(se é isso q o like faz...)pedi pra realizar uma busca pela nome: leo.ae ele irá retorna nomes do bd que tenham algo próximo..Tipo: resultados encontrados.leoleonardoleonardesleozinhonardoleoé isso? aonde tiver algo que possa se a combinação de caracters passados ele vai retornar??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso mesmo.... ele vai te listar isso mesmo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Like faz isso mesmo, se você quiser achar uma palavra inteira

 

Para não ficar esse leo,leonardo....,leonardes,leozinho,nardoleo

 

Você deve utilizar WHERE $nome = '$palavra'

 

O problema é que se a pessoa procurar a palavra exata para achar algo.

 

Exemplo tme uma descrição de 5 linhas, se você foi querer buscar alguma palavra nela, desta maneira ele não procura, ele só vai encontrar se a pessoa digitar toda a prase esatamente como está lá

Compartilhar este post


Link para o post
Compartilhar em outros sites

so para completaracho que ninguem falou isso....o % é o coringa (certo)mais assim%palavra / procura por resultados que comecem com palavrapalavra% / procura por resultados que terminem com palavra%palavra% / procura por palavras que contenham palavra (no comeco, no meio e no fim)espero ter ajudado[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai paranoid eu postei lá em cima, só fazer o loop, olha na minha explicação.linha while 13 do segundo script, e 22 do terceiro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai ali é que depois do while ele continua, só você pensar bem.

 

Os campos da sua tabela são

Nome, Sb_nome, Rua, Numero, Bairro, referencia, tel.

 

A unica coisa que você tera que fazer, é pegar os dados da tabela e imprimir na tela.

 

PHP

[*]<form action="<? $_SERVER[php_SELF];?>" method="post">

[*]nome: <input type="text" name="nome">

[*]rua: <input type="text" name="rua">

[*]<input type="hidden" name="enviado" value="enviado">

[*]<input type="submit" value="buscar">

[*]</form>

[*]

[*]<?

[*]if ($_GET["enviado"]){

[*]if (($nome != "") and ($rua != "")){

[*]$busca = mysql_query("SELECT * FROM cadastro WHERE Nome LIKE '%$nome%' and Rua LIKE '%$rua%");

[*]}else{

[*]

[*]if ($nome != ""){

[*]$busca = mysql_query("SELECT * FROM cadastro WHERE Nome LIKE '%$nome%'");

[*]}

[*]if ($rua != ""){

[*]$busca = mysql_query("SELECT * FROM cadastro WHERE Rua LIKE '%$rua%'");

[*]}

[*]}

[*]

[*]while ($hp = mysql_fetch_array($busca)){

[*]$nome = $hp["Nome"];

[*]$sobrenome = $hp["Sb_nome"];

[*]$rua = $hp["Rua"];

[*]$numero = $hp["Numero"];

[*]$bairro = $hp["Bairro"];

[*]$referencia = $hp["referencia"];

[*]$tel = $hp["tel"];

[*]

[*]echo $nome ."|". $sobrenome ."|". $rua ."|". $numero ."<br>";

[*]echo $bairro ."|". $referencia ."|". $tel;

[*]}

 

Flw ai, qualquer dúvida é só postar http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

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.