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

Script Busca =/


Guest RedNeck

Pergunta

Guest RedNeck

Olah,

Antes que me xinguem queria dizer que sou cadastrado sim, porem esqueci minha senha tongue.gif... Enfim o que eu queria é um sistema de busca interna, funcao basica, ler todas as paginas que estao na pasta "e no site se for possivel" e retornar o que encontrou, creio eu que para quem manja isso não deve ser muito dificil...

Pois estou querendo fazer um site e pretendo ter muitas paginas, aqueles scripts prontos quase todos tem que por pagina por pagina, eu não queria algo simples que procurasse nas paginas e retornasse o que encontrou, alguém me entendeu?

Bom eu até tentei, mais não saiu nada tongue.gif alguém tem o script ae ? Posta pos tenho certeza que tem muitos "noobs" como eu que gostariam muito disso...

Enfim obrigado a todos

Boa noite.

RedNeck...

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0
Guest RedNeck

Sou programador não rapais sad.gif

Eu sou designer tongue.gif, eu cheguei uma epoca a mexer um pouquinho com js, mais php wacko.gif ...

não tem como arrumar codigos prontos? ohmy.gif

Ate logo

Link para o comentário
Compartilhar em outros sites

  • 0
Guest RedNeck

Eu tentei usar o do forum, posso ate não parecer mais sou esforcado para aprender as coisas....

não sei porque. Mais a pagina de busca fica 100% em branco..

Que esta acontecendo??!?

Link para o comentário
Compartilhar em outros sites

  • 0

Gladisson ...

Agora tu surpreendeu !! tongue.giftongue.giftongue.gif

Seguinte,

O que ele quer é que a busca procure pela palavra chave em todos os arquivos de uma determinada pasta e retorne os arquivos que contém aquela palavra chave !!

Entenderam ?

Não é pra mexer com BD ... e sim com essa estrutura !

Eu to meio sem tempo pra fazer um script assim ! Se alguém tiver pronto ou tiver tempo pra fazer e estiver disposto á posta aih depois !

Link para o comentário
Compartilhar em outros sites

  • 0
Gladisson ...

Agora tu surpreendeu !! tongue.giftongue.giftongue.gif

Seguinte,

O que ele quer é que a busca procure pela palavra chave em todos os arquivos de uma determinada pasta e retorne os arquivos que contém aquela palavra chave !!

Eu entendi sim, mais eu falei que seria 'mais fácil' ele utilizar banco de dados! cool.gif

E mesmo assim existe alguns scripts pronto do jeito que ele quer, ele tem que ir atraz tb né, foi o que eu falei pra ele fazer. wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0
Guest RedNeck

Eu tive que correr atras sad.gif, sabe foi ate bom aprendi uma pa de coisa Agradeco muito ao Pedro *valeu ae cara se me ajudou muitoo !*

Mais ele não teve tempo para achar os erros... Enfim vou postar o codigo voces podem dizer o que esta errado? :S thxxx.

<html> 

<body> 
<table width="100%"> 
 <tr> 
   <td width="3%">&nbsp;</td> 
   <td width="97%"> <form  name="form1"   method=POST action"<? echo $PATH_INFO;?>"> 
       <input type="text"  name="texto" value=""> 
       <input type="submit"   name="sb1"> 
     </form> 
     <br> <font color='blue'>Essas São Algumas Palavras Pra Teste<br> 
     Mas Se Pode Usar Quaisquer Iniciais:</font><br> 
     Loucos<br> 
     Personal Home Page<br> 
     Gasolina<br> 
     Macacada<br> 
     Caetano Veloso<br> <br> </td> 
 </tr> 
 <tr> 
   <td>&nbsp;</td> 
   <td align="left"  valign="top" > 
     <? 

//Definindo Variáveis 

settype($texto,'string'); 
settype($id,'string'); 
settype($file,'string'); 
settype($conteudo,'string'); 
settype($sentinela,'integer'); 

//Array Que Guarda Os Nomes 
//Dos Arquivos Disponiveis 
//Para Pesquisa 

// Note que !== não existia antes do PHP 4.0.0-RC2
$pasta = getcwd();
if ($handle = opendir($pasta)) {
   echo "Manipulador de diretório: $handle\n";
   echo "Arquivos:\n";

   /* Esta é a forma correta de varrer o diretório */
   $i = 0;
   while (false !== ($file = readdir($handle))) {
  $arquivo2[$i] = $file;
  $i = $i + 1;
  $nome_arquivo0 = explode(".", $file);
  $nome_arquivo = $nome_arquivo[0];
  $arquivo3[$i] = $nome_arquivo;
  	
   }
   closedir($handle);
}

//Variável Que Guarda 
//O Número De Aruivo 
//Contido No Array 

$contador=3; 

