Carlos Rocha Postado Março 9, 2009 Denunciar Share Postado Março 9, 2009 ola pessoal.Consegui uma função que basicamente me atende.É uma função de busca tipo Google.Porem, preciso implementar ela um pouquinho.;1) Nessa função, tem uma variavel $array que é uma array portanto preciso dela recebendo os resultados separados por virgula como uma string.2) Caso não tenha nenhum resultado, iformar isso. E,3) Não retornar apenas uma opção mas sim pelo menos uma 04 opções no caso de ter mais de 04 opçoes de com,paração proximas.<?PHP $connection = mysql_connect('localhost','root',''); mysql_select_db('muriaeemrede',$connection); $query = mysql_query("SELECT nome FROM anunciantes"); for($x=0;$x<@mysql_num_rows($query);$x++){ $fetch = mysql_fetch_array($query); $array[] = $fetch['palavra']; } //$array = array('J.G. Freitas','Jorge','Edmundo'); print('Você quis dizer: <b>'.voce_quis_dizer('Jhosé',$array).'</b> ?'); function voce_quis_dizer($output,$library){ for($i=0;$i<count($library);$i++){ $suggestion[$i]['proximity'] = levenshtein(soundex($output),soundex($library[$i]))*100/strlen($library[$i]); $suggestion[$i]['word'] = $library[$i]; } sort($suggestion); return $suggestion[0]['word']; } ?>Conto com sua ajuda!Agradecido.Carlos Rocha Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Março 9, 2009 Denunciar Share Postado Março 9, 2009 Como assim "busca tipo google"? Você está falando do "você quiz dizer/did you mean"? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Março 9, 2009 Autor Denunciar Share Postado Março 9, 2009 Busca tipo vboce digita qualkquer coisa la e ele te pergunbta:voce quiz dizer?só que neste caso eu precisao saber como calcular quantos indices o sort esta retornando para eu filtrar até 04 resultados só quando o sort tivber mais que 4 e eu não sei como calcular quantos indices o sort esta retornando.Outro problema nesse s cript esta aqui:for($x=0;$x<@mysql_num_rows($query);$x++){ $fetch = mysql_fetch_array($query); $array[] = $fetch['palavra']; }mais precisamente nessa linha $array[] = $fetch['palavra'];.como faço para criar uma string com, os resultados da matriz $fetich dessa FORMa: $STRING= "indice0,indice1,indice2..."; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Março 9, 2009 Autor Denunciar Share Postado Março 9, 2009 na verdade o que eu preciso é assim:$array = array('J.G. Freitas','Jorge','Edmundo'); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Março 9, 2009 Autor Denunciar Share Postado Março 9, 2009 Descobri o que eu realmente preciso:No código abaixo, a funçao voce_quis_dizer, me retorn apenas 1 valor, o return $suggestion[0]['word'];Acontece, que estou fazendo uma pesquisa sql para decidir qual nome darei a função para lhe servir de parametro.;$query = mysql_query("SELECT id, nome FROM anunciantes where bloqueio='n'"); Na verdade, o que eu preciso é do id e do nome do anunciante que a função vai retornar. É possiv el isso sem precisar fazer outra query? <? function voce_quis_dizer($output,$library){ for($i=0;$i<count($library);$i++){ $suggestion[$i]['proximity'] = levenshtein(soundex($output),soundex($library[$i]))*100/strlen($library[$i]); $suggestion[$i]['word'] = $library[$i]; } sort($suggestion); return $suggestion[0]['word']; } ?> ... <? if ($conta_anunciante==0) { $query = mysql_query("SELECT id, nome FROM anunciantes where bloqueio='n'"); for($x=0;$x<@mysql_num_rows($query);$x++){ $fetch = mysql_fetch_array($query); $array[] = $fetch[0]; } print('Você quis dizer: <b><a href=anuncios/Anuncios.php?id='.$id_anunciante.'><br>'.voce_quis_dizer($valor,$array).'</a></b> ?'); } else { while(list($id_anunciante, $nome_anunciante, $seguimento__anunciante, $subseguimento__anunciante) = mysql_fetch_row($busca_anunciante)) {echo "<a href='anuncios/Anuncios.php?id=$id_anunciante'>$nome_anunciante</a>"; echo "<br>"; } } ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Março 10, 2009 Autor Denunciar Share Postado Março 10, 2009 Bom pessoal. Com uma pequena gabiarra, porem com o codigo limpo, consegui o que queria:Segue o código abaixo mas, se por acaso, alguém tivert uma ideia melhor poste para melhorar.Grato a todods!<p> </p> <center><font size='+2'>Você obteve os seguintes resultados<br>para sua pesquisa:</font></center><br><br> <? if ($acao != "pesquisa") { echo "<center>Você não esta fazendo pesquiza alguma pois não digitou nada na caixa ao lado!</center>";} ?> <? if ($acao == "pesquisa") { if ($valor == "") { echo "<center>Você não esta fazendo pesquiza alguma pois não digitou nada na caixa ao lado!</center>";} else { $busca_anunciante = mysql_query("select id, nome, seguimento, subseguimento from anunciantes where nome like '%$valor%' and bloqueio='n'"); $busca_seguimento = mysql_query("select id, titulo from seguimentos where titulo like '%$valor%' or soundex(titulo) = soundex('$valor')"); $busca_subseguimento = mysql_query("select id, titulo from sub_seguimentos where titulo like '%$valor%' or soundex(titulo) = soundex('$valor')"); $conta_anunciante = mysql_num_rows($busca_anunciante); $conta_seguimento = mysql_num_rows($busca_seguimento); $conta_subseguimento = mysql_num_rows($busca_subseguimento); function voce_quis_dizer($output,$library){ for($i=0;$i<count($library);$i++){ $suggestion[$i]['proximity'] = levenshtein(soundex($output),soundex($library[$i]))*100/strlen($library[$i]); $suggestion[$i]['word'] = $library[$i]; } sort($suggestion); return $suggestion[0]['word']; } ?> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td><H3>Como Anunciantes</H3></td> <td><H3>Como Seguimentos</H3></td> <td><H3>Como Subseguimentos</H3></td> </tr> <tr> <td valign="top"> <? if ($conta_anunciante==0) { $query = mysql_query("SELECT nome FROM anunciantes where bloqueio='n'"); if (mysql_num_rows($query)==0) {echo "Nenhum resultado<br>como Anunciante<br>foi encontrado<br> para a tua pesquisa!";} else { print('Você quis dizer?<br><br>'); for($x=0;$x<@mysql_num_rows($query);$x++){ $fetch = mysql_fetch_array($query); $anun[] = $fetch[0]; } $vc_quis_diser= voce_quis_dizer($valor,$anun); $sql_final = mysql_query("SELECT id, nome FROM anunciantes where nome='$vc_quis_diser' and bloqueio='n'"); list($id_anuncia, $nome_anuncia) = mysql_fetch_row($sql_final); echo "<a href='anuncios/Anuncios.php?id=$id_anuncia'>$nome_anuncia</a><br>"; } } else { while(list($id_anunciante, $nome_anunciante, $seguimento__anunciante, $subseguimento__anunciante) = mysql_fetch_row($busca_anunciante)) {echo "<a href='anuncios/Anuncios.php?id=$id_anunciante'>$nome_anunciante</a>"; echo "<br>"; } } ?> </td> <td valign="top"> <? if ($conta_seguimento==0) { $query = mysql_query("SELECT titulo FROM seguimentos"); if (mysql_num_rows($query)==0) {echo "Nenhum resultado<br>como Seguimento<br>foi encontrado<br>para a tua pesquisa!";} else { print('Você quis dizer?<br><br>'); for($x=0;$x<@mysql_num_rows($query);$x++){ $fetch = mysql_fetch_array($query); $seg_p[] = $fetch[0]; } $vc_quis_diser= voce_quis_dizer($valor,$seg_p); $sql_final = mysql_query("SELECT id, titulo FROM seguimentos where titulo='$vc_quis_diser'"); list($id_segui, $titulo_segui) = mysql_fetch_row($sql_final); } echo "<a href='Seguimentos.php?acao=seg&seg=$id_segui'>$titulo_segui</a><br>"; } else { while(list($id_seguimento, $titulo_seguimento) = mysql_fetch_row($busca_seguimento)) {echo "<a href='Seguimentos.php?acao=seg&seg=$id_seguimento'>$nome_seguimento</a>"; echo "<br>"; } } ?> </td> <td valign="top"> <? if ($conta_subseguimento==0) { $query = mysql_query("SELECT titulo FROM sub_seguimentos"); if (mysql_num_rows($query)==0) {echo "Nenhum resultado<br>como Sub Seguimento<br>foi encontrado<br>para a tua pesquisa!";} else { print('Você quis dizer?<br><br>'); for($x=0;$x<@mysql_num_rows($query);$x++){ $fetch = mysql_fetch_array($query); $subseg_p[] = $fetch[0]; } $vc_quis_diser= voce_quis_dizer($valor,$subseg_p); $sql_final = mysql_query("SELECT id, titulo FROM sub_seguimentos where titulo='$vc_quis_diser'"); list($id_subsegui, $titulo_subsegui) = mysql_fetch_row($sql_final); echo "<a href='Seguimentos.php?acao=sub&sub_segui=$id_subsegui'>$titulo_subsegui</a><br>"; } } else { while(list($id_subseguimento, $nome_subseguimento, $seguimento_subseguimento) = mysql_fetch_row($busca_subseguimento)) {echo "<a href='Seguimentos.php?acao=sub&sub_segui=$id_subseguimento'>$nome_subseguimento</a>"; echo "<br>"; } } ?> </td> </tr> </table> <? } } ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Carlos Rocha
ola pessoal.
Consegui uma função que basicamente me atende.
É uma função de busca tipo Google.
Porem, preciso implementar ela um pouquinho.;
1) Nessa função, tem uma variavel $array que é uma array portanto preciso dela recebendo os resultados separados por virgula como uma string.
2) Caso não tenha nenhum resultado, iformar isso. E,
3) Não retornar apenas uma opção mas sim pelo menos uma 04 opções no caso de ter mais de 04 opçoes de com,paração proximas.
Conto com sua ajuda!
Agradecido.
Carlos Rocha
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
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.