Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 551873
            [titulo] => Autocompletar PHP + Mysql
            [dataCadastro] => DateTime Object
                (
                    [date] => 2016-04-20 07:37:20
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 471487
            [status] => A
            [isExample] => 
            [NomeUsuario] => Marlon Gera
            [Apelido] => 
            [Foto] => 471487_20160217182208.jpg
            [Conteudo] => Fabiano, bom dia.

Você colocou esta parte no seu head?

[code]<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>[/code]

Se não, tente colocar e usar o Ajax.
Se sim, tente o codigo abaixo.

[code]<script>
//função para pegar o objeto ajax do navegador
function xmlhttp()
{
// XMLHttpRequest para firefox e outros navegadores
if (window.XMLHttpRequest)
{
return new XMLHttpRequest();
}

// ActiveXObject para navegadores microsoft
var versao = ['Microsoft.XMLHttp', 'Msxml2.XMLHttp', 'Msxml2.XMLHttp.6.0', 'Msxml2.XMLHttp.5.0', 'Msxml2.XMLHttp.4.0', 'Msxml2.XMLHttp.3.0','Msxml2.DOMDocument.3.0'];
for (var i = 0; i < versao.length; i++)
{
try
{
return new ActiveXObject(versao[i]);
}
catch(e)
{
alert("Seu navegador não possui recursos para o uso do AJAX!");
}
} // fecha for
return null;
} // fecha função xmlhttp

//função para fazer a requisição da página que efetuará a consulta no DB
function carregar()
{
a = document.getElementById('ID_DO_INPUT_A_SER_DIGITADO').value;
ajax = xmlhttp();
if (ajax)
{
ajax.open('get','CAMINHO_DA_PAGINA?NAME_DO_INPUT_A_SER_DIGITADO='+a, true);
ajax.onreadystatechange = trazconteudo;
ajax.send(null);
}
}

//função para incluir o conteúdo na pagina
function trazconteudo()
{
if (ajax.readyState==4)
{
if (ajax.status==200)
{
document.getElementById('ID_DO_INPUT_A_RECEBER_VALOR').value = ajax.responseText;
}
}
}

</script>[/code]

No input coloque.

[code]<input type="text" id="ID_DO_INPUT_A_SER_DIGITADO" name="NAME_DO_INPUT_A_SER_DIGITADO" onkeyUp="carregar()" />[/code]

Qlqr coisa poste aqui. ) )

Autocompletar PHP + Mysql

Fabiano
   - 19 abr 2016

#Código


<script type="text/javascript"> 
		$(function() {

			    //autocomplete
			    $(".auto").autocomplete({
			    	source: "autocompletar.php",
			    	minLength: 3
			    });                

			});
	</script>

<?php
define('DB_SERVER', 'localhost');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'coh_fin');


if (isset($_GET['term'])){
    $return_arr = array();

    try {
        $conn = new PDO("mysql:host=".DB_SERVER.";dbname=".DB_NAME, DB_USER, DB_PASSWORD);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        
        $stmt = $conn->prepare('SELECT * FROM coh_clientes WHERE nm_pn LIKE :term GROUP BY nm_pn');
        $stmt->execute(array('term' => '%'.$_GET['term'].'%'));
        
        while($row = $stmt->fetch()) {
            $return_arr[] =  $row['nm_pn'];
        }

    } catch(PDOException $e) {
        echo 'ERROR: ' . $e->getMessage();
    }

    echo json_encode($return_arr);
}

?>


<tr>
                <td>
                  <label for="cliente">Cliente:</label>
                </td>
                <td>
                  <input type="text" class="auto" name="cliente" value="" size="50" required onfocus="if (this.value =='Nome do Cliente!') this.value='';" onblur="if (this.value=='') this.value='Nome do Cliente!'">
                </td>
              </tr>

Funciona para maioria dos dados inclusos no banco, porém gostaria de saber porque não retorna alguns dados, seria algo no código? Utilizo Banco MySQL. Se alguém puder me ajudar neste problema agradeço muito e vai me tirar do sufoco.

Post mais votado

Marlon Gera
   - 20 abr 2016

Fabiano, bom dia.

Você colocou esta parte no seu head?

#Código

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>


Se não, tente colocar e usar o Ajax.
Se sim, tente o codigo abaixo.

#Código
<script>
//função para pegar o objeto ajax do navegador
function xmlhttp()
{
	// XMLHttpRequest para firefox e outros navegadores
	if (window.XMLHttpRequest)
	{
		return new XMLHttpRequest();
	}

	// ActiveXObject para navegadores microsoft
	var versao = ['Microsoft.XMLHttp', 'Msxml2.XMLHttp', 'Msxml2.XMLHttp.6.0', 'Msxml2.XMLHttp.5.0', 'Msxml2.XMLHttp.4.0', 'Msxml2.XMLHttp.3.0','Msxml2.DOMDocument.3.0'];
	for (var i = 0; i < versao.length; i++)
	{
		try
		{
			return new ActiveXObject(versao[i]);
		}
		catch(e)
		{
			alert("Seu navegador não possui recursos para o uso do AJAX!");
		}
	} // fecha for
	return null;
} // fecha função xmlhttp

//função para fazer a requisição da página que efetuará a consulta no DB
function carregar()
{
   a = document.getElementById('ID_DO_INPUT_A_SER_DIGITADO').value;
   ajax = xmlhttp();
   if (ajax)
   {
	   ajax.open('get','CAMINHO_DA_PAGINA?NAME_DO_INPUT_A_SER_DIGITADO='+a, true);
	   ajax.onreadystatechange = trazconteudo; 
	   ajax.send(null);
   }
}