//Gera O Loop Exibindo 
//Todos Os Arquivos Em 
//Que Foram Positiva A Pesquisa 

if($texto !="") 
{ 
echo "<ul>"; 
for($i=0;$i<$contador;$i++){ 

$arquivo ="$arquivo2[$i]"; 
$arquivoB ="$arquivo3[$i]"; 

$id = fopen($arquivo, "r"); 

$conteudo = fread($id,filesize($arquivo)); 

//Apenas um truque para que alguns 
//caracteres não dê erro 

if($texto=="*" ||$texto=="?" ||$texto=="+") 
  {$texto="\$texto";} 

  if($texto=="[" ||$texto=="(" ) 
  {$texto="çç{%ÇÇÇ";} 
   
   
  //Analiza a palavra inserida, Procura 
  //em todos os arquivos colocados no array 
  //e retorna o valor 

  if(!feof ($id)== eregi($texto,$conteudo)  ) 
   
      
  {echo "<li  style='text-indent : 30px'><a href="."$arquivo".">$arquivoB</a></li><BR>"; 
   
  $sentinela=1; 
   } 
   
  } 
  echo "</ul>"; 
  //Caso A palavra não exista, a 
  //variável não assume valor algum 
  //e é impressa a mensagem abaixo 
   
  if(!$sentinela ) 
  {echo "<font size=3 color='red'>&nbsp;&nbsp;Desculpe Mas Essa Palavra Não Foi  Encontrada</font>";} 
  } 
      
         
?> 
   </td> 
 </tr> 
</table> 
</body> 
</html>

Vixi ta bem complicado, mais não ta funfando, ele não sei o que deu, ele não retorna o que achou ele sempre aparece a mensagem que não achou nada, mesmo se eu procurar o que existe.... sad.gif help plz... thx

rEd nEcK

Correndo atras doque precisa !

Link para o comentário
Compartilhar em outros sites

  • 0

Oi cara desculpe se eu te chatiei, o que eu falei de correr atraz, é botar a mão na massa cara tentar descobrir, aprender de verdade!

Veja alguns script que pode te ajudar:

http://phpbrasil.com/scripts/script.php/id/798

http://phpbrasil.com/scripts/script.php/id/58

http://phpbrasil.com/scripts/script.php/id/186

Link para o comentário
Compartilhar em outros sites

  • 0
Guest RedNeck

Valeu ae Gladisson....

Eu procurei e consegui ! So tem 1 porem... Preciso de um comando que não leia tags html, pois o sistema de busca ele não ta conseguindo identificar "tudo" sabe? sera que tem algum comando que sirva para "esconder" as tags html para que a busca funcione 100%?

vou postar o codigo:

busca.php

