paranoid 0 Denunciar post Postado Junho 28, 2005 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
Nícolas 4 Denunciar post Postado Junho 28, 2005 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
red neck * 0 Denunciar post Postado Junho 28, 2005 [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
Nícolas 4 Denunciar post Postado Junho 28, 2005 [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
paranoid 0 Denunciar post Postado Junho 28, 2005 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
kidh0 0 Denunciar post Postado Junho 28, 2005 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
kidh0 0 Denunciar post Postado Junho 28, 2005 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
paranoid 0 Denunciar post Postado Junho 28, 2005 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
wolfphw 60 Denunciar post Postado Junho 28, 2005 Isso mesmo.... ele vai te listar isso mesmo... Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Junho 28, 2005 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
red neck * 0 Denunciar post Postado Junho 28, 2005 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
paranoid 0 Denunciar post Postado Junho 28, 2005 PO valew msm galera....Abração...Daqui a pouco deve surgi mas algumas dúvidas....rsrsrsmas conto com essa galerinha fera....valew..... Compartilhar este post Link para o post Compartilhar em outros sites
paranoid 0 Denunciar post Postado Junho 29, 2005 Ae nik... show....mas agora como faço para exibir o resultado da busca??Valeww...abraços..... Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Junho 29, 2005 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
paranoid 0 Denunciar post Postado Junho 29, 2005 nike.. mas naum tem que colokar um echo ou alguma coisa assim naum?? Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Junho 29, 2005 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
paranoid 0 Denunciar post Postado Junho 29, 2005 valew.. nik...valew msm....abraços....boa madruga...rsrsrs Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Junho 29, 2005 Opa, precisar tamo ai véio Compartilhar este post Link para o post Compartilhar em outros sites