dmsAutoComplete v1.1

Publiquei hoje a atualização do meu script de auto-complete (google suggest) compatível com IE e FireFox e baseado em PHP/AJAX.

Depois de publicar a primeria versão do script e com a ajuda de alguns usuários que fizeram testes e utilizaram o script, encontrei algusn errinhos simples nele. Portanto sentei estes dias para achar algumas soluções e agora estou publicando a versão 1.1. Confira algumas das mudanças a seguir neste post.

FIX: Apertar TAB/ENTER sem nada selecionado gera erro
Sempre ao apertar TAB/ENTER sem nenhum valor da lista selecionado o script gerava um erro pois não achava o dado referente, isto foi resolvido com um flag que ignora este comando no caso de nada estar selecionado, apenas esconde o DIV.

if (me.highlighted.id != undefined){
me.acChoose(me.highlighted.id);
}

CSS: Quebras de linha no FireFox
Quem usou o FireFox verificou que ao gerar a lista no Firefox no primeiro momento todos itens apareciam em uma linha só, ao contrário de um embaixo do outro, uma adaptação do CSS no estilo do LI resolveu este problema.

#acDiv UL LI{ display:block;}

FEATURE: Adicionar múltiplos auto-completes em uma página
Devido a forma de referenciar o objeto usada em um ponto do script, se tornava impossível alterar o nome da váriavel que recebe o auto-complete e com isso impossível adicionar mais de um na mesma página. Com uma adaptação desta sintaxe agora é possível adicionar múltiplos AC na pagina, veja exemplo:

var AC = new dmsAutoComplete('string','acDiv');
AC.chooseFunc = function(id,label){
alert(id+'-'+label);
}

var AC2 = new dmsAutoComplete('string2','acDiv2');
AC2.chooseFunc = function(id,label){
alert(id+'-'+label);
}

A versão 1.1 do script se encontra no mesmo link da versão antiga:

Quem quiser saber mais sobre o histórico do script veja o link aqui

Quem achar este script útil, e utilizá-lo em alguma solução, deixe um comentário, um grito, mande um sinal de fumaça, mas dê seu apoio, vote e envie sugestões, reclamações, enfim manifeste-se, todas interações são bem-vindas.

This post is also available in: Inglês