<html>
<head><title>Busca - Músicas</title></head>
<style>
.fontNormal     { font-family: Verdana; font-size: 10px; color: #333333; font-weight: normal; text-decoration: none; }
.fontLink       { font-family: Verdana; font-size: 12px; color: #000000; font-weight: normal; text-decoration: none; }
.fontLink:hover { font-family: Verdana; font-size: 12px; color: #333333; font-weight: normal; text-decoration: underline; }
.inputText      { font-family: Verdana; font-size: 10px; color: #333333; font-weight: normal; text-decoration: none; background-color: #F8F8F8; border: 1px solid #333333; height: 20px; width: 200px; padding: 2px; }
.inputButton    { font-family: Verdana; font-size: 10px; color: #000000; font-weight: normal; text-decoration: none; background-color: #F8F8F8; height: 19px; }
</style>
<body bgcolor="#aabbee">
<table align="center">
  <tr>
    <td align="center">
      <form name="form1" method="POST" action="">
        <input type="text" name="texto" class="inputText">
        <input type="submit" name="sb1" value="OK" class="inputButton">
      </form>
    </td>
  </tr>
  <tr>
    <td height="20"></td>
  </tr>
  <tr>
    <td>
    <?

      // Variável que quarda
      // a palavra a ser buscada

      $texto = $_POST["texto"];

      //Definindo Variáveis
      /*
      settype($texto,'string');
      settype($id,'string');
      settype($arquivo,'string');
      settype($conteudo,'string');
      settype($sentinela,'integer');
      */
      include("config.php");

      // Variável que guarda
      // o número de arquivos
      // contidos no array

      $contador = count($arquivo2);

      // Gera o loop exibindo
      // todos os arquivos em
      // que foram positiva a pesquisa

      if( $texto != "" ) {

         for( $i=0; $i < $contador; $i++ ) {

            $arquivo  = "$arquivo2[$i]";
            $arquivoB = "$arquivo3[$i]";

            $id = fopen( $arquivo, "r" );

            $conteudo = fread( $id, filesize( $arquivo ) );

            // Apenas um truque para que alguns
            // caracteres não dê erro

            if( $texto == "*" || $texto == "?" || $texto == "+" ) {
               $texto = "\$texto";
            }
            if( $texto == "[" || $texto == "(" ) {
               $texto = "çç{%ÇÇÇ";
            }

            // Analiza a palavra inserida, procura
            // em todos os arquivos colocados no array
            // e retorna o valor       
            if(eregi( $texto, $conteudo ) ) {

               echo "<a class=\"fontLink\" href=\"" . $arquivo . "\">" . eregi_replace( $texto, "<b>" . $texto . "</b>", $arquivoB ) . "</a><br>";

               $sentinela = "1";
            }
         }
         // Caso a palavra não exista, a
         // variável não assume valor algum
         // e é impressa a mensagem abaixo

         if( !$sentinela ) {
            echo "<h6 class=\"inputText\" align=\"center\">Desculpe <br />Essa palavra não foi encontrada</h6>";
         }
      }
    ?>

    </td>
  </tr>
</table>
</body>
</html>
config.php
<?php
if(isset($_POST['texto'])){
$dir = "./";
$dh = opendir($dir);
$x=0;
   while (false !== ($filename = readdir($dh))){
      if (substr($filename,-5) == ".html") {
        $lines=file($filename);
        $arquivo2[$x]= $filename;
        $arquivo3[$x]= $lines[0];
        $x++;
      }
   }
}
?>

alguém me entendeu? Ou melhor me entende? Se possivel ajude plz?

E Gladisson relaxa voce não me chatiou de modo algum, muito pelo ocontrario me insentivol a correr atras, e isso foi otimo, pelo menos agora tenho base, se tiver que fazer outro não terei que ficar postando o codigo inteiro de novo, terei so que postar algumas partes ! tongue.gif e eu pesso desculpas se pareci preguisso, mais é falta de tempo mesmo :S so esse script me tomou o dia todo, e eu trabalho 7 dias por semana, sad.gif tenso...

Bom de qualquer jeito muito obrigado

Quem poder ajudar

Thxxxx

Link para o comentário
Compartilhar em outros sites

  • 0

Ai RedNeck, eu montei um sistema simples que pode ser o começo pra você ir se aprofundando mais:

<?

$html = <<< EOF

<FORM METHOD='POST'>

Buscar por:<BR>

<INPUT NAME='texto' TYPE='text' SIZE='20'><BR>

<INPUT TYPE='submit' VALUE='Pesquiza'>

</FORM><BR>

EOF;

echo $html;

if(strlen($_POST['texto'])>0)

{

/********************************\

* » 1º Título                  *

* » 2º Conteúdo                *

* » 3º Link                    *

\********************************/

$t[0] = "PHP o Melhor Sistema";

$c[0] = "O php é o melhor sistema para internet que existe!";

$l[0] = "php_o_melhor.php";

$t[1] = "Programador PHP";

$c[1] = "Se você quizer contratar um grande programador PHP, pode me contratar!";

$l[1] = "programador_gso.php";

$t[2] = "Cifras";

$c[2] = "Cifras de montão aproveite logo!";

$l[2] = "cifra.php";

echo "Palavra procurada: <B>".$_POST['texto']."</B><BR><BR><HR>";

for($i=0;$i<count($t);$i++)

{

if(eregi($_POST['texto'],$t[$i]) OR eregi($_POST['texto'],$c[$i]))

{

echo "<LI><A HREF='".$l[$i]."'>".$t[$i]."</A></LI><BR>";

echo "» ".$c[$i]."<HR><BR>";

$x=x;

}

}

if(!isset($x))

{

echo "Não houve resultado na pesquiza";

}

}

?>

Até mais! wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Valeu Gladisson, so que deixa eu ver se eu entendi

/********************************\
* » 1º Título                  *
* » 2º Conteúdo                *
* » 3º Link                    *
\********************************/

$t[0] = "PHP o Melhor Sistema";
$c[0] = "O php é o melhor sistema para internet que existe!";
$l[0] = "php_o_melhor.php";

$t[1] = "Programador PHP";
$c[1] = "Se você quizer contratar um grande programador PHP, pode me contratar!";
$l[1] = "programador_gso.php";

$t[2] = "Cifras";
$c[2] = "Cifras de montão aproveite logo!";
$l[2] = "cifra.php";

Isso não quer dizer que não é dinamico? ^o)

Muito legal o script porem adicionar pagina por pagina é bem complicado, entende?

Volto a perguntar: não EXISTE UM COMANDO QUE não DEIXE O PHP LER O HTML?

Isso iria me ajudar demais, se não existir o comando sad.gif ae já era...

É isso,

Obrigado

Abracos

Link para o comentário
Compartilhar em outros sites

  • 0

Quando você faz uma busca nos arquivos existente na pasta ele lê o arquivo inteiro ai passa tudo no comando, e vai se tornar muito lento a pesquiza, mais você pode colocar uns códigos para que não leia eu não testei nada ainda do gênero, mais vou ver o que posso fazer ai se conseguir algo legal, eu passo.

O script que passei você valou que não é dinâmico não entendi ?! Dinâmico em que sentido ?!

Link para o comentário
Compartilhar em outros sites

  • 0

A busca ficaria muito lenta ? Realmente não pensei dessa forma, o script não é dinamico *quis dizer que não procura sozinho, entendeu? voce teria que adicionar pagina por pagina.. Estou certo?

Abracos e obrigado.!

Link para o comentário
Compartilhar em outros sites

  • 0

Por exemplo, existe esse fórum, vamos supor que cada tópico deste fórum fosse uma página assim: 'topico_12376.php', ai você vai fazer a busca, varendo os diretórios seria muitos arquivos que ele ira abrir e ler tudo que tem dentro coisa que não seá util tipo o meu nick, a minha assinatura e tudo mais até terminar levaria uma vida.

Então pra esse tipo de busca não ser demorado você terá que já ter tudo padronizado.

existe tb uma forma de ser mais 'dinâmico', você criando um banco de dados para cada página sua 'pode ser em txt', ai vai está tudo separado, ai vai ser tudo mais dinâmico, e mais rápido, e outro poderão até escrever sua propria mensagem, mais isso requer um pouco de conheciemento php.

Link para o comentário
Compartilhar em outros sites

  • 0
Hmmmm hmmm, mais no caso se eu criasse o bd eu teria que por pagina por pagina que eu criasse no bd?

Sei que você já deve ter observado na maiorias dos portais assim:

Em cima: o banner e o logo do site.

do lado esquerdo: o menu

do lado direito: algo mais como enquete, busca, indicações e tal..

e em baixo: os direitos que fez o site e blablabla...

e finamente no meio, é que setá sempre mudando, não é isso eles utilizão banco de dados, tudo fica mais rapido e gasta pouco espaço no servidor.

Tipo assim: noticia.php?cod=8

Ai aparece tudo, né! Mais o que se refere a pate do meio é o cod=8, se você botar cod=7 irá mudar o contúdo do meio, e ai para fazer a busca é mais simples e super rápido ele procura exatamente o que está na página e varias vezes mais rápido a busca do que listando em um diretório, e assim mesmo você iria gastar mais tempo fazendo cada página e aumentanto a quantidade de arquivos no servidor, sendo assim o trabalho fica duplicado, há não ser que você já tenha tudo em arquivos html, mais ai e sugiro que você passe tudo pro banco de dados.

Link para o comentário
Compartilhar em outros sites

  • 0

Vixi cara voce fala muito complicado :S hehehee, assim se no proximo poste puder falar 1 pouco menos "dificil" eu agradeco, mais enfim acho que entendi o que voce quis dizer.

Assim

voce quis dizer que os sites invés de ser :

http://localhost/pagina1.php
http://localhost/pagina2.php
http://localhost/pagina3.php
http://localhost/pagina4.php
http://localhost/pagina5.php
são assim :
http://localhost/index.php?area=pagina1
http://localhost/index.php?area=pagina2
http://localhost/index.php?area=pagina3
http://localhost/index.php?area=pagina4
http://localhost/index.php?area=pagina5
é isso? se for isso eu uso isso no meu site, o codigo é esse :
<?

if(empty($area)

{
  
include("index.php");
    
}else{

  include("$area.php");
  }
?>

Eu falei certo?

Bom isso foi o que entendi, mais se estou certo isso usa database?!?! vixi to confuso hehehee... Tente falar um pouco mais "facil" pois sou "pivete", não sei nada de linguagem de adulto..

Bom é isso

Novamente agradeco a tudo

Até logo

Link para o comentário
Compartilhar em outros sites

  • 0
voce quis dizer que os sites invés de ser :

http://localhost/pagina1.php
http://localhost/pagina2.php
http://localhost/pagina3.php
http://localhost/pagina4.php
http://localhost/pagina5.php
são assim :
http://localhost/index.php?area=pagina1
http://localhost/index.php?area=pagina2
http://localhost/index.php?area=pagina3
http://localhost/index.php?area=pagina4
http://localhost/index.php?area=pagina5

Exatamente!

Mais no caso, você não utilizará include "pagina1.php"; .... , os dados serão puxado do banco de dados.

Com o tempo você vai aprender, não se preocupe isso é de dar confusão mesmo quando se está aprendendo. biggrin.gif

Link para o comentário
Compartilhar em outros sites

  • 0

O foda é que não tem como eu pega fundo no assunto, :S eu estudo e trabalho, saiu de casa as 6 da manha so volto as 6 ou 7 da noite...

Mexo no pc quase nada...

Mais vou tentar !

E voce vai me ajudar ne?

Obrigadao por tudo

Abracos.

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...