Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

dutopfave

Verificando automático se o campo que digitei existe no banco de dados

Recommended Posts

Boa Noite, tenho um formulário e nele queria ver como faço, quando estou digitando nele se o campo existe no banco

 

exemplo, digitei um produto, ai ele me retorna se aquele produto existe se nao existi ele me mostra uma mensagem, sem atualiza a pagina

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu consigo fazer isso com JavaScript, dessa forma, tente adaptar ao seu gosto.

 

Javascript: (buscar.js)

var req;
 
// FUNÇÃO PARA BUSCA O PRODUTO
function buscarProduto(valor) {
 
// Verificando Browser
if(window.XMLHttpRequest) {
   req = new XMLHttpRequest();
}
else if(window.ActiveXObject) {
   req = new ActiveXObject("Microsoft.XMLHTTP");
}
 
// Arquivo PHP juntamente com o valor digitado no campo (método GET)
var url = "busca.php?produto="+valor;
 
// Chamada do método open para processar a requisição
req.open("Get", url, true); 
 
// Quando o objeto recebe o retorno, chamamos a seguinte função;
req.onreadystatechange = function() {
 
	// Exibe a mensagem "Buscando Noticias..." enquanto carrega
	if(req.readyState == 1) {
		document.getElementById('resultado').innerHTML = 'Verificando...';
	}
 
	// Verifica se o Ajax realizou todas as operações corretamente
	if(req.readyState == 4 && req.status == 200) {
 
	// Resposta retornada pelo busca.php
	var resposta = req.responseText;
 
	// Abaixo colocamos a(s) resposta(s) na div resultado
	document.getElementById('resultado').innerHTML = resposta;
	}
}
req.send(null);
}

 

PHP: (busca.php)

<?php
include("../../includes/conn.php"); //include na conexao
 // Acentuação
header("Content-Type: text/html; charset=UTF-8",true);
// Recebe o valor enviado
$valor = $_GET['produto'];

//busca o sql

 $sql = "SELECT * FROM produtos WHERE nome = '$valor' ";
 if($result = $conn->query($sql)){	 
  $rowcount = mysqli_num_rows($result);
if($rowcount > 1){
  
  echo "<span style='color: red'>Produto já registrado.</span>";
 
}  
 }

 

HTML: (BuscarProduto.php)

<script type="text/javascript" src="buscar.js"></script>
<input type="text" placeholder="Produto" class="form-control" id="busca" onkeyup="buscarProduto(this.value)" />

<div id="resultado" class="resultado"></div>

 

Espero que resolva seu problema, att.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um Jeito mais fácil é usar Jquery!

Então primeiramente vamos adicionar o Jquery no topo no nosso arquivo html... dentro das head

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

Verifique primeiro se já nao tem o Jquery no seu projeto!

 

Prosseguindo ->

 

O CAMPO DA BUSCA:

<input id="busca" type="text" class="form-control" placeholder="Buscar Cliente">
<p id="result"></p>

Repara que demos um id para esta input, é util mais tarde, mais precisamente agora.

O paragrafo com o id "result" , será aonde sera apresentado o resultado da pesquisa.

 

Na mesma pagina criamos este script!

<script>
      $("#busca").keyup(function(){
        var busca = $("#busca").val();
        $.post('busca.php', {busca: busca},function(data){
          $("#result").html(data);
        });
      });
      $("#busca").focusout(function(){
        $("#result").html("Pesquisar Por Clientes!");
      })
    </script>

Este pequeno script verifica quando o usuario esta digitando da input, entao manda para o arquivo php oque sta sendo digitado para poder fazer a consulta no banco de dados.

busca.php :

<?php
$conn  = mysqli_connect('localhost','root','','busca');
$busca =  $_POST['busca'];
$query = mysqli_query($conn, "SELECT * FROM clientes WHERE nome LIKE '%$busca%'");
$num   = mysqli_num_rows($query);
if($num >0){
    while($row = mysqli_fetch_assoc($query)){
      echo $row['nome'].' - '.$row['email'].'<br /><hr>';
    }
}else{
  echo "Esta Pessoa Não Existe!";
}
?>

Mais informações: https://github.com/luannsr12/Aula_busca_com_Jquery

E está feito! Abç

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por FabianoSouza
      Eu preciso exibir duas informações em minha consulta:
      1) A quantidade de pessoas inscritas numa turma de treinamento (isso é feito com um simples COUNT)
      2) Uma flag de excesso de inscrições na turma. Seria obtido pela comparação entre a quantidade máxima permitida (já existe esse campo) e o COUNT feito acima.
       
      Até aqui sem problemas.
       
      O que quero é evitar fazer duas contagens (1 para saber a quantidade de inscritos, e outra para gerar a flag de excesso de inscrições).
       
      Há uma forma de utilizar UMA contagem para atender as duas necessidades?
       
      Meu código está assim:
       
      ... --AQUI FAZ A COMPARAÇÃO PARA GERAR A FLAG DE EXCESSO DE INSCRIÇÕES , CASE WHEN (SELECT COUNT(*) FROM dbo.tab AS ITT WHERE ITT.codTurmaDeTreina = T.id) > T.lotacaoMax Then T.nome + '&nbsp;'+'<span class=%22icon-aviso fcolor-critico%22 style=%22font-size:18px%22 title=Excesso&nbsp;de&nbsp;inscrições></span>' --AQUI FAZ A CONTAGEM DE INSCRIÇÕES , (SELECT COUNT(*) FROM dbo.tab AS ITT WHERE ITT.codTurmaDeTreina = T.id) AS 'Inscrições'  
    • Por juniormatrix
      Olá
       
      Achei esse script aqui no fórum mesmo:
       
      $.validator.addMethod( "customEmail", function (value, element) { return this.optional(element) || /^[\w-\.]+@fulano\.com\.br$/i.test(value); }, "Por favor, insira um e-mail válido com o domínio @fulano.com.br" ); $("#formulario").validate({ ignore: ".ignore", rules: { empresa: { required: true }, nome: { required: true }, contato: { required: true }, celular: { required: true }, email: { required: true, email: true, customEmail: true }, }, }); Testei e funcionou perfeitamente, mas gostaria que liberasse mais e-mails válidos, ao invés de apenas um.

      Tem como fazer? 
       
      Se alguém puder ajudar, fico muito grato.
    • Por FabianoSouza
      Possuo uma coluna de data.
      Eu gostaria que os registros com datas futuras aparecessem no topo do meu select, em relação aos demais registros.
      Em seguida, gostaria que somente esses registros com datas futuras ficassem em ordem crescente.
      Algo como 
       
      João  | 16/11/2023
      Maria | 17/11/2023
      José  |  20/11/2023
       
      -----------------------------
      (demais registros da base)
      Antônio   |  20/05/2023
      Rosa        | 15/08/2023
      Cida         | 15/10/2022
      Pedro      |  20/05/2021
      Paulo      |  14/11/2020
       
      O select seria esse.
      select dbo.formataData(ET.dataInicial) AS 'data' FROM dbo.tab AS ET GROUP BY ET.dataInicial  
    • Por Alessandro Bodão
      Salve galerinha, passando pra mostrar pra vocês o novo projeto de marca que a Jatobá Estúdio desenvolveu, espero que gostem.   https://www.behance.net/gallery/166555627/Fernanda-Pinheiro-Nutricionista-Esportiva
    • Por rogerblower
      Boas pessoal, estou precisando de um calendário para agenda com crud para agendamento, mas teria que ser free.
      Obrogado.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.