Fórum Autocompletar PHP + Mysql #551797
19/04/2016
0
<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.
Fabiano
Curtir tópico
+ 0Post mais votado
20/04/2016
Você colocou esta parte no seu head?
<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.
<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.
<input type="text" id="ID_DO_INPUT_A_SER_DIGITADO" name="NAME_DO_INPUT_A_SER_DIGITADO" onkeyUp="carregar()" />
Qlqr coisa poste aqui.
Marlon Gera
Gostei + 1
Mais Posts
19/04/2016
Bruno Azevedo
Exemplo:
$(".auto").autocomplete({
source: function( request, response ) {
$.ajax({
url: "autocompletar.php",
data: {
q: request.term
},
success: function( data ) {
response( data );
}
});
},
minLength: 3
});
Gostei + 0
19/04/2016
Fabiano
Gostei + 0
19/04/2016
Bruno Azevedo
$(".auto").autocomplete({
source: function( request, response ) {
$.ajax({
url: "autocompletar.php",
data: {
term: request.term
},
success: function( data ) {
response( data );
}
});
},
minLength: 3
});
Gostei + 0
19/04/2016
Fabiano
Gostei + 0
19/04/2016
Bruno Azevedo
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..
Gostei + 0
20/04/2016
Fabiano
O codigo que estou utilizando para buscar os dados do banco é:
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?
Gostei + 0
20/04/2016
Fabiano
Gostei + 0
20/04/2016
Marlon Gera
Vamos fazer um Exemplo.
#localhost/pags/busca.php
$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.
ajax.open('get','localhost/pags/busca.php?NAME_DO_INPUT_A_SER_DIGITADO='+a, true);
ajax.onreadystatechange = trazconteudo;
ajax.send(null);
Gostei + 0
20/04/2016
Fabiano
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?
Gostei + 0
20/04/2016
Marlon Gera
Gostei + 0
20/04/2016
Marlon Gera
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
<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,
<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...
<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.
Gostei + 0
28/04/2016
Fabiano
Gostei + 0
29/04/2016
Fabiano
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)