//função para incluir o conteúdo na pagina
function trazconteudo()
{
	if (ajax.readyState==4)
	{
		if (ajax.status==200)
		{
			document.getElementById('ID_DO_INPUT_A_RECEBER_VALOR').value = ajax.responseText;
		}
	}
}

</script>


No input coloque.

#Código
<input type="text" id="ID_DO_INPUT_A_SER_DIGITADO" name="NAME_DO_INPUT_A_SER_DIGITADO" onkeyUp="carregar()" />


Qlqr coisa poste aqui.

1
|
0

Cheble
   - 19 abr 2016

Boa tarde Fabiano, é necessário fazer a requisição em ajax para obter o retorno.

Exemplo:
#Código


$(".auto").autocomplete({
                    source: function( request, response ) {
        $.ajax({
          url: "autocompletar.php",
          data: {
            q: request.term
          },
          success: function( data ) {
            response( data );
          }
        });
      },
                    minLength: 3
                });  

0
|
0

Fabiano
   - 19 abr 2016

Hum, muito obrigado pela resposta, mas fazendo está alteração acabou não funcionando, eu teria que ativar algo no php para rodar ajax? Estou utilizando wampserver

0
|
0

Cheble
   - 19 abr 2016

Correção do código de acordo com o parâmetro:
#Código


$(".auto").autocomplete({
                    source: function( request, response ) {
        $.ajax({
          url: "autocompletar.php",
          data: {
            term: request.term
          },
          success: function( data ) {
            response( data );
          }
        });
      },
                    minLength: 3
                });  

0
|
0

Fabiano
   - 19 abr 2016

Ainda não retorna nada. Teria alguma relação com a versão do PHP.

0
|
0

Cheble
   - 19 abr 2016

Prezado Fabiano,

Segue o link de referência do código que eu lhe disse:
http://stackoverflow.com/questions/9656523/jquery-autocomplete-with-callback-ajax-json

Caso ainda tenha problemas, você pode (se quiser) compartilhar o link da tela pra eu ver a resposta do Ajax e ver se tem algum erro..

0
|
0

Fabiano
   - 20 abr 2016

Bom dia, muito obrigado pela ajuda,

O codigo que estou utilizando para buscar os dados do banco é:

#Código

if (isset($_GET['term'])){
    $return_arr = array();

    try {
        $conn = new PDO("mysql:host=".DB_SERVER.";dbname=".DB_NAME, DB_USER, DB_PASSWORD);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        
        $stmt = $conn->prepare("SELECT * FROM coh_client_completos WHERE `name_pn` LIKE :term ");
        $stmt->execute(array('term' => $_GET['term'].'%'));
        
        while($row = $stmt->fetch()) {
            $return_arr[] =  $row['name_pn'];
        }

    } catch(PDOException $e) {
        echo 'ERROR: ' . $e->getMessage();
    }

    echo json_encode($return_arr);
}

?>


Como eu posso anexar ao codigo que vc sugeriu?

0
|
0

Fabiano
   - 20 abr 2016

Ao acrescentar <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> para de funcionar outro que acabei de ver aqui.

0
|
0

Marlon Gera
   - 20 abr 2016

Está vai ser a pagina que você irá usar para selecionar os itens do Banco de Dados.
Vamos fazer um Exemplo.

#localhost/pags/busca.php

Citação:
if (isset($_GET['term'])){
$return_arr = array();

try {
$conn = new PDO("mysql:host=".DB_SERVER.";dbname=".DB_NAME, DB_USER, DB_PASSWORD);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $conn->prepare("SELECT * FROM coh_client_completos WHERE `name_pn` LIKE :term ");
$stmt->execute(array('term' => $_GET['term'].'%'));

while($row = $stmt->fetch()) {
$return_arr[] = $row['name_pn'];
}

} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}

echo json_encode($return_arr);
}

?>


#Pagina que irá exibir.

Citação:
<script>
ajax.open('get','localhost/pags/busca.php?NAME_DO_INPUT_A_SER_DIGITADO='+a, true);
ajax.onreadystatechange = trazconteudo;
ajax.send(null);

0
|
0

Fabiano
   - 20 abr 2016

Marlon

A minha duvida é gerada da seguinte forma.

Com o código postado no inicio do post funciona, porem para alguns dados cadastrados no banco não, a maioria funciona, porque em alguns dos casos não funciona?

0
|
0

Marlon Gera
   - 20 abr 2016

Mano, você tem Hangouts (chat do Google)? se sim... me adc la... marlon.0255@gmail.com

0
|
0

Marlon Gera
   - 20 abr 2016


Citação:
Marlon

A minha duvida é gerada da seguinte forma.

Com o código postado no inicio do post funciona, porem para alguns dados cadastrados no banco não, a maioria funciona, porque em alguns dos casos não funciona?


adiciona esta parte no seu HEAD

#Código

<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/themes/base/minified/jquery-ui.min.css" type="text/css" />


e abaixo do,

#Código
<input type="text" class="auto" name="cliente" value="" size="50" required onfocus="if (this.value =='Nome do Cliente!') this.value='';" onblur="if (this.value=='') this.value='Nome do Cliente!'">


coloque...

#Código
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="http://code.jquery.com/ui/1.10.1/jquery-ui.min.js"></script>


Fonte: https://daveismyname.com/autocomplete-with-php-mysql-and-jquery-ui-bp

Provavelmente de onde você tirou seu código também.

0
|
0

Fabiano
   - 28 abr 2016

Funciona, porem ainda nao puxa alguns dados cadastrados. EM uma consulta via console está ok, entao nao eh problema nos dados, alguma ideia porque alguns dados nao retornam?

0
|
0

Fabiano
   - 29 abr 2016

Consegui resolver o problema, criei uma funcao para remover acentos e deixar tudo minusculo, ok Resolvido.

0
|
0