Carcleo 4 Denunciar post 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 Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Março 9, 2009 O script está sorteando uma das palavras que encaixou, e retornando uma mesmo! olha: sort($suggestion); return $suggestion[0]['word'];No lugar do return .. você coloca qntas você quer.. Oque você faz com o return dessa função depois ? echo ? você poderia retornar um array, ou uma string concatenada... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Março 9, 2009 sim eu imprimo. 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: $$array = array('J.G. Freitas','Jorge','Edmundo'); Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Março 9, 2009 Hum.. que tal: $query = mysql_query("SELECT nome FROM anunciantes LIMIT 4 "); for( $x=0; $x < mysql_num_rows($query); $x++ ){ $fetch = mysql_fetch_array($query); $palavra .= $fetch['palavra'].', '; }Ai você faz apenas:return $palavra; Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Março 9, 2009 O script está sorteando uma das palavras que encaixou, e retornando uma mesmo! olha: sort($suggestion); return $suggestion[0]['word'];No lugar do return .. você coloca qntas você quer.. Oque você faz com o return dessa função depois ? echo ? você poderia retornar um array, ou uma string concatenada... Gostei da tua ideia. mas,com,o faz assi^m? Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post 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>"; } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post 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, alguem 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> <? } } ?> Compartilhar este post Link para o post Compartilhar em outros sites