wendel 0 Denunciar post Postado Março 19, 2007 Bom dia, amigosConseguir 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.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ícioou 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 interpretecomo sendo a raiz da busca a mesma pasta que é a raiz do site (ou seja, a pasta que conteriao 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="<?phpecho $_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" <?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;"></div></div></form><table width="750" border="0" align="center" cellpadding="0" cellspacing="0"><tr><td><?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 detalhesif (($_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 tempoif (($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();} // whileflush();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") {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 ; }?> Compartilhar este post Link para o post Compartilhar em outros sites
David Ramires 1 Denunciar post Postado Março 19, 2007 borther... bom dia.. onde está a conexão com o BD ? Compartilhar este post Link para o post Compartilhar em outros sites
wendel 0 Denunciar post Postado Março 19, 2007 Bom dia, DavidÉ justamente isso... não tem conexão com o banco. Você sabe onde posso encontrar essa função?Valeu Compartilhar este post Link para o post Compartilhar em outros sites
David Ramires 1 Denunciar post Postado Março 19, 2007 então, você pode procurar aqui no fórum mesmo na parte do laboratório de scripts, sobre conexao com BD .... bom o básico seria isso $conexao = mysql_connect("localhost", "usuario", "senha" );mysql_select_db("nomedobanco", $conexao) or die(mysql_error()); ou para falicitar a vida, procure uma classe de conexao com bd beleza... qualquer coisa poste ae Compartilhar este post Link para o post Compartilhar em outros sites
wendel 0 Denunciar post Postado Março 19, 2007 OI,Eu coloquei esses dados que você passou e deu erro:Access denied for user 'ideiabr_not'@'localhost' to database 'manchete' Compartilhar este post Link para o post Compartilhar em outros sites
David Ramires 1 Denunciar post Postado Março 19, 2007 beleza.... bom tenha certeza que o database 'manchete' existe... Compartilhar este post Link para o post Compartilhar em outros sites
nb-master 0 Denunciar post Postado Março 19, 2007 Access denied for user 'ideiabr_not'@'localhost' to database 'manchete'Qual o nome de usuario e senha que você colocou??O erro é o seguinte o usuarios nao possui direito(inserir/excluir e update) sobre o BD ou o mesmo nao existe. Compartilhar este post Link para o post Compartilhar em outros sites
wendel 0 Denunciar post Postado Março 19, 2007 Oi,As informações (login e senha) estão certas...rsrsrsrlogin: xxxxxxxxxxsenha: xxxxxxxbanco: xxxxxxx Compartilhar este post Link para o post Compartilhar em outros sites
nb-master 0 Denunciar post Postado Março 19, 2007 você ta utlizando o Cpanel? tem que da permisao "ALL"para o usuario sobre o seu BD. Compartilhar este post Link para o post Compartilhar em outros sites
wendel 0 Denunciar post Postado Março 19, 2007 é pelo cpanel sim, ele tem permissão pois já uso esse sistema de notícia a uns dois anos. Agora resolvi colocar uma buscasó não alterei o localhost, o usuário, senha e banco estão corretoso endereço é esse: www.ideiabr.com/busca.php Compartilhar este post Link para o post Compartilhar em outros sites
wendel 0 Denunciar post Postado Março 19, 2007 no próprio cpanel tem esse: $dbh=mysql_connect ("localhost", "ideiabr_not", "<PASSWORD HERE>") or die ('I cannot connect to the database because: ' . mysql_error());mysql_select_db ("ideiabr_not");ele conectou (pelo menos a mensagen de erro sumiu)... mas quando busco algo, como "teolandia" diz que não foi encontrado nada. Deve ser a tabela "manchete", pois no código acima não tem onde colocar a mesma Compartilhar este post Link para o post Compartilhar em outros sites
nb-master 0 Denunciar post Postado Março 19, 2007 "ideiabr_not" esse é o nome de usuario e do banco de dado ?"manchete" é o nome da coluna?tenta isso (TROCA NO SEU SCRIPT)mysql_select_db ("manchete"); Compartilhar este post Link para o post Compartilhar em outros sites
wendel 0 Denunciar post Postado Março 19, 2007 Nada!!! http://forum.imasters.com.br/public/style_emoticons/default/upset.gif Eu usei um outro e aparece erro pra tudo que é lado...rsrsr vou tentar esse aqui: <?php /* Conectando, escolhendo o banco de dados */ $link = mysql_connect("localdoservidor", "usuario", "senha") or die("Não pude conectar: " . mysql_error()); mysql_select_db("nome do BD") or die("Não pude selecionar o banco de dados"); ?> Compartilhar este post Link para o post Compartilhar em outros sites
wendel 0 Denunciar post Postado Março 19, 2007 ele consegue a conexão, mas a busca segue na mesma..usei a palavra TEOLÂNDIA E ARADHIA e o retorno é o mesmo:Não houve ocorrências para o(s) termo(s) "Teolândia"Tem que ter um jeito de acrescentar o nome da tabela "manchete" nessa conexão. rsrs não é possível cara? Compartilhar este post Link para o post Compartilhar em outros sites
nb-master 0 Denunciar post Postado Março 19, 2007 <?php$server = "localhost";$db_user = "root";$db_pass = "1q2w3e4r"; $database = "criando_hostcontrol"; mysql_connect($server, $db_user, $db_pass) or die ("Database CONNECT Error (line 18)"); $result = mysql_db_query($database, "select * from host where refid = '$refid'") or die ("Database INSERT Error (line 19)"); ?>Eu uso esse! Compartilhar este post Link para o post Compartilhar em outros sites
wendel 0 Denunciar post Postado Março 19, 2007 <?php$server = "localhost";$db_user = "root";$db_pass = "1q2w3e4r"; $database = "criando_hostcontrol"; mysql_connect($server, $db_user, $db_pass) or die ("Database CONNECT Error (line 18)"); $result = mysql_db_query($database, "select * from host where refid = '$refid'") or die ("Database INSERT Error (line 19)"); ?>Eu uso esse!Esse dá erro na conexão... Compartilhar este post Link para o post Compartilhar em outros sites
nb-master 0 Denunciar post Postado Março 19, 2007 você tem que trocar pelos ser dados! Compartilhar este post Link para o post Compartilhar em outros sites
wendel 0 Denunciar post Postado Março 19, 2007 você tem que trocar pelos ser dados!Eu sei, é com meus dados mesmo que não conecta Compartilhar este post Link para o post Compartilhar em outros sites
nb-master 0 Denunciar post Postado Março 19, 2007 essa é a conecção mais simples que eu tenho<?php/* * faz a conexao ao banco * e seleciona a base de dados */$conexao = mysql_connect("localhost", "usuario", "senha")or die ("Erro na conexão ao banco de dados.");$db = mysql_select_db("nome_do_BD")or die ("Erro ao selecionar a base de dados.");?> Compartilhar este post Link para o post Compartilhar em outros sites
wendel 0 Denunciar post Postado Março 19, 2007 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 = ("ixxxxxxxx"); // banco de dados $bdusuario = ("xxxxxxxxxxx"); // usuario $bdsenha = ("xxxxx"); // 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"]; } } ?> Compartilhar este post Link para o post Compartilhar em outros sites