Newton 0 Denunciar post Postado Fevereiro 27, 2005 Sou iniciante no mundo do PHP e gostaria de saber se alguem poderia me indicar um tutorial bom de como fazer uma busca interna num site em php.Agradeço desde já.AbraçosNewton ^^ Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Fevereiro 27, 2005 O proprio manual tem uma documentação boa e otimos exemplos Diretorios opendir readdir mas qualquer duvida poste ai Compartilhar este post Link para o post Compartilhar em outros sites
covered 0 Denunciar post Postado Fevereiro 27, 2005 AKI clica no link acima e procura pela paginação que tu vai achar fui eu que fiz este tutorial Compartilhar este post Link para o post Compartilhar em outros sites
Newton 0 Denunciar post Postado Março 1, 2005 AKIclica no link acima e procura pela paginação que tu vai acharfui eu que fiz este tutorial :wacko: Desculpe a minha ignorancia...mas é duro ser iniciante e não saber nada...Li seu tutorial mas não entendi.. :( Tipo..Lá você diz assim: "conexao.php:$host = "localhost"; //aqui eh o host do servidor mysql$user = "root"; //usuario$pwd = ""; //senha$bd = "colunas"; //banco de dados "Pelo o q eu entendi eu vou criar um arquivo chamado conexao.php, beleza...Mas e essas configs ai em cima tipo o bd? Eu crio ele lá no phpadmin (localhost/mysql/index.php)? É lá que eu vou colocar as palavras chaves para a busca? E onde eu faço isso?Se você ou alguma alma caridosa puder me dar um auxilio pelo msn eu agradeceria!! ^^ :) newton_campos@hotmail.comAbraços Compartilhar este post Link para o post Compartilhar em outros sites
lukascolette 0 Denunciar post Postado Março 1, 2005 kra, na net tem bastante, soh você procurar uma pesquisada. Eu axei este daki oh: ele eh muito bom, ele procura no diretorio: <?php/**************************************************\# siteBuusca! v1.0 ## ## Autor: Carlos Reche ## E-mail: carlosreche@yahoo.com ## ## Por favor, mantenha os créditos =) ## ## Sistema de busca em páginas da web. Não é ## necessário um banco de dados para trabalhar ## com este script. Apenas digite o caminha da ## raiz onde a busca deverá ocorrer, e ele irá ## buscar em todas as subpastas automaticamente. ## #\**************************************************///////////////////////// INÍCIO DA CONFIGURAÇÃO /////////////////////////* LEIA ANTES DE MEXER NA CONFIGURAÇÃO!!! -> Sempre que você for informar um diretório, informe o caminho relativo sem barras no início ou no final. Por exemplo, imagine que seu script de busca esteja em: "http://www.seunome.com.br/scripts/busca/busca.php", e você queira que o script interprete como sendo a raiz da busca a mesma pasta que é a raiz do site (ou seja, a pasta que conteria o diretório "scripts"). Então, neste caso você deveria configurar da seguinte forma: $secao_dir[0] = "../.." Nota: esta regra de configuração vale para este script. Ela pode não se aplicar em outros casos.*/// DIGITE O NOME E O CAMINHO DE CADA SEÇÃO EXISTENTE: (buscará por todos os subdiretórios automaticamente)// Você pode incluir mais de um valor, desde que mantenha a seqüência somando 1 (um) no índice.// Obs: para que a pasta da busca seja a mesma de onde se encontra este script, coloque apenas um ponto "."$secao_nome[0] = "Site todo";$secao_dir[0] = "../";$secao_nome[1] = "";$secao_dir[1] = "";$secao_nome[2] = "";$secao_dir[2] = "";// DIGITE O LIM??????A?<?phITE DE EXIBIÇÃO POR PÁGINAS $limite = 5;// TAMANHO MÍNIMO DA PALAVRA PARA QUE A BUSCA SEJA EXECUTADA (EM CARACTERES) $tamanho_min = 1;// DIGITE OS DIRETÓRIOS QUE DESEJA EXCLUIR DA BUSCA// Para adicionar novas exlusões de diretórios, copie e cole o modelo da última linha (que começa com "$exc++; ...").// Obs: Lembre-se de NÃO colocar uma barra no início ou no final do caminho, caso contrário não excluirá o diretório $exc=0; $excluir_dir[$exc] = ""; $exc++; $excluir_dir[$exc] = ""; $exc++; $excluir_dir[$exc] = "";/////////////// FIM DA CONFIGURAÇÃO - NÃO ALTERE OS VALORES ABAIXO SEM SABER ///////////////$diretorio[0] = @$secao_dir[@$_GET['secao']];function getmicrotime() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec);}function unhtmlentities($string) { $trans_tbl = get_html_translation_table(HTML_ENTITIES); $trans_tbl = array_flip ($trans_tbl); return strtr ($string, $trans_tbl);}function limpa_tag_scripts($string) { $exclui = array ("'(<\?).*?(\?>)'si", // Limpar tags PHP "'(<%).*?(%>)'si"); // Limpar tags ASP $substitui = array ("", ""); $string = preg_replace($exclui, $substitui, $string); return ($string);}function limpa($string) { $string = eregi_replace("%0D%0A", "+", urlencode($string)); // limpar "tecla enter" $string = eregi_replace(" ", " ", urldecode($string)); // limpar tabulações $exclui = array ("'<[\/\!]*?[^<>]*?>'si", // Limpar tags HTML "'([\r\n])[\s]+'", // Limpar espaços em branco "/ +/"); // Limpar espaços consecutivos $substitui = array ("", "\\1", " "); $string = preg_replace($exclui, $substitui, $string); return (trim($string));}///////////////////////////////// FIM DAS FUNÇÕES /////////////////////////////////$busca = trim(stripslashes(@$_GET['busca']));$busca = eregi_replace("\"", "", $busca);$busca_quebra = explode(" ", $busca);$achou_inicial = @$_GET['achou_inicial'];if (!@$_GET['achou_inicial']) { $achou_inicial = "1"; }if (!@$_GET['exibe_status']) { $_GET['exibe_status'] = "0"; }if (!@$_GET['secao']) { $_GET['secao'] = "0"; }?><html><head><title>siteBuusca! <?phpif ($busca) { echo " - Resultado da busca"; }?></title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><style type="text/css">body,table {color: #333333; font-family: tahoma; font-size: 11px;}a:link {color: #0066cc; text-decoration: none;}a:hover {color: #000000; text-decoration: none; background-color: #f5f5f5}a:active {color: #0066cc; text-decoration: none;}a:visited {text-decoration: none; color: #0066cc}.resultado {margin-top: -5px; margin-bottom: 30px; width: 700px;}.linha {margin-top: -5px; height: 1px; width: 780px; text-align: left; color: #006699;}</style></head><body topmargin="0" leftmargin="0" bottommargin="0" rightmargin="0"><form name="formulario" method="get" action="<?phpecho $_SERVER['PHP_SELF'] . "?busca=" . @$_GET['busca'];?>"> <div> Buscar por <input type="text" name="busca" size="50" style="border: solid 1 #0066cc; font-family: verdana; font-size: 10px" <?phpif (@$busca) { echo "value=\"" . $busca . "\" "; }?>/><select name="secao" style="border: solid 1 #0066cc; font-family: verdana; font-size: 10px; color: #0066cc"><?phpfor ($sec=0; !empty($secao_nome[$sec]) && !empty($secao_dir[$sec]); $sec++) { echo "<option value=\"" . $sec . "\" "; if ($_GET['secao'] == $sec) { echo "selected"; } echo ">" . $secao_nome[$sec] . "</option>";}?></select><input type="submit" value="Buscar" / style="border: solid 1 #0066cc; font-family: verdana; font-size: 10px; cursor: hand; background-color: #ffffff"><div style="margin-top: 10px; margin-left: 50px;"><input type="checkbox" value="1" name="exibe_status" <?phpif ($_GET['exibe_status'] == "1") { echo "checked"; }?>/> <font color="#006699">Exibir detalhes da busca (processo mais demorado) </font></div></div></form><?phpif ($busca) { foreach ($busca_quebra as $teste_uma) { if (strlen($teste_uma) >= $tamanho_min) { $ok = 1; } } if (@$ok != 1) { echo "<div style=\"margin-left: 30px;\"><strong>Atenção!</strong><br />"; echo "A(s) palavra(s) pesquisada(s) não atinge(m) o tamanho mínimo permitido!</div>"; echo $creditos . "</body>\n</html>\n"; exit; // sai do script caso nenhuma palavra atinja o tamanho mínimo permitido }ini_set("memory_limit", 100000000);// varre todos os subdiretórios$x = count($diretorio)-1;for ($y = "0"; isset($diretorio[$y]); $y++) { if ($dh = @opendir($diretorio[$y])) { while (($file = readdir($dh)) !== false) { if (is_dir("$diretorio[$y]/$file") && ($file != ".") && ($file != "..")) { $x++; $diretorio[$x] = $diretorio[$y] . "/" . $file; } } closedir($dh); }}clearstatcache();$tempo_i = getmicrotime();echo "<br /><br /><br /><br /><br /><br />";if ($_GET['exibe_status'] == "1") { echo "<br />\n\n"; }$procurou = "0";$achou = "0";$achados[0] = NULL;for ($i = 0; isset($diretorio[$i]); $i++) { // varre cada diretório encontradoif (($dh = @opendir($diretorio[$i])) && (!in_array($diretorio[$i], $excluir_dir))) { while (($arquivo = readdir($dh)) !== false) { $arq_quebra = explode(".", $arquivo); $ext = strtolower(end($arq_quebra)); // sai do laço "while" caso tenha passado do limite de exibição, otimizando o tempo no modo de busca sem detalhes if (($_GET['exibe_status'] != "1") && ($achou > $achou_inicial + $limite)) { break; } if (($arquivo != '.') && ($arquivo != '..') && ($ext != $arq_quebra[0]) && ($ext != false)) { if (($ext == "htm") || ($ext == "html") || ($ext == "php") || ($ext == "php3") || ($ext == "asp") || ($ext == "pdf") || ($ext == "txt")) { $procurou++; // determina o número de arquivos pesquisados $abre = file_get_contents("$diretorio[$i]/$arquivo"); $cam_quebra = explode("/", $_SERVER['PHP_SELF']); array_pop($cam_quebra); array_pop($cam_quebra); $cam_junta = implode("/", $cam_quebra); $caminho = "http://" . $_SERVER['HTTP_HOST']; $caminho .= $cam_junta; $caminho .= "/" . $diretorio[$i]; $caminho .= "/" . $arquivo; if (!ereg("\.\./", $caminho)) { $caminho = ereg_replace("\./", "", $caminho); } $abre = limpa_tag_scripts($abre); if (eregi("<title>", $abre)) { $titulo = preg_replace("'.*<title>|</title>.*'si", "", $abre); } else { $titulo = $caminho; } if (empty($titulo)) { $titulo = "(Página sem título)"; } $abre = strip_tags($abre); $abre = unhtmlentities($abre); $busca_quebra = explode(" ", $busca);foreach ($busca_quebra as $busca_uma) { if (strlen($busca_uma) < $tamanho_min) { continue; } if ((eregi($busca_uma, $abre) || eregi($busca_uma, $arquivo)) && !in_array("$diretorio[$i]/$arquivo", $achados)) { // determina o número de ocorrências e cria um array para não repetir resultados $achou++; $achados[$achou-1] = "$diretorio[$i]/$arquivo"; // sai do laço se estiver fora do intervalo de exibição pra economizar tempo if (($achou < $achou_inicial) || ($achou > $achou_inicial + $limite)) { continue; }// determina até onde irá a exibição dos resultadosif (($achou >= $achou_inicial) && ($achou < $achou_inicial + $limite)) { $texto = limpa($abre); $tamanho = strlen($texto); $pos = strpos(strtolower($texto), strtolower($busca_uma)); if ($pos > 100) { $texto = substr($texto, $pos-100, 300); } else if ($pos <= 100 && $pos > 50) { $texto = substr($texto, $pos-50, 300); } else { $texto = substr($texto, 0, 300); }/* Alternativa: $texto = preg_replace("/(^.{0,300})(\W+.*$)/", "\${1}", $texto); */ $texto_quebra = explode(" ", $texto); if ($pos > "0") { array_shift($texto_quebra); } if ($tamanho > "300") { array_pop($texto_quebra); } $texto = implode(" ", $texto_quebra); if ($pos > "0") { $texto = "... " . $texto;} if ($tamanho > 300) { $texto = $texto . " ..."; } echo "<strong>" . $achou . ". <a href=\"" . $diretorio[$i] . "/" . $arquivo . "\">"; echo $titulo . "</a></strong><hr class=\"linha\">\n"; echo "<div class=\"resultado\">\n"; foreach ($busca_quebra as $destaca) { if (strlen($destaca) < $tamanho_min) { continue; } $texto = preg_replace("/($destaca)/si", "<b>\\1</b>", $texto); } echo $texto; if (empty($texto)) { echo "(Página sem descrição)"; } echo "<div style=\"margin-top: 3px;\"><a href=\"" . $diretorio[$i] . "/" . $arquivo . "\">"; echo $caminho . "</a></div>\n\n</div>\n\n";} // if $achou > $limite } // if eregi()flush();clearstatcache();} // foreach } // if ($ext) } flush(); clearstatcache(); } // while flush(); clearstatcache(); closedir($dh);}flush();unset($diretorio[$i]);clearstatcache();} // fecha laço "for"$tempo_f = getmicrotime();$tempo_total = number_format($tempo_f-$tempo_i, 2, ",", ".");$anterior = $achou_inicial - $limite;$proximo = $achou_inicial + $limite;$url_anterior = $_SERVER['PHP_SELF'] . "?busca=" . urlencode(@$_GET['busca']) . "&achou_inicial=" . $anterior;$url_anterior .= "&secao=" . @$_GET['secao'] . "&exibe_status=" . $_GET['exibe_status'];$url_proximo = $_SERVER['PHP_SELF'] . "?busca=" . urlencode(@$_GET['busca']) . "&achou_inicial=" . $proximo;$url_proximo .= "&secao=" . @$_GET['secao'] . "&exibe_status=" . $_GET['exibe_status'];if (@$achou > "0") { echo "\n<br />\n<div align=\"center\" style=\"width: 730px\">\n<span style=\"color: #999999;\">\n"; if ($achou_inicial > 1) { echo "<a href=\"" . $url_anterior . "\">"; } echo "<strong>« Anterior</strong></a> | "; if ($achou > $proximo) { echo "<a href=\"" . $url_proximo . "\">"; } echo "<strong>Próximo »</strong></a>\n</span></div>\n\n";}// Início do layerif ($_GET['exibe_status'] == "1") { echo "\n\n<div style=\"position: absolute; top: 180px; left: 20px;\">";} else { echo "\n\n<div style=\"position: absolute; top: 160px; left: 20px;\">";}echo "<table border=\"0\" width=\"720\ cellpadding=\"0\" cellspacing=\"0\"><tr><td valign=\"top\" width=\"430\"> ";if ($_GET['exibe_status'] == "1") {if (@$achou > "0") { if (@$achou == "1") { echo "Foi encontrada <strong>" . $achou . "</strong> ocorrência "; } else { echo "Foram encontradas <strong>" . $achou . "</strong> ocorrências "; } echo "para o(s) termo(s) \"<strong>" . $busca . "</strong>\"</div>";}} else { echo " "; } // fecha if "exibe status"if (@$achou == "0") { echo "<br />Não houve ocorrências para o(s) termo(s) \"<strong>" . $busca . "</strong>\"";}echo "</td><td align=\"right\" width=\"300\">";if ($_GET['exibe_status'] == "1") { echo "<em>Total de " . $procurou . " arquivos pesquisados </em>";}echo "<br /><em>Tempo: " . $tempo_total . " segundos</em>";echo "</td></tr>\n<tr><td colspan=\"2\" align=\"center\" style=\"padding-top: 10px;\">";if (@$achou > "0") { echo "\n<br />\n\n<span style=\"color: #999999;\">\n"; if ($achou_inicial > 1) { echo "<a href=\"" . $url_anterior . "\">"; } echo "<strong>« Anterior</strong></a> | "; if ($achou > $proximo) { echo "<a href=\"" . $url_proximo . "\">"; } echo "<strong>Próximo »</strong></a>\n</span>\n\n</td></tr>\n</table>\n</div>\n\n";}} // fecha "if ($busca)"clearstatcache();if (!$busca) { echo ; }?></body></html>falow http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Compartilhar este post Link para o post Compartilhar em outros sites