Ridson 0 Denunciar post Postado Julho 29, 2007 Eu fiz um sistema de busca com paginacao que eu peguei aqui no imasters e eu gostaria que quando eu fizesse uma busca ele buscasse todas as palavras que eu digitei no meu input text. Vou te dar um exemplo: No campo "Descricao" eu tenho a seguinte palavra! Eu tenho saúde para dar e vender se eu digitasse no input text saúde + vender, ele me desse todos os resultados que poderiam ser encontrados no meu Bd, como a busca do google... e tbm deixar em negrito as palavras que eu fiz na busca.. pode me ajudar! o meu codigo de paginacao está logo abaixo: include("oopz_conexao.php");$teste = $_GET['buscar'];$re = mysql_query("SELECT count(*) as total FROM sites where Descricao LIKE '%$teste%'");$total = mysql_result($re, 0, "total");$pagina = 0;if(isset($_GET["pagina"])) {$pagina = $_GET["pagina"];}$limite = 10;$paginas = ceil($total / $limite);$inicio = $pagina * $limite;$sql = mysql_query("SELECT * FROM sites where Descricao Like '%$teste%' or Descricao2 LIKE '%$teste%' or Url Like '%$teste%' LIMIT $inicio, $limite");$conta = mysql_num_rows($sql);if ($conta>0){while($l = mysql_fetch_array($sql)) {$ur = $l["Url"];$desc = $l["Descricao"];echo "<br /><br /><br />";echo "<span class='style6'><a href='$ur' target='_blank'>$ur</a><span><BR>";echo "<span class='style6'>$desc</span><BR>";echo "<span class='style41 style42'>O link não está acessando! informe a agente. <a href='<br />quebrado.php'>clique aqui.</a></span><br />";}}else{echo "<span class='style34'><strong>Dica:</strong> Ganhe tempo teclando Enter ao invés de clicar em 'Pesquisar'.</span><br /><br /><br />";echo "<span class='style34'>Sua pesquisa -<strong>$teste</strong>- não encontrou nenhum documento correspondente.</span><br /><br />";echo "<span class='style34'><strong>Sugestões:</strong><br /></span>";echo "<span class='style34'>Certifique-se de que todas as palavras estejam escritas corretamente.</span><br />";echo "<span class='style34'>Tente palavras-chave diferentes.</span><br />";echo "<span class='style34'>Tente palavras-chave mais genéricas.</span>";}?><? echo"Resultados <strong>1 - 10</strong> de aproximadamente <strong>$total</strong> "?></span> <br /><?if($pagina > 0) {$menos = $pagina - 1;$url = $_SERVER["PHP_SELF"]."?pagina=".$menos."&buscar=".$teste;echo"<br>";echo "<span class='style6'><a href=\"$url\"><span class='style3'> Anterior</span></a>";}for($i = 1;$i < $paginas; $i++) {$url = $_SERVER["PHP_SELF"]."?pagina=".$i."&buscar=".$teste;echo "| <span class='style6'><a href=\"$url\">$i</a></span>";}if($pagina < $paginas - 1) {$mais = $pagina + 1;$url = $_SERVER["PHP_SELF"]."?pagina=".$mais."&buscar=".$teste;echo "<span class='style6'>|<a href=\"$url\"><span class='style3'> Próxima</span></span></a>";}?> Compartilhar este post Link para o post Compartilhar em outros sites
Ulisses José 0 Denunciar post Postado Julho 29, 2007 Eu acho que entendi o que você está querendo.... Como colocar em negrito eu num sei como faz não... mas acho que posso te ajudar na busca por várias palavras... <?//a variavel $forbid é um vetor para remover artigos e preposições comuns para evitar diferenciação de por exemplo "carro de passeio" e "carro pára passeio "$forbid = array('o','a','os','as','um','uma','uns','umas','de','com', 'para');function array_remval($val, &$arr) { $array_remval = $arr; for($x=0;$x<count($array_remval);$x++) { $i=array_search($val,$array_remval); if (is_numeric($i)) { $array_temp = array_slice($array_remval, 0, $i ); $array_temp2 = array_slice($array_remval, $i+1, count($array_remval)-1 ); $array_remval = array_merge($array_temp, $array_temp2); } } return $array_remval; }$colname_resultado = "-1"; if (isset($_GET['busca'])) { $colname_resultado = (get_magic_quotes_gpc()) ? $_GET['busca'] : addslashes($_GET['busca']);$busca = stripslashes ($colname_resultado); if ($colname_resultado[0] == '"' and $colname_resultado[strlen($colname_resultado)-1] == '"'){ $colname_resultado = trim($colname_resultado, '\"'); $colname_resultado = explode("::",$colname_resultado); } else{ //aqui o codigo separa as palavras $array = explode(" ",$colname_resultado); for($x = 0; $x < count($array); $x++){ for($y = 0; $y < count($forbid); $y++){ if($array[$x] == $forbid[$y]){ $array[$x] = " "; }//if }//for interno }//for externo $colname_resultado = array_remval(" ", $array) or die ("Pequisa Inválida"); }//else}mysql_select_db($banco, $conecao);//Aqui faremos a montagem dinamica da query$query_resultado = "SELECT * FROM cadastro WHERE "; for($a = 0; $a < count($colname_resultado); $a++){ $query_resultado .= " campo_pesquisado1 LIKE '%" . "$colname_resultado[$a]" . "%'"; if ($a != (count($colname_resultado) - 1)){ $query_resultado .= "AND"; }//if }//for $query_resultado .= "OR"; for($a = 0; $a < count($colname_resultado); $a++){ $query_resultado .= " campo_pesquisado2 LIKE '%" . "$colname_resultado[$a]" . "%'"; if ($a != (count($colname_resultado) - 1)){ $query_resultado .= "AND"; }//if }//for $query_resultado .= "OR"; for($a = 0; $a < count($colname_resultado); $a++){ $query_resultado .= " campo_pesquisado3 LIKE '%" . "$colname_resultado[$a]" . "%'"; if ($a != (count($colname_resultado) - 1)){ $query_resultado .= "AND"; }//if } $query_resultado .= "ORDER BY pontos DESC";//prontinho.... essa realizar os procedimentos de exibição dos resultados!! ?>Cada bloco for é para um campo diferente a ser pesquisado.... Tomara que te ajude!! Abraços! Compartilhar este post Link para o post Compartilhar em outros sites
Ridson 0 Denunciar post Postado Julho 31, 2007 E se o texto for longo? por exemplo: Andava na praia olhando aquele maravilhoso por do sol quando me deparei com amigos maravilhoros que nao via há muito tempo. ai eu faço uma busca no input text ---- praia + com amigos ou com amigos + praia ou tempo + por do sol ou por do sol + tempo... Como eu faco isso? eu li alguns assuntos aqui no imasters falando da funcao explode, más eu nao entendi nada. se você sabe, pode adaptar no meu codigo que eu coloquei logo acima? obrigado filhao... Eu acho que entendi o que você está querendo.... Como colocar em negrito eu num sei como faz não... mas acho que posso te ajudar na busca por várias palavras... <?//a variavel $forbid é um vetor para remover artigos e preposições comuns para evitar diferenciação de por exemplo "carro de passeio" e "carro pára passeio "$forbid = array('o','a','os','as','um','uma','uns','umas','de','com', 'para');function array_remval($val, &$arr) { $array_remval = $arr; for($x=0;$x<count($array_remval);$x++) { $i=array_search($val,$array_remval); if (is_numeric($i)) { $array_temp = array_slice($array_remval, 0, $i ); $array_temp2 = array_slice($array_remval, $i+1, count($array_remval)-1 ); $array_remval = array_merge($array_temp, $array_temp2); } } return $array_remval; }$colname_resultado = "-1"; if (isset($_GET['busca'])) { $colname_resultado = (get_magic_quotes_gpc()) ? $_GET['busca'] : addslashes($_GET['busca']);$busca = stripslashes ($colname_resultado); if ($colname_resultado[0] == '"' and $colname_resultado[strlen($colname_resultado)-1] == '"'){ $colname_resultado = trim($colname_resultado, '\"'); $colname_resultado = explode("::",$colname_resultado); } else{ //aqui o codigo separa as palavras $array = explode(" ",$colname_resultado); for($x = 0; $x < count($array); $x++){ for($y = 0; $y < count($forbid); $y++){ if($array[$x] == $forbid[$y]){ $array[$x] = " "; }//if }//for interno }//for externo $colname_resultado = array_remval(" ", $array) or die ("Pequisa Inválida"); }//else}mysql_select_db($banco, $conecao);//Aqui faremos a montagem dinamica da query$query_resultado = "SELECT * FROM cadastro WHERE "; for($a = 0; $a < count($colname_resultado); $a++){ $query_resultado .= " campo_pesquisado1 LIKE '%" . "$colname_resultado[$a]" . "%'"; if ($a != (count($colname_resultado) - 1)){ $query_resultado .= "AND"; }//if }//for $query_resultado .= "OR"; for($a = 0; $a < count($colname_resultado); $a++){ $query_resultado .= " campo_pesquisado2 LIKE '%" . "$colname_resultado[$a]" . "%'"; if ($a != (count($colname_resultado) - 1)){ $query_resultado .= "AND"; }//if }//for $query_resultado .= "OR"; for($a = 0; $a < count($colname_resultado); $a++){ $query_resultado .= " campo_pesquisado3 LIKE '%" . "$colname_resultado[$a]" . "%'"; if ($a != (count($colname_resultado) - 1)){ $query_resultado .= "AND"; }//if } $query_resultado .= "ORDER BY pontos DESC";//prontinho.... essa realizar os procedimentos de exibição dos resultados!! ?>Cada bloco for é para um campo diferente a ser pesquisado.... Tomara que te ajude!! Abraços! Compartilhar este post Link para o post Compartilhar em outros sites