83 comentários sobre “dmsAutoComplete v1.1

  1. Teste na minha máquina local e no servidor da Locaweb e nada… não funcionou… não estou pendindo uma solução… só informando…

  2. Fabio,

    O script já foi testato em vários ambientes inclusive utilizo ele em ambientes de produção.
    Se você puder me passar as condições do ambiente, softwares e versões eu gostaria de verificar e definir onde e se existem problemas.

    Obrigado pelo feedback.

  3. Rafael,
    Peguei seu esquema de exemplo e funcionou legal… estou usando esta rotina e fazendo uma requisição a um progama em COBOL…cobol e ajax… muito loco…rsrs

    Porém estou tendo um problema, estou utilizando Firefox, acontece que quando se digita rapidamente o texto que se quer pesquisar ocorre um erro de script:

    Erro: uncaught exception: [Exception… “Component returned failure code: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsIXMLHttpRequest.send]” nsresult: “0xc1f30001 (NS_ERROR_NOT_INITIALIZED)” location: “JS frame :: http://192.168.0.5/cgi-bin/teste_cobol.EXE :: anonymous :: line 150″ data: no]

    Pesquisei e vi que este erro ocorre, pois, a rotina esta enviando uma solicitação e antes desta terminar está enviando outra novamente…vi que o pessoal utiliza o camando .abort() que aborta a requisicao atual.

    Não se se já viu isso.

    Um abraço

  4. Rafael…

    Também baixei seu script e tentei executar no meu pc em localhost… quando digito qualquer palavra, não encontra nenhum resultado.. ao apertar KEYUP ou KEYDOWN, da erro de script..
    Linha: 162
    Caractere: 4
    Erro: ‘me.highlighted’ é nulo ou não é objeto
    Código: 0
    URL: http://localhost/testes/autocomplete/example.htm

    Andei dando uma olhadinha por cima mas aparentemente não achei nada de errado aqui

    att

  5. Também só informando: confirmo a informação do Fábio e do Rodrigo Reichert…
    Instalei e não funcionou. Info:
    IExplorer6 + Apache2-0 + PHP5.1.4

  6. Eduardo,

    Estou verificando o script, porém a unica indicação é de que o problema esta no backend PHP, pois o javascript não deveria aprensentar erros.
    Algum erro é retornado? pois um problema no backend php deve resultar em um problema no javascript.
    Verifique e me d um retorno, quero descobrir onde esta o erro, voce tentou rodar o live demo aqui do site? verifique se ele roda no seu browser.

    Obrigado

  7. Muito bom o script!
    Mas tenho minha dúvida, ele só busca a primeira palavra, não tem como ficar buscando as próximas palavras q vc digita, por exemplo se digito ‘críticos’, e depois ‘revolução’, não lista as palavras q começa com ‘re’…
    Existe uma solução pra isso, ou o script não foi feito para tal função!

    Obrigado

  8. João,

    Realmente não foi esta a concepção do script, esta função do texto foi meramente uma exemplo ilustrativo que bolei, o sript foi mais focado em por exemplo, achar clientes dentro de uma base pelo nome.

    Mas para obter o resultado que você deseja, você pode mexer um pouco no backend PHP sobre como é feita a busca de palavras e tal, voce pode configurar ele para pegar os ” ” (espaços) e iniciar uma nova busca de palavra deste ponto, mantendo o resto da string fixa, ou fazer um buscador de frases.

    O script não tem limites, ele envia uma string e recebe uma lista, o resto pode ser alterado no backend, se vc pega a string converte em alemão e faz um script de tradução, ou se vc faz uma busca, ou um gerador aleatorio de respostas… até onde sua imaginação for, basta alterar o backend.

    Espero ter ajudado.

  9. Oi Rafael!!

    Sou iniciante em php e gostaria de pedir se vc pode disponibilizar este escript acessando um banco de dados mysql ou postgree!

    Iria ser muito interessante pois seu exemplo é realmente muito bom!

    Parabéns por ter compartilhado na net.

    At Caio

  10. Ola Rafael!

    Seu script é realmente fantástico é sem duvidas muito Bom, mas sou iniciante em php e segundo seu exemplo consegui fazer uma busca no meu banco de dados, os nomes estão aparecendo na lista de auto complete perfeitamente.

    Minha duvida é como fazer para que os nomes apareçam como no seu exemplo, a medida em que for digitando for eliminando os nomes, pois da maneira que coloquei ao digitar uma letra exemplo A todos os nomes do banco é mostrado até os que não começam com a letra A.

    Existe alguma maneira de trazer só os nomes que estão sendo digitados ?
    Código:
    if ($_POST[‘string’] != ”){

    @ $base = mysql_connect(“localhost”,”usuario”,”senha”);
    mysql_select_db(“banco”, $base);

    $query = “select palestran from palestra”;
    $result = mysql_query($query);
    while($palavra = mysql_fetch_array($result)){
    $item = $xmlDoc->createElement(‘item’);
    $item = $root->appendChild($item);
    $item->setAttribute(‘row_id’,$key);
    $item->setAttribute(‘label’,rawurlencode($palavra[“palestran”]));

    }
    }

  11. Caio,

    Vou procurar um tempinho aqui e publicar o script com um exemplo de banco de dados, mas veja o código postado pelo Claudenir acima que terá uma idéia.

    abraços

  12. Claudenir,

    Para restringir o resultado você precisa de uma cláusula WHERE no seu query apenas. Com o SQL atual voce esta sempre buscando todos registros, com isso se vc restringir vai obter o que deseja.

    O script envia por POST uma variável chamada “string” que contem a palavra sendo digitada, faça o seguinte em seu script:

    $query = “select palestran from palestra WHERE palestran LIKE ‘”.$_POST[string].”%’”;

    Com isso o banco irá procurar todos palestrantes onde a coluna ‘palestran’ comece com a palavra enviada (% significa coringa no SQL).

    Espero que tenha ajudado

    Abraço

  13. No php 5 esse script funciona normalmente, já no php 4.4.3 é necessário algumas mudanças nas funções, mas uma funcão creio eu só existe somente no php 5 “saveXML()”, qual a solução?

  14. Fabiano,

    No caso o DOM só existe mesmo a partir do PHP 5. Você pode criar o XML de resposta usando um parser xml, existem varias funções e classes, ou criar na mão usando strings mesmo.

    Abraço.

  15. Excelente,
    mas ele não funciona com números?
    como poderia modificar os scripts para que se possa digitar números, para usar em um campo código, por exemplo???

    Grande Abraço

  16. Olá Rafael,

    o código está muito bom, mas não pude deixar de perceber que o mesmo não trabalha bem com acentos. Quando procuro por alguma palavra com acento ele não entende.

    Valeu!

  17. Olá Rafael,
    Sou iniciante em informática. Apareceu uma mensagem de erro .
    >Erro no script desta página. Linha 2 – Caractere 1 – Cód. 0 – Erro do sistema Internet Explorer. URL-http//tp.msn.com/pt-br/defaut.aspx?did=1. Deseja continuar executando scripts nesta página? A mensagem inicial é erro no script desta página com um triângulo e pt de exclamação. O que devo fazer?
    Antecipo-lhe agradecimentos. Cecilia

  18. Cecilia,

    isto pode indicar 1 de 10000 de erros pois o IE não é muito bom em reportar erros de javascript, porém fiquei intrigado com o URL. o Autocomplete esta rodando neste url? caso não então a mensagem de erro que vistes é de outra página e nao do script.
    Fiz varios testes em várias plataformas deste script e não encontrei error muito grandes ou que impossibilitem o uso, verifique se esta tudo certo ou me informe como posso visualizar o teste.

    Abraços

  19. Rafael,
    Tenho um aviso fixo: (triângulo c/exclamação) WINDOWS – ERRO DE SISTEMA. existe um conflito de IP com outro sistema na rede.
    Não existe nenhum código do erro.

  20. Olá Rafael. Com relação à 1ª consulta não preenchi o url. O autocomplete está legal em e-mail. A 2a. questão se relaciona a uma caixa de aviso permanente de erro WINDOW-ERRO DE SISTEMA
    indicado por um triângulo. Segue o aviso: existe um conflito de IP com outro sistema na rede. Não é apresentado o cód. de erro.
    Grata. Cecilia

  21. Cecilia,

    Os problemas que voce está relatando não são relacionados com o script apresentado nesta página e sim som seus sitema operacional e seu provedor de email. Por favor procure fóruns especializados nestes assuntos.

  22. Rafael

    Eu tentei fazer do jeito que o claudenir colocou na pagina o codigo para a conexao com o banco. Mas eu nao estou conseguindo. Sera que vc tem um arquivo parecido com conexao com o banco pra poder esclarecer um pouco mais sobre isso?

  23. Muito bom o script, pelo menos até onde testei, e o modo como você disponibilizou, breve e simples porém deve ter dado um trabalhão pra fazer, valeu mesmo hein.

  24. Felipe,

    Relamente deu um pouco de dor de cabeça, mas saiu rapidinho. Acho que o compartilhamento de códigos é muito importante para evolução dos sistemas, por exemplo, com os comentários acima já resolvi uma série de bugs que talvez nunca tivesse encontrado.

    Obrigado

  25. Olá Rafael eu não consigo de maneira alguma resolver os problemas com acentuação deste script já li seu outro artigo sobre, não consigo de maneira alguma, já tentei de todas as formas, mais nada. Se puder dar um help, eu agradeço.

  26. Ricieri,

    Acho que a raiz do seu problema é na busca no banco né? Vou ver se pego um tempinho livre pra publcar alguma coisa em relação a este problema.

    Abraço

  27. Oi Rafael.

    Eu tentei rodar o seu script aqui no meu computador, porém quando eu coloco alguma letra a caixa com as sugestões aparece um um tamanho minúscula 2 x 2 pixels mais ou menos como se nenhuma palavra tivesse sido encontrada. O que poderia ser isso?

    Abraços.

  28. Oi Rafael,que bom que vc existe para poder nos ajudar!!!!!!!!rs!!!!!!!!o meu problema é que,todas as vezes que entro no bate-papo sai a janelinha dizendo:PROBLEMAS COM ESTA PÁGINA………..LINHA 26/CARACTERE:1/ERRO:o objeto não dá suporte para prioridade ou método./CÓD:0. E, outro problema é que tenho o passaport net,mas não consigo me conectar ao hotmail,ou seja, não consigo enviar mensagens e nem receber,não consigo entrar no msn……..nem me conectar no yahoo……..e agora,o que faço…………qual o problema……….help

  29. Olá Rafael, meu problema é que o autocplete só mostra elementos null, o que fazer? estou usando php4, será esse o problema?
    Grato pela atenção,
    Rodrigo.

  30. Rodrigo,

    O arquivo que gera a resposta em XML (.php) usa uma classe do PHP5 para gerar o XML.
    Verifique o arquivo executando ele direto e observando a resposta para ver o problema direitinho. Mas no caso é so adaptar para usar métodos do PHP4, portanto que o js receba um XML ele funciona perfeitamente.

  31. Rafael,
    Primeiramente parabéns pelo script. Muito bom. Funcionou perfeitamente aqui no meu trabalho. Só estou tendo um probleminha:
    Quando você pressiona Enter ou Tab o cursos permanece no campo. Seria ideal que ele passasse para o próximo campo. Já fucei seu código aqui mas não achei solução para isso.
    Desde já agradeço.

  32. Ola Rafael,

    Tanto li a respeito do TAB e do ENTER mas eles me parecem que quando são precionados nada acontece.

    Pensei que o ENTER jogaria o valor do item selecionado para dentro do textinput, mas quando é precionado nada acontece, e o DIV some.

    Existe alguma maneira de implementar essa funcionalidade para o enter dentro do componente?

    Agradeço desde já!

  33. Danilo,
    Em meus testes a funcionalidade do TAB estava ok, mas vou fazer mais verificações para a proóxima versão.

    Vitor,
    O script possui uma configuração quando instanciado que lhe permite escrever a função que deve ser executada ao selecionar o item, com ENTER por exemplo. Verifique o código fonte do exemplo, e caso deseje que ele não apague o conteudo do input após seleção, use uma função para re-popular o campo.

  34. Rafael,
    Sou eu de novo.
    Notei um probleminha com o IE: a largura do div que recebe o resultado (acDiv) fica muito pequena, sendo que o texto é quebrado em várias linhas.
    No Firefox funcionou perfeitamente.
    A solução temporária que encontrei foi atribuir um valor fixo para o width do div, ou seja:
    substituí a linha
    this.div.style.width = this.elem.style.width;
    por essa
    this.div.style.width = 350;

  35. Danilo,

    Realmente, por isso o uso do CSS. Como o IE não implementa direito as coisas, deve ser feito na mão. A intenção é fazer com que tudo seja automatico e se adapte, infelizmente somente o firefox conseguiu implementar isso.
    Quanto ao IE sua solução é realmente a unica que pode ser feita, pois o CSS é sobreposto pelo script.

    Abraço.

  36. Ola Rafael !!

    Parabens pela materia, ja testei e aprovei o codigo, agora estou busvcando os dados em um BD Mysql e esta perfeito, porem eu gostaria de saber se tem como mudar de aparecer um alert para se apenas a pessoa selecionar uma palavra e ela ficar na caixinha, de texto,
    tem como ?

  37. Marcos,

    Claro, o script foi desenhado de forma que seu retorno possa ser programado para o uso que for necessário, verifique ao final do código a função de retorno (no lugar onde o script é instanciado, var = new…).
    Logo no final você pode ver a função de retorno, e pode alterá-la a vontade apra executar a função que voce deseja.

    Se tiver dificuldade da um aviso, abraço.

  38. Blz Rafael, consegi aqui, porem agora to tendo um outro prlbeminha, para que o codigo funcionasse na minha pagina , eu tive que executar a função dmsAutoComplete atraves de uma FUNCTION , ficou assim Ate ai tudo perfeito.

    O problema esta quando eu coloco isso dentro de um FORM , ele da pau,porque isso acontece ?

  39. Caro rafael, joguei o script no meu servidor web e nao funcionou…tenho q fazer alguma configuração no script? , o servidor precisa desse DOM? ou nao tem nada a ver?

  40. Marcos,

    Me envia o código fonte pra eu entender melhor, de cara assim não vejo nada que pode impedir o funcionamento. (talvez escopo das variáveis)

    Fernando,
    Bem algumas coisas são necessárias, PHP 5 por exemplo, com DOM e tal. sugiro executar diretamente o arquivo .php do pacote e verificar o retorno deste, Qualquer coisa me manda um email com o que o script responder que te ajudo.

    Abraço.

  41. Blz Rafael, era mancada minha, ja resolvi, agora gostaria de saber se tem como a busca não diferenciar palavras maiusculas ou minusculas ?

  42. Marcos,

    Já respondi isso aqui em algum lugar, acho que foi no outro post. Isso só depende do seu backend, no caso do exemplo o script em PHP, basta utilizar o strtolower e tal que você resolve isso. Do lado do JS isso nao afeta nada, ou seja, alterando o seu backend, portanto que ele retorne no formato xml especificado, vale até fazer busca por politico nao corrupto 😀

    abraço!

  43. Rafael, antes de mais nada gostaria de parabeniza-lo pelo artigo e pelo código, pois estou começando a estudar Ajax faz pouco tempo e esse seu esta legal. Eu sou novo na área de desenvolvimento e não entendo muito de JS, mas consegui fazer umas coisinhas para acesso ao DB. Espero poder estar ajudando alguem e tbm espero que melhorem essa parte e ajudem a todos aqui.

    Assim, esta funcionando certinho, mas está um tanto lento, e quando se apaga demora mais ainda, mas td bem, vamos ver se conseguimos melhorar isso.

    A unica parte que mechi foi a que gera o XML.

    formatOutput = true;

    //Criar elementos Raíz do XML
    $root = $xmlDoc->createElement(‘root’);
    $root = $xmlDoc->appendChild($root);

    function arrfilter(&$item){
    return preg_match(‘/^’.$_POST[‘string’].’/’,$item);
    }

    //AQUI QUE COMECEI UMAS MUDANÇAS
    include “connect_dbtreinamento.inc”;
    conecta_sql();

    if ($_POST[‘string’] != ”){

    $consulta = “SELECT numero, nome FROM tabela WHERE nome LIKE ‘{$_POST[‘string’]}%’ ORDER BY nome”;
    $query = mssql_query($consulta);
    $row = mssql_num_rows($query);

    //esse for seguinte tem que ser melhorado, ainda mais a parte de concatenação
    for ($i = 0; $i $label){
    //Cadastrar na lista
    $item = $xmlDoc->createElement(‘item’);
    $item = $root->appendChild($item);
    $item->setAttribute(‘id’,$key);
    $item->setAttribute(‘label’,rawurlencode($label));
    //rawurlencode evita problemas de charset
    }
    }

    //Retornar XML de resultado para AJAX
    header(“Content-type:application/xml; charset=utf-8”);
    echo $xmlDoc->saveXML();

    ?>

    Espero que ajude a quem esteja procurando algo e que possa estar melhorando essa parte de consulta ao DB e que coloque aqui tbm..

    Falow………. 😛

  44. pessoal, ficou meio estranho a parte do “for” e por isso posto novamente o “for” onde tem que ser mudado…

    for ($i = 0; $i $label){

    //a partir daqui volta a parte
    //Cadastrar na lista

    Fui 🙂

  45. é pessoal, não foi erro meu não, tentei novamente e não deu certo.

    mas sou persistente e tentarei novamente, mas agora vou comentar td.

    //for ($i = 0; $i $label){

    //a partir daqui volta a parte
    //Cadastrar na lista

    😕 😕

  46. Marcelo,

    Primeiro problema:
    include “connect_dbtreinamento.inc”;
    isso é uma falha de segurança sem tamanho, pois este arquivo pode ser lido na internet sem problemas.

    Segundo, esta sua sintaxe do for esta no minimo estranha, não conheço esta sintaxe. deveria ser algo como:
    for($i=0;$i< $numrows;$i++)

    Ok percebi que o problema foi no post que sumiu com as > e $lt;

    Vou te respoonder la no forum, pois acho que encontrei o problema, esta onde vc pega os dado do banco, veja lá.

  47. O erro está aqui:

    for ($i = 0; $i < $row; $i++ ){ $nome_docente = mssql_result($query, $i, 1); $palavra = $palavra . "/" . $nome_docente; } [/php] Desta forma ele esta sempre sobrepondo $palavra e voce termina com apenas um resultado sempre.

  48. Então rafael, obrigado pela resposta.
    Quanto ao primeiro problema como eu posso estar fazendo a chamada do arquivo de conexão ao DB, eu sempre usei include.(vou ter que mudar td.)
    E quano ao problema eu até sei que está dentro do “for”, mas será que vc saberia como posso resolver?
    Grato pela atenção

  49. Rafael,
    Estou tendo um outro problema em relação ao CSS no IE.
    No meu formulário eu tenho o campo autocomplete e logo abaixo um campo select.
    No IE o meu campo select fica “em cima” do div ‘acDic’ quando este é aberto.
    Gostaria de saber se você tem alguma sugestão para meu problema.
    Desde já agradeço.

  50. O velho problema so IE… solução:
    use firefox! 😀

    Cara tem diversas soluções por ai, uma delas é botar o select dentro de um div e dar um z-index menor pra ele, ai acho que normaliza.

    abraço

  51. Realmente, o PHP5 tava com short tags=Off. Heheheh
    Desculpe, não tinha nem entrado no PHP5 pra debuggar.

    Mas engraçado, aqui diz (no PHP4):
    Fatal error: Cannot instantiate non-existent class: domdocument in D:\httpd\htdocs\teste-ajax\auto-complete\dmsAC.php on line 27

    Mas eu dei uma olhada no manual do PHP e parece que o PHP4 tem DomDocument sim… o_O

    Cara, posso te mandar um e-mail?

    E se você não vir isso antes do réveillon, queria deixar logo meus agradecimentos pelo seu script, pelo seu ‘suporte’ (hehe) e um ótimo ano novo! 😀

    Um forte abraço, rapaz!

  52. Sei que pode parecer embecil mais como adiciono dois textbox na mesma pagina com aqueles valores la de cima instanciador

    tipo var=new etc… onde devo colocar em que arquivo

  53. Rafael,
    Estou tendo um problema aqui e talvez você possa me ajudar.
    Seu script funcionou perfeitamente na minha estação de trabalho (PHP 5.1.6 com Apache).
    Porém quando coloquei no servidor web (PHP 5.2.0 com IIS) não funcionou. Simplesmente não aparece nada e não retorna nenhuma mensagem de erro. Eu preciso de algo além do DOM para o script funcionar?
    Obrigado.

  54. Opa, beleza gurizada. Primeiramente Rafael seu script está muito bom, o que o Andrea Carrera comentou sobre ao digitar rapidamente gerar erros de JS é verdade. Bom a única coisa que fiz foi em casa parte do JS do Rafael que chama createRequest() logo abaixo eu coloco request.abort(); para evitar qualquer tipo de erro, funciona perfeitamente, podem testar. Acho que é isso … ah mais uma coisa, usei o codigo do Rafael apra gerar XML e uso php4 e ta perfeito, desculpem se estou errado, mas alguém comentou que não rodava legal …

    Abraços
    E boa sorte a todos 🙂

  55. Beleza Rafael, vou guardar esta url para caso aparecam novas ideias. Se precisar de ajuda para organizar algo estamos ai para retribuir da mesma forma ..

    Abraços

  56. Cara, antes de mais nada parabéns. Não encontrei nada parecido na net… muito bom mesmo… só que estou com problema!!!!

    A um tempo atrás baixei seu script, mandei pro meu server e funcionou perfeitamente. Incorporei esse script em um trabalho que fiz, só que buscando os resultados em banco de dados. O script funcionou muito bem por um bom periodo, só que agora, do nada, não faz mais nada.

    Ele não dá nenhum sinal de vida. Baixei novamente a versão do seu site e mandei pro server, e ela também não funcionou. Será que esse problema pode estar acontecendo por causa dos server?

    Gostaria de deixar alguns dados:
    – Fiz teste com outros scripts ajax e deu certo;
    – Testei em outro servidor, fora outra empresa de hospedagem, e também não funcionou;}
    – A minha empresa de hospedagem mudou meu site de servidor a um tempo atrás;

    Já desconfiei que o problema esteja no momento em que é gerado o XML através do DOM. O servidor pode apresentar limitação quanto a essa função?

    Desde já agradeço a atenção, e vou continuar tentando descobrir a causa desse problema.

  57. Edvaldo,

    Cara, sim existem limitações, devido a versões do PHP. Sugiro o uso de versões 5 .

    Bem, dois passos que você pode tomar para verificar o erro:
    1. Instale o FIREBUG no FireFOX, e veja o que esta ocorrendo
    2. Execute o arquivo PHP (backend) diretamente no browser e veja o resultado.

    Com isso você deve entender o que esta errado, se não, me mande o resultado por email que te ajudo.

    abraço

  58. Olá Rafael,
    consegui resolver o problema. Para resolver o problema, parti do princípio de que o problema estava na geração do XML.

    – Verifiquei a versão do PHP do meu servidor e constatei que era a versão 4.4.

    – Logo me veio a idéia de procurar alguma classe que manipulasse o XML no PHP 4.
    Encontrei essa classe no site PHP-GTK. Segue o link:
    http://www.php-gtk.com.br/index.php?class=Artigo::ArtigoFormControl::View(66)

    – A principio não funcionou, mas alterei a forma do criar o XML no arquivo PHP e tudo deu certo.

    Valeu pela atenção e sucesso!

  59. Caro Rafael,
    meus parabens pelo excelente artigo e codigo. Show!
    Queria saber como fazer para a melhorar a performance do acesso as palavras do banco, pois tenho um conjunto enorme de informacoes e o acesso continuo ao banco estah deixando o processo super lento.
    Tem alguma forma de carregar uma unica vez todas as palavras do meu banco e assim acessa-las atraves da variavel/matriz criada?
    Abraco,
    Igor

  60. Cara,

    Bem o script otimiza a busca a medida que ele somente buscaria no banco os objetos que se iniciam com aquele texto digitado.
    Não sei exatamente para o que voce esta usando e como, se puder esclarecer ficaria melhor.

    Mas a sugestão básica nesse caso, é criar indices no banco, isso deve melhorar muito.

    Abraço

  61. Ola Rafael,

    seguinte, será que teria como vc disponibilizar um exemplo desse xml para o PHP 4.

    Obrigado!

  62. Rafael, baixei seu exmplo e não funcionou comigo, não dá erro e não exibe nada..o que pode ser…??

    Uso o IE6 e o FF2.0.0.3, EasyPHP1.8

    No demo do seu site ele exibe quando digito já, no exemplo em localhost, não faz nada!

  63. Rogger,

    Vou fazer isto na proxima versão do script.

    Dartanhan,

    Execute o arquivo .php que esta no exemplo diretamente no browser e veja os erros que ele retorna

    abraços

  64. Rafael, eu chamei a “classe” dmsAC.php e deu esse erro, pode ser esse o problema??

    Fatal error: Cannot instantiate non-existent class: domdocument in c:\program files\easyphp1-8\www\autocompletar\dmsac.php on line 27

  65. Olá Rafael!
    Testei seu script fazendo uma consuta ao banco de dados. Ele funciona realmente. è muito bom e útil.
    Encontrei apenas um problema:

    Conforme vamos digitando o script devolve a “div” apenas o primeiro registro encontrado,por exemplo, em meu banco existem 5 tipos de cadernos. Quando eu digito carderno o ideal é que o script devolva todas as possibilidades e não apenas a primeira.
    Porém seu script é muito bom…Parabéns

  66. Olá,
    Estou com problemas para inserir caracteres especiais como ?, & e pegar isso com Request.
    Estou utilizando com ASP.
    Alguém pode me dar uma luz?

    []’s.

  67. Olá Rafael.
    Estou com problema no Hotmail. Não consigo abrir pasta nenhuma no meu computador. Aparece a seguinte msg no rodapé: ‘undefined’ é nulo ou não é um objeto. Consigo abrir em outras máquinas. O que pode ser isso? Vc pode me ajudar? Eu tenho o IE 6.0
    Obrigada.

  68. Olá, Rafael!
    Estou com um problema e não estou encontrando solução em lugar nenhum, quem sabe vc me da uma luz!

    tenho uma tabela no mysql com um campo longtext onde eu insiro a descrição detalhada de produtos.
    quando realizo uma busca com o php funciona normal, porém quando tento colocar a mesma informação dentro de um campo text ou textarea (html) só aparece a primeira palavra, já tentei mudar o tipo de campo no banco para varchar e nada…

    codigo:

    echo “”;

    obs. esse txt_desc_prod veio da pagina anterior.

    obrigada 😉

  69. Olá, Rafael!
    Estou com um problema e não estou encontrando solução em lugar nenhum, quem sabe vc me da uma luz!

    tenho uma tabela no mysql com um campo longtext onde eu insiro a descrição detalhada de produtos.
    quando realizo uma busca com o php funciona normal, porém quando tento colocar a mesma informação dentro de um campo text ou textarea (html) só aparece a primeira palavra, já tentei mudar o tipo de campo no banco para varchar e nada…

    codigo:

    echo “input type=text name=txt_desc_prod value=$desc_prod”;

    obs. esse txt_desc_prod veio da pagina anterior.

    obrigada 😉

Os comentários estão desativados.