Pesquisa ao digitar

24/01/2016

Olá amigos,

Sou novato por aqui e gostaria de contar com o apoio de vocês. Através deste portal, criei uma pesquisa baseada em ajax e php que consiste em efetuar uma consulta de acordo com as inicias digitadas. Está funcionando quando não digito nada exibe tudo e quando digito algo exibe a msg que não encontrou registros.
Veja o princípio da sitaxe:
if(isset($_GET["txtnome"])){
$nome=$_GET["txtnome"];
if(empty($nome)){
$sql = "SELECT * FROM up_ramais_sede";
}else{
$nome .='%';
$sql = "SELECT * FROM up_ramais_sede nome like '$nome'";
}
sleep(1);
$result = mysqli_query($conn,$sql);
$cont = mysqli_affected_rows($conn);

if($cont>0)
Não consegui identificar onde está o erro. Me ajudem por favor. Preciso muito desta pesquisa.

ACT

PHP

Antonio Souza

Melhor resposta

24/01/2016

Então Márcio pelo o que entendi sobre a dúvida dele, o problema é na pesquisa de registros, ele não consegue trazer resultados de acordo com um termo pesquisado!

Me parece que o seu link tem relação com persistência de dados em "formulários" HTML.

William (devwilliam)

Responder Citar

Outras Respostas

24/01/2016

Marcio Araujo

Boa tarde Antonio, publiquei um código que pode te ajudar.

[url]http://www.devmedia.com.br/forum/dica-formulario-que-persiste-dados-na-busca/541165[/url]
Responder Citar

24/01/2016

Antonio Souza

Seu código é muito bom e posso no futuro até precisar. Te agradeço. Porém minha questão é outra.
Responder Citar

24/01/2016

Marcio Araujo

Que pena, aguardar alguem com conhecimento em Ajax.

Obs: o código não é meu.
Responder Citar

24/01/2016

William (devwilliam)

Olá Antonio, por gentileza quando for postar trechos de código utilize a tag CODE para deixar mais legível.
[img]http://arquivo.devmedia.com.br/forum/imagem/269142-20160124-200618.png[/img]

Quanto a sua dúvida poste a instrução AJAX e o código completo do script PHP que realiza a consulta!
Responder Citar

24/01/2016

Marcio Araujo

O código que postei(link) ajuda William?
Responder Citar

24/01/2016

Marcio Araujo

Ah obrigado pelo esclarecimento, ainda não testei esse código.
Responder Citar

24/01/2016

Antonio Souza

Valeu e desculpa, não me liguei na tag.

<?php
require_once('../projeto/dts/iniSis.php');
require_once('../projeto/dts/dbaSis.php'); //encontra-se o link de conexão
$conn=connect();
// nova regra
if(isset($_GET["txtnome"])){
$nome=$_GET["txtnome"];
if(empty($nome)){
$sql = "SELECT * FROM up_ramais_sede";
}else{
$nome .='%';
$sql = "SELECT * FROM up_ramais_sede nome like '$nome'";
}
sleep(1);
$result = mysqli_query($conn,$sql);
$cont = mysqli_affected_rows($conn);

if($cont>0){
$tabela = '<table border="1" cellspacing="0" cellpadding="0">
<thead>
<tr>
<th>Nome:</th>
<th>Setor:</th>
<th>Ramal:</th>
<th colspan="4">ações:</th>
</tr>
</thead>
</tbody>
<tr>';
$return = $tabela;
foreach($result as $linha):
// while($linha=mysqli_fetch_array($result)){
$return .='<td>'.$linha['nome'].'</td>';
$return .='<td align="center">'.$linha['setor'].'</td>';
$return .='<td align="center">'.$linha['ramal'].'</td>';
$return .='<td align="center">'.$linha['id'].'</td>';
$return .='<td align="center">'.$linha['id'].'</td>';

$return .='</tr>';
endforeach;
//}
echo $return .='</table>';
}else{
echo 'Não foram encontrados registros';
}
}



/**
* Função para criar um objeto XMLHTTPRequest
*/
function CriaRequest() {
try{
request = new XMLHttpRequest();
}catch (IEAtual){

try{
request = new ActiveXObject("Msxml2.XMLHTTP");
}catch(IEAntigo){

try{
request = new ActiveXObject("Microsoft.XMLHTTP");
}catch(falha){
request = false;
}
}
}

if (!request)
alert("Seu Navegador não suporta Ajax!");
else
return request;
}

/**
* Função para enviar os dados
/************************** */
function getDados(){
/**************************/
// Declaração de Variáveis
var nome = document.getElementById("txtnome").value;
var result = document.getElementById("Resultado");
var xmlreq = CriaRequest();

// Exibi a imagem de progresso
result.innerHTML = '<img src="Progresso1.gif"/>';

// Iniciar uma requisição
xmlreq.open("GET", "Contato.php?txtnome=" + nome, true);

// Atribui uma função para ser executada sempre que houver uma mudança de ado
xmlreq.onreadystatechange = function(){

// Verifica se foi concluído com sucesso e a conexão fechada (readyState=4)
if (xmlreq.readyState == 4) {

// Verifica se o arquivo foi encontrado com sucesso
if (xmlreq.status == 200) {
result.innerHTML = xmlreq.responseText;
}else{
result.innerHTML = "Erro: " + xmlreq.statusText;
}
}
};
xmlreq.send(null);
}
Responder Citar

25/01/2016

William (devwilliam)

Contínua não usando a TAG, vou analisar seu código:

<?php 
require_once('../projeto/dts/iniSis.php');
require_once('../projeto/dts/dbaSis.php'); //encontra-se o link de conexão
$conn=connect(); 
// nova regra
if(isset($_GET["txtnome"])){
$nome=$_GET["txtnome"];
if(empty($nome)){
$sql	=	"SELECT * FROM up_ramais_sede";
}else{
$nome .='%';
$sql =	"SELECT * FROM up_ramais_sede nome like '$nome'";
}
sleep(1);
$result	=	mysqli_query($conn,$sql);
$cont	=	mysqli_affected_rows($conn);

if($cont>0){
$tabela = '<table border="1" cellspacing="0" cellpadding="0">
<thead>
<tr>
<th>Nome:</th>
<th>Setor:</th>
<th>Ramal:</th>
<th colspan="4">ações:</th>
</tr>
</thead>
</tbody>
<tr>';
$return = $tabela;
foreach($result as $linha):
// while($linha=mysqli_fetch_array($result)){ 
$return .='<td>'.$linha['nome'].'</td>';
$return .='<td align="center">'.$linha['setor'].'</td>';
$return .='<td align="center">'.$linha['ramal'].'</td>';
$return .='<td align="center">'.$linha['id'].'</td>';
$return .='<td align="center">'.$linha['id'].'</td>';

$return .='</tr>';
endforeach;
//}
echo $return .='</table>';
}else{
echo 'Não foram encontrados registros';
}
}



/**
* Função para criar um objeto XMLHTTPRequest
*/
function CriaRequest() {
try{
request = new XMLHttpRequest(); 
}catch (IEAtual){

try{
request = new ActiveXObject("Msxml2.XMLHTTP"); 
}catch(IEAntigo){

try{
request = new ActiveXObject("Microsoft.XMLHTTP"); 
}catch(falha){
request = false;
}
}
}

if (!request) 
alert("Seu Navegador não suporta Ajax!");
else
return request;
}

/**
* Função para enviar os dados
/************************** */
function getDados(){
/**************************/
// Declaração de Variáveis
var nome = document.getElementById("txtnome").value;
var result = document.getElementById("Resultado");
var xmlreq = CriaRequest();

// Exibi a imagem de progresso
result.innerHTML = '<img src="Progresso1.gif"/>';

// Iniciar uma requisição
xmlreq.open("GET", "Contato.php?txtnome=" + nome, true);

// Atribui uma função para ser executada sempre que houver uma mudança de ado
xmlreq.onreadystatechange = function(){

// Verifica se foi concluído com sucesso e a conexão fechada (readyState=4)
if (xmlreq.readyState == 4) {

// Verifica se o arquivo foi encontrado com sucesso
if (xmlreq.status == 200) {
result.innerHTML = xmlreq.responseText;
}else{
result.innerHTML = "Erro: " + xmlreq.statusText;
}
}
};
xmlreq.send(null);
}
Responder Citar

25/01/2016

Antonio Souza

Eu te agradeço muito. Quero dizer cliquei na tag conforme me informou. O meu erro foi quando ao colar o código não coloquei entre as tags. Desculpa mais uma vez, tomarei cuidado na próxima.
Responder Citar

02/02/2016

Antonio Souza

Olá William,

Vejo que não deu importância ao meu questionamento sobre a pesquisa, não é mesmo. Ficou de analisar e me retornar! Vale lembrar que a função foi obtida neste mesmo portal.
Responder Citar

03/02/2016

William (devwilliam)

Vejo que não deu importância ao meu questionamento sobre a pesquisa, não é mesmo. Ficou de analisar e me retornar! Vale lembrar que a função foi obtida neste mesmo portal.


Então Antonio fiquei de analisar seu código sim, mas infelizmente não vivo de responder fóruns apesar de já ter respondido mais de 1900 dúvidas!

Acesso o fórum conforme minha disponibilidade de tempo que ultimamente tem sido pouco, as pessoas ajudam quando podem e tem tempo para testar códigos.

Quanto ao seu escript, seu erro está nesse trecho, está faltando "WHERE" na instrução SQL:
else{
$nome .='%';
$sql =  "SELECT * FROM up_ramais_sede nome like '$nome'";
}


OBS: Consultas com strings concatenadas são uma falha grande de segurança, pesquise sobre parametrização de consultas.
Responder Citar