Bom tarde, amigos
Conseguir um sistema de busca, só que ele só busca nas páginas do diretório. Gostaria de colocá-lo também no MySQL.
Ex: quando peço uma busca, ele só procura na página do site no sistema de notícia ele não busca. Para entender melhor, favor acessar www.ideiabr.com/busca.php e digite fotos por exemplo. Aí ele acha, se você digitar Aradhia (essa palavra está na notícia), ela não acha.
Já tentei fazer a conexão com o banco e faz, porém não pesquisa na tabela "manchete" que é a tabela onde esta as notícias
Segue o código:
<?php
//////////////////////// 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.c...usca/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] = "Todo o site";
$secao_dir[0] = ".";
$secao_nome[1] = "";
$secao_dir[1] = "";
$secao_nome[2] = "";
$secao_dir[2] = "";
// DIGITE O LIMITE DE EXIBIÇÃO POR PÁGINAS
$limite = 10;
// 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] = "";
/////////////// 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>idéia Brasil - 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: 10px; margin-bottom: 30px; width: 700px;}
.linha {margin-top: -0px; height: 1px; width: 720px; text-align: left; color: #006699;}
</style>
</head>
<body topmargin="0" leftmargin="0" bottommargin="0" rightmargin="0">
<form name="formulario" method="get" action="<?php
echo $_SERVER['PHP_SELF'] . "?busca=" . @$_GET['busca'];
?>">
<div>
Buscar por
<input type="text" name="busca" size="20" style="border: solid 1 #0066cc; font-family: verdana; font-size: 10px" <?php
if (@$busca) { echo "value=\"" . $busca . "\" "; }
?>/>
<select name="secao" style="border: solid 1 #0066cc; font-family: verdana; font-size: 10px; color: #0066cc">
<?php
for ($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;"></div>
</div>
</form>
<table width="750" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td>
<?php
if ($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 encontrado
if (($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 resultados
if (($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 layer
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>\"";
}
} // fecha "if ($busca)"
clearstatcache();
if (!$busca) { echo ; }
?>

O Siste De Busca Não Busca No Mysql
Started By wendelfla, 19/03/2007, 15:32
2 replies to this topic
#1
Posted 19/03/2007, 15:32
Wendel Lobão
www.ideiabr.com
www.ideiabr.com
#2
Posted 19/03/2007, 16:13
Existe uma seção para Duvidas de scripts prontos ?
O_o
O_o
Procurando freelancer
***********************************************
Bachelor of Technology in Technology of Information, with great knowledge in Windows operating systems and Unix-Like (BSD, Ubuntu and Slackware), languages (PHP, JavaScript and MySQL), semantic (DHTML, Tableless, Ajax, MVC, OO) and analysis (manages projects based on PMI).
Developer in PHP, JAVA, Python, Objective-c MySQL, DHTML, CSS, JAVASCRIPT, JQUERY, JSON, SMARTY, MDB2, DOCTRINE, CAKEPHP. Linux desktop for work and MacOS. E-commerces, CRM and bussiness strategys
Love-me and be FREE use UniCes-Like .
***********************************************
Bachelor of Technology in Technology of Information, with great knowledge in Windows operating systems and Unix-Like (BSD, Ubuntu and Slackware), languages (PHP, JavaScript and MySQL), semantic (DHTML, Tableless, Ajax, MVC, OO) and analysis (manages projects based on PMI).
Developer in PHP, JAVA, Python, Objective-c MySQL, DHTML, CSS, JAVASCRIPT, JQUERY, JSON, SMARTY, MDB2, DOCTRINE, CAKEPHP. Linux desktop for work and MacOS. E-commerces, CRM and bussiness strategys
Love-me and be FREE use UniCes-Like .
#3
Posted 19/03/2007, 17:04
Esquece esse script acima.... conseguir outro e o erro agora foi no resultado da pesquisa
o endereço: www.ideiabr.com/busca1.php
Oi, valeu a força de todos vocês.... mas conseguir outro script e o erro agora é no resultado da pesquisa. ele se conecta beleza, mas dá erro na resposta:
o endereço dele é ideiabr.com/busca1.php
O ERRO:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/ideiabr/public_html/busca1.php on line 38
Sua busca retornou '' resultados.
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/ideiabr/public_html/busca1.php on line 43
O SCRIPT:
<?php
$bdhost = ("localhost"); // host
$bdnome = ("ideiabr_not"); // banco de dados
$bdusuario = ("ideiabr_not"); // usuario
$bdsenha = ("0100"); // senha
$dbh=mysql_connect ("$bdhost", "$bdusuario", "$bdsenha") or die ('I cannot connect to the
database because: ' . mysql_error());
mysql_select_db ("$bdnome");
?>
<FORM method="post">
Busca: <INPUT name="palavra">
<INPUT type="submit" value="Buscar">
</FORM>
<?php
if(!empty($HTTP_POST_VARS["palavra"])) {
$palavra = str_replace(" ", "%", $HTTP_POST_VARS[palavra]);
/* Altera os espaços adicionando no lugar o simbolo % */
$qr = "SELECT * FROM noticias WHERE titulo LIKE '%".$palavra."%' ORDER BY codigo
DESC";
// Executa a query no Banco de Dados
$sql = mysql_query($qr);
// Conta o total ded resultados encontrados
$total = mysql_num_rows($sql);
echo "Sua busca retornou '$total' resultados.";
// Gera o Loop com os resultados
while($r = mysql_fetch_array($sql)) {
echo "<hr>";
echo $r["noticia"];
}
}
?>
o endereço: www.ideiabr.com/busca1.php
Oi, valeu a força de todos vocês.... mas conseguir outro script e o erro agora é no resultado da pesquisa. ele se conecta beleza, mas dá erro na resposta:
o endereço dele é ideiabr.com/busca1.php
O ERRO:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/ideiabr/public_html/busca1.php on line 38
Sua busca retornou '' resultados.
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/ideiabr/public_html/busca1.php on line 43
O SCRIPT:
<?php
$bdhost = ("localhost"); // host
$bdnome = ("ideiabr_not"); // banco de dados
$bdusuario = ("ideiabr_not"); // usuario
$bdsenha = ("0100"); // senha
$dbh=mysql_connect ("$bdhost", "$bdusuario", "$bdsenha") or die ('I cannot connect to the
database because: ' . mysql_error());
mysql_select_db ("$bdnome");
?>
<FORM method="post">
Busca: <INPUT name="palavra">
<INPUT type="submit" value="Buscar">
</FORM>
<?php
if(!empty($HTTP_POST_VARS["palavra"])) {
$palavra = str_replace(" ", "%", $HTTP_POST_VARS[palavra]);
/* Altera os espaços adicionando no lugar o simbolo % */
$qr = "SELECT * FROM noticias WHERE titulo LIKE '%".$palavra."%' ORDER BY codigo
DESC";
// Executa a query no Banco de Dados
$sql = mysql_query($qr);
// Conta o total ded resultados encontrados
$total = mysql_num_rows($sql);
echo "Sua busca retornou '$total' resultados.";
// Gera o Loop com os resultados
while($r = mysql_fetch_array($sql)) {
echo "<hr>";
echo $r["noticia"];
}
}
?>
Wendel Lobão
www.ideiabr.com
www.ideiabr.com
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)