Jump to content


Photo

Sistema De Busca


  • Faça o login para participar
9 replies to this topic

#1 Gabriel

Gabriel

    CGI & PHP até Morre!!!!

  • Usuários
  • 573 posts
  • Sexo:Não informado
  • Localidade:Santo Andre-SP
  • Interesses:http://www.divulgue-me.com

Posted 08/05/2004, 15:19

COmo criar um pequeno sistema de busca

Vejam o seguinte codigo:
#!/usr/bin/perl
#######
# Aqui vem os header e comandos do modulo CGI
#######
print "Content-type: text/html\n\n";
use CGI;
$cgi = new CGI;
$key = $cgi->param("key");

#######
# Criamos o topo da busca
#######

print qq~
<center><h2>Sistema de busca</h2><hr>
<form method="Post">
Buscar por: <input type="text" name="key"> <input type="submit" value="Pesquisar">
</form>
~;

#######
# Codigo
#######

if($key ne ""){ # se $key for diferente de ""

open(BD,"sites.dat"); # supondo que o arquivo seja com os dados seja o sites.dat
@bd=<BD>; # colocams os dados em uma array
close(BD); #fechamos o bd

$key2 = uc($key); # deichmamos as palavras buscadas em minusculo em uma nova variavel
print "Buscando por <b>$key</b><br><br>";
$var = "0"; # criamos uma nova var para saber se teve resultado

foreach(@bd){ #damos um loop
chop; # tiramos os espaços em branco
($nome,$url,$descricao) = split(/\|/,$_); #separamos os campos
$descr = uc($descricao);  # deichmamos a descricao em minusculo em uma nova variavel
if($key2 ~= /$descr/i){ #aqui vemos se tem $key2 no meio de $descr
# se tiver, impimi e conta +1 a $var

print qq~
<a href="$url" target="_blank">$nome</a>: $descricao<br>
~;
$var +="1"; #soma +1 a $var (pode-se usar tbm $var++;)
} #fecha o if da verificação
} #fecha o loop

#agora vemos se $var for igual a "0", se for, nao econtrou nenhum resultado
if($var eq "0"){
print "Não econtramos nenhum resultado para <b>$key</b>";
}

#agora fechamos o if
}

Abraços

Edição feita por: Gabriel, 08/05/2004, 15:26.

Editado pela equipe Forum Wmo, favor ler as regras.

#2 Whitesnake

Whitesnake
  • Visitantes

Posted 08/05/2004, 15:26

Bem legal kra.... + tipo esse sites.dat contém a lista de sites em q formato? um por linha?

#3 Gabriel

Gabriel

    CGI & PHP até Morre!!!!

  • Usuários
  • 573 posts
  • Sexo:Não informado
  • Localidade:Santo Andre-SP
  • Interesses:http://www.divulgue-me.com

Posted 08/05/2004, 15:28

ficariam assim o bd
WMCLUBE|http://www.wmclube.com.br|Site dedicado a webmasters
Divulgue-Me.com|http://www.divulgue-me.com|Site de divulgação de sites em mecanismos de busca
MeuHosting|http://www.meuhosting.com.br|O melhor hosting de todos os tempos, confiram

abraços

Edição feita por: Gabriel, 05/11/2006, 23:00.

Editado pela equipe Forum Wmo, favor ler as regras.

#4 prix

prix

    Duracell: E Duram, Duram, Duram...

  • Usuários
  • 562 posts
  • Sexo:Não informado
  • Interesses:keep walking ...
    jonny walker

Posted 08/05/2004, 19:50

ERRO:
chop; # tiramos os espaços em branco

use o comando chomp

pois se a ultima linha nao tiver \n ou tiver algum problema no sistema o chop ira comer um caractere do sistema.

print join'',(reverse  map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;


E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.

#5 Inu

Inu

    Veterano

  • Usuários
  • 1138 posts
  • Sexo:Masculino
  • Localidade:Canela, Rio Grande do Sul, Brasil

Posted 11/09/2005, 21:04

[Sun Sep 11 21:08:08 2005] [error] [client 127.0.0.1] Execution of c:\appserv\www\busca.cgi aborted due to compilation errors.

se der o erro acima, troque:
if($key2 ~= /$descr/i){ #aqui vemos se tem $key2 no meio de $descr
para
if($key2 = /$descr/i){ #aqui vemos se tem $key2 no meio de $descr

ok?

Edição feita por: Inu, 11/09/2005, 21:05.


#6 prix

prix

    Duracell: E Duram, Duram, Duram...

  • Usuários
  • 562 posts
  • Sexo:Não informado
  • Interesses:keep walking ...
    jonny walker

Posted 11/09/2005, 21:55

incorreto, /$descr/i eh um fator para comparação , deve-se usar
=~

ficando:

if($key2 =~ /$descr/i){

o erro ai eh que o ~ deve vir depois e nao antes do =

Edição feita por: prix, 11/09/2005, 21:56.

print join'',(reverse  map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;


E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.

#7 Inu

Inu

    Veterano

  • Usuários
  • 1138 posts
  • Sexo:Masculino
  • Localidade:Canela, Rio Grande do Sul, Brasil

Posted 11/09/2005, 22:04

aqui funcionou normal sem o ~!

#8 prix

prix

    Duracell: E Duram, Duram, Duram...

  • Usuários
  • 562 posts
  • Sexo:Não informado
  • Interesses:keep walking ...
    jonny walker

Posted 11/09/2005, 22:28

bom isso eh referente a fatores de vinculos ou sem vinculos.

sao usados para comparações mais complexas.

por exemplo (do jeito que esta, ira resultar em diferente, se vc mudar o $variavel para teste, ira dar igual.):

$variavel = 'asd';

print "Content-Type: text/html\n\n";

if ($variavel !~ /teste/i) {
print "diferente\n";
} else {
print "igual\n";
}


porem se voce tirar o ~ que nem fez no =~ ele nao ira funcionar.

outro exemplo(neste exemplo a variavel sendo teste ele vira igual sendo outro valor ela nao se da por igual, e se voce colocar a variavel com o valor teste e tirar o ~ do =~ ele da diferente, logo o seu codigo esta errado:

$variavel = 'asd';

print "Content-Type: text/html\n\n";

if ($variavel =~ /teste/i) {
print "igual\n";
} else {
print "diferente\n";
}


Por que da errado ? por que ela inclui um valor extra na pesquisa um valor nao real que na comparação vira um erro.

Edição feita por: prix, 11/09/2005, 22:29.

print join'',(reverse  map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;


E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.

#9 Inu

Inu

    Veterano

  • Usuários
  • 1138 posts
  • Sexo:Masculino
  • Localidade:Canela, Rio Grande do Sul, Brasil

Posted 12/09/2005, 12:32

agora eu entendi, mas pq se eu tirar o ~ o erro para e o script funciona?

#10 prix

prix

    Duracell: E Duram, Duram, Duram...

  • Usuários
  • 562 posts
  • Sexo:Não informado
  • Interesses:keep walking ...
    jonny walker

Posted 12/09/2005, 16:24

por que ele tenta fazer outro tipo de comparação.
no caso ($key2 = /$descr/i)

Edição feita por: prix, 12/09/2005, 16:24.

print join'',(reverse  map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;


E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.




1 user(s) are reading this topic

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

IPB Skin By Virteq