Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Ajax Autocompletar (Suggest)


Webster

Pergunta

Encontrei um código para autocompletar formulários semelhante ao Google Suggest em http://blog.idealmind.com.br/tag/autocompletar/ muito legal para php + mysql + ajax. Funciona mesmo. O cara deu um exemplo selecionando estados com o autocompletar e em seguida, com base no estado selecionado, chama as cidades no outro autocompletar.

Só que o cara usou os mesmos nomes de campo para as tabelas 'estados' e 'cidades', ou seja 'id' e 'nome'. Na hora de customizar me ferrei! Não sabia quem era o pai nem quem era o filho. Dei uma mexida na página que conecta ao banco e executa as querys e o primeiro campo ficou beleza. Mas no campo cidades, o MySQL tá dando uma mensagem "Warning:mysql_fetch_array() expects parameter 1 to be resource, boolean given in meuajax.php on line 47"

Vou postar o código desta página aqui e eu coloco as explicações no <!-- -->

header('Content-type: text/html; charset=UTF-8');

$hostname = 'localhost';
$username = 'root';
$password = '';
$dbname = 'intranet';

mysql_connect( $hostname, $username, $password ) or die ( 'Erro ao tentar conectar ao banco de dados.' );
mysql_select_db( $dbname );

if( isset( $_REQUEST['query'] ) && $_REQUEST['query'] != "" )
{
$q = mysql_real_escape_string( $_REQUEST['query'] );

if( isset( $_REQUEST['identifier'] ) && $_REQUEST['identifier'] == "estado") <!-- Nome do campo que vai fazer a pesquisa. Eu não alterei, pois na página que chama o script, o campo do formulário tá com o mesmo nome e id --> 
{

$sql = "SELECT * FROM empresas where locate('$q',nick) > 0 order by locate('$q',nick) limit 10"; <!-- Alterei o nome da tabela para 'empresas' e o campo, de 'nome' para 'nick' -->
$r = mysql_query( $sql );
if ( $r )
{
echo '
'."\n";
while( $l = mysql_fetch_array( $r ) )
{
$p = $l['nick']; <!-- Alterei o nome do campo de 'nome' para 'nick' -->
$p = preg_replace('/(' . $q . ')/i', '<span style="font-weight:bold;">$1</span>', $p);
echo "\t".'<li id="autocomplete_'.$l['codcli'].'" rel="'.$l['codcli'].'_' . $l['razao'] . '">'. utf8_encode( $p ) .''."\n"; <!-- Alterei de 'id', 'id', 'uf' para 'codcli', 'codcli', 'razao' -->
}
echo '
';
}
}

if( isset( $_REQUEST['identifier'] ) && $_REQUEST['identifier'] == "cidade")<!-- Nome do campo que vai fazer a pesquisa. Eu não alterei, pois na página que chama o script, o campo do formulário tá com o mesmo nome e id --> 

{
$sql = isset( $_REQUEST['extraParam'] ) ? " and estado = " . mysql_real_escape_string( $_REQUEST['extraParam'] ) . " " : ""; 
$sql = "SELECT * FROM treinandos where locate('$q',treinando) > 0 $sql order by locate('$q',treinando) limit 10"; <!-- Alterei de 'cidades' para 'treinandos' e 'nome' para 'treinando' -->
$r = mysql_query( $sql );
if ( count( $r ) > 0 )
{
echo '
'."\n";
while( $l = mysql_fetch_array( $r ) ) [b]<!-- ESSA É A BENDITA LINHA 47!!! --> [/b]
{
$p = $l['treinando']; <!-- Alterei de 'nome' para 'treinando' -->
$p = preg_replace('/(' . $q . ')/i', '<span style="font-weight:bold;">$1</span>', $p);
echo "\t".'<li id="autocomplete_'.$l['id_trein'].'" rel="'.$l['codcli'].'_' . $l['funcao'] . '">'. utf8_encode( $p ) .''."\n"; <!-- Alterei de 'id', 'id', 'uf' para 'id_trein', 'codcli', 'funcao' -->
}
echo '
';
}
}
}

?>

Tá um pouco extenso o código mas acho que deve ser uma bobeirinha que eu dei. Obrigado pela ajuda.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Andrea, obrigado pela dica. Agota já tá funcionando. Obrigado!

Olha eu não manjo de PHP, mas voce já verificou como está a sua consulta? tipo printar e jogar no banco pra ver se está retornando os dados corretamente ?

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...