Jump to content
JenneferBarbosa

Busca com vários campos com PHP e MySQL

Recommended Posts

Pessoal, sou nova aqui no Fórum e estou começando a estudar PHP. Estou com dúvidas quanto a pesquisa com vários campos, consegui fazer para um campo só, porém quando tento para vários campos não funciona. Fiz algumas pesquisas e só consegui achar buscas com 'selects e options' e eu queria que ele pegasse o que foi digitado no input e fizesse a busca, mas o usuário não precisaria informar todos os campos (se não quisesse). Quando clico em 'Pesquisar' aparece todos os dados do banco. E uma outra dúvida, como faz para que os dados pesquisados sejam exibidos na mesma tela (abaixo do formulário de pesquisa)

<form method="POST" id="form-pesquisa" action="busca.php">
            Livro: <input type="text" name="nome" id="nome" placeholder="Fulano de Tal">
            Autor: <input type="text" name="autor" id="autor" placeholder="Fulano de Tal">
            Edicao:  <input type="text" name="edicao" id="edicao" placeholder="Fulano de Tal">
            <input type="submit" name="enviar" value="Pesquisar">
 </form>
<ul class="resultado"></ul>


$nome = $_POST['nome'];
$autor = $_POST['autor'];
$edicao = $_POST['edicao'];

//Pesquisar no banco de dados nome do livro referente a palavra digitada pelo usuário
$livros = "SELECT * FROM livro WHERE nome OR autor OR edicao ORDER BY nome ASC";
$resultado_livros = mysqli_query($conn, $livros);

if (mysqli_num_rows($resultado_livros) <= 0) {
    echo "Nenhum livro encontrado...";
} else {
    while ($rows = mysqli_fetch_assoc($resultado_livros)) {
        echo "<li>" . $rows['codigo'] . "</li>";
        echo "<li>" . $rows['nome'] . "</li>";
        echo "<li>" . $rows['autor'] . "</li>";
        echo "<li>" . $rows['edicao'] . "</li>";
    }
}

. Como se ele fizesse a busca internamente e mostrasse ao usuário o que ele pesquisou sem ele sair da tela em que está o form

Share this post


Link to post
Share on other sites

@JenneferBarbosa Para fazer isso basta você usar o operador do LIKE do SQL, é bem simples bastar fazer algumas mudanças na sua consulta SQL.

 

Também recomendo o uso do AND a o em vez do OR já que utilizando o operador LIKE com o OR pode ocorrer complicações.

 

Um exemplo do uso do LIKE mais o AND na sua consulta ficaria +- assim

$livros = "SELECT * FROM `livro` WHERE `nome` LIKE '".$nome."%' AND `autor` LIKE '".$autor."%' AND `edicao` LIKE '".$edicao."%' ORDER BY `nome` ASC";

 

 

Share this post


Link to post
Share on other sites

Oi boa noite, seja bem vinda.

 

O que nosso amigo disse acima vai te ajudar, use o LIKE, apenas complementando que você deve utilizar o like apenas uma vez depois você usa o operando AND ou OR com ou sem parênteses depende de como você vai fazer a consulta.

 

e para exibir tudo em uma mesma página depende de como você está exibindo o resultado, se você enviar a action do form para a mesma página você pode exibir os registros da consulta na mesma página ou uma alternativa é salvar o resultado em uma sessão e exibir também na mesma página verificando antes(if) se existe a sessão com os valores pesquisados.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Yiuky
      Olá tenho esse código abaixo e a parte em vermelho é um HTML carregado pelo meu Arduíno, e como podem ver, ao clicar no botão LIGAR/DESLIGAR é enviado um retorno pelo <a href> porém eu gostaria de saber como posso apenas coletar esse retorno /L OU /H e carregar a pagina index / (barra vazia)? Ou se posso clicar no LIGAR/DESLIGAR e adicionar algo para que a pagina "atualize" ou vá para a /?
       
      // \r\n no final de todos os códigos AT para pular linhas e reconhecer comando
      #include "SDHT.h"
      #include "WiFiEsp.h" //INCLUSÃO DA BIBLIOTECA
      #include <SoftwareSerial.h>
      //Pino do Tx no 6, pino Rx no 7
      SoftwareSerial esp8266(6, 7);
      SDHT dht;
      char ssid[] = "2.4_GAMBATESHIMA"; //VARIÁVEL QUE ARMAZENA O NOME DA REDE SEM FIO
      char pass[] = "FACA2010";//VARIÁVEL QUE ARMAZENA A SENHA DA REDE SEM FIO
      //char ssid[] = "Ali"; //VARIÁVEL QUE ARMAZENA O NOME DA REDE SEM FIO
      //char pass[] = "01010101";//VARIÁVEL QUE ARMAZENA A SENHA DA REDE SEM FIO
      WiFiEspServer server(81); //CONEXÃO REALIZADA NA PORTA 80
      RingBuffer buf(8); //BUFFER PARA AUMENTAR A VELOCIDADE E REDUZIR A ALOCAÇÃO DE MEMÓRIA
      #define DEBUG true
        int statusLed = LOW; //VARIÁVEL QUE ARMAZENA O ESTADO ATUAL DO LED (LIGADO / DESLIGADO)
        String temperatura;
        String umidade;
        
        int status = WL_IDLE_STATUS;
        
      void lerTempUmi(){
        dht.broadcast(DHT11, A1);
        delay(500);
        temperatura = String (dht.celsius, 0);
        umidade = String (dht.humidity, 0);
         }
        
      void setup() 
      {
          Serial.begin(9600);
          esp8266.begin(9600);
          WiFi.init(&esp8266);   // initialize ESP module
          pinMode(12, OUTPUT);
          digitalWrite(12, statusLed);
        if (WiFi.status() == WL_NO_SHIELD)  // check for the presence of the shield 
        {
          Serial.println("WiFi shield not present");
          // don't continue
          while (true);
        }
        // attempt to connect to WiFi network
        while ( status != WL_CONNECTED) {
          Serial.print("Attempting to connect to WPA SSID: ");
          Serial.println(ssid);
          // Connect to WPA/WPA2 network
          status = WiFi.begin(ssid, pass);
        }
        Serial.println("You're connected to the network");
        printWifiStatus();
        
        while ( status != WL_CONNECTED) {
          Serial.print("Attempting to connect to WPA SSID: ");
          WiFi.init(&esp8266);
          WiFi.begin(ssid, pass);
          Serial.println(ssid);
          // Connect to WPA/WPA2 network
          status = WiFi.begin(ssid, pass);
        }
        //sendData("AT+RST\r\n", 2000, DEBUG); // rst
        //sendData("AT+CWMODE=1\r\n",2000, DEBUG); 
        //sendData("AT+CWJAP=\"2.4_GAMBATESHIMA\",\"FACA2010\"\r\n", 5000, DEBUG);
            
        //sendData("AT+CIFSR\r\n", 2000, DEBUG);//You will get the IP Address of the ESP8266 from this command. 
        //sendData("AT+CIPMUX=1\r\n", 2000, DEBUG);
        //sendData("AT+CIPSERVER=1,80\r\n", 2000, DEBUG);
        //sendData("AT+CIPSTART=0,\"TCP\",\"192.168.0.120\",37777\r\n",1000, DEBUG);                          // escolhe entre conexao TCP ou UDP 
        //delay(1000); 
        //sendData("AT+CWDHCP=1,0\r\n",1000, DEBUG);                                                        // configura ESP8266 para receber um IP do roteador conectado
        //delay(1000);
        //sendData("AT+CIPSTA_DEF=\"192.168.2.5\",\"192.168.2.1\",\"255.255.255.0\"\r\n",1000, DEBUG);      // configura novo IP a ser escolhido - IP fixo, IP do roteador, Mascara da Rede (lembrando que o IP a ser escolhido deve estar na mesma faixa do roteador);
        //delay(1000);   
        //sendData("AT+CIFSR\r\n", 1000, DEBUG);                                                              // Mostra o endereco IP
        //delay(3000);
        
        // Configura para multiplas conexoes
        //sendData("AT+CIPMUX=1\r\n", 1000, DEBUG);                                                           // Abre multiplas conexoes
        //delay(2000);
        //sendData("AT+CIPSERVER=1,80\r\n", 1000, DEBUG);
        delay(1000);
        server.begin();
        
      }
      void loop() 
      {
             WiFiEspClient client = server.available(); //ATENDE AS SOLICITAÇÕES DO CLIENTE
            if (client) { //SE CLIENTE TENTAR SE CONECTAR, FAZ
            buf.init(); //INICIALIZA O BUFFER
            boolean currentLineIsBlank = true;
            while (client.connected()){ //ENQU
            if(client.available()){ //SE EXISTIR REQUISIÇÃO DO CLIENTE, FAZ
              char c = client.read(); //LÊ A REQUISIÇÃO DO CLIENTE
              buf.push(c); //BUFFER ARMAZENA A REQUISIÇÃO
               //IDENTIFICA O FIM DA REQUISIÇÃO HTTP E ENVIA UMA RESPOSTA
              if(buf.endsWith("\r\n\r\n") && currentLineIsBlank) {
       //         lerTempUmi();
                WebPage2(client);
                break;
              }else if(buf.endsWith("GET /H")){ //SE O PARÂMETRO DA REQUISIÇÃO VINDO POR GET FOR IGUAL A "H", FAZ 
                  digitalWrite(12, HIGH); //ACENDE O LED
                  statusLed = HIGH; //VARIÁVEL RECEBE VALOR 0(SIGNIFICA QUE O LED ESTÁ APAGADO)
              }else if (buf.endsWith("GET /L")) { //SE O PARÂMETRO DA REQUISIÇÃO VINDO POR GET FOR IGUAL A "L", FAZ
                        digitalWrite(12, LOW); //APAGA O LED
                        statusLed = LOW; //VARIÁVEL RECEBE VALOR 0(SIGNIFICA QUE O LED ESTÁ APAGADO)
                   }
                   }
                   
                   }
                   delay(10);
            client.stop();
      //sendData("AT+CIPCLOSE=0\r\n", 1000, DEBUG);
                    }
      if (status != WL_CONNECTED) {
        setup();}
      }
      void WebPage2(WiFiEspClient client){
        client.print(
          "HTTP/1.1 200 OK\r\n"
          "Content-Type: text/html\r\n"
       //   "Connection: close\r\n"  // the connection will be closed after completion of the response
          "\r\n");
        client.println("");
        client.println(F("<!DOCTYPE HTML>")); //INFORMA AO NAVEGADOR A ESPECIFICAÇÃO DO HTML
        client.println(F("<html><head><meta charset=\"utf-8\">")); //ABRE A TAG "html"
        client.println(F("<link rel='stylesheet' type='text/css' href='http://blogmasterwalkershop.com.br/arquivos/artigos/sub_wifi/webpagecss.css' />\n"
        "<link rel=\"icon\" type=\"image/png\" href=\"webserver\" src=\"https://tse3.mm.bing.net/th?id=OIP.iEsBOeq78HtIighYnuVMRAHaHa&amp;pid=Api&amp;P=0&amp;w=300&amp;h=300.png\">\n"
      "  <title>GAMBATESHIMA ARDUINO WORK</title>"));
        
        //AS LINHAS ABAIXO CRIAM A PÁGINA HTML
        client.println(F("<body class=\"htmlNoPages\">\n"
      "  <img alt=\"webserver\" src=\"https://tse3.mm.bing.net/th?id=OIP.iEsBOeq78HtIighYnuVMRAHaHa&amp;pid=Api&amp;P=0&amp;w=300&amp;h=300.png\" style=\"width: 150px; height: 150px; margin-top: 50px;\">\n"
      "  <p style=\"line-height: 2;\" class=\"gwd-p-pzi3\"><font>WEBSERVER GAMBATESHIMA</font></p><p>ESTADO ATUAL DO LED: \n"));
          if (statusLed == HIGH) {
      client.println(F(" <strong><font color=\"green\">LIGADO</font></strong></p>\n"
            "<a href=\"/L\" style=\"margin-bottom:50px;\">DESLIGAR</a>\n"));
          }else {
            if (statusLed == LOW) {
      client.println(F(" <strong><font color=\"red\">DESLIGADO</font></strong></p>\n"
            "<a href=\"/H\" style=\"margin-bottom:50px;\">ACENDER</a>\n"));
          }}
                lerTempUmi();
      client.println(F( 
      "  <hr width=\"250\">\n"
      "  <p style=\"line-height: 0;\"><font color=\"red\">TEMPERATURA: </font>"));
      client.print(temperatura);
      client.println(F(" ºC</p>\n <hr width=\"250\">\n"
      "  <p style=\"line-height: 0;\"><font color=\"red\">UMIDADE: </font>"));
      client.print(umidade);
      client.println(F(" %</p>\n <hr width=\"250\">\n"
      "<a href=\"/\">ATUALIZAR</a>\n"
      "</body>\n"
      "</html>
    • By violin101
      Caros amigos, saudações...
       
      Estou usando Codeigniter e estou com uma pequena dúvida.
       
      Tenho um Form com os seguintes campos:
      Data Início..... <input type="date" /> Hora Início.... <input type="time" /> Data Final..... <input type="date" /> Hora Final.... <input type="time" /> até aqui tudo bem
       
      Gostaria de fazer uma VERIFICAÇÃO para impedir que o usuário GRAVE no MySql uma data menor que a data atual.
      ou seja:
      Data Início nunca poderá ser menor que a Data Atual.
      e a
      Data Final só poder ser igual ou maior que a Data Início.
       
      Grato,
       
      Cesar
       
    • By Salvatore
      Galerinha Boa, alguém pode me explicar como eu faço pra editar isso abaixo usando php
       
       
       <div class="nome-vip">
              <p class="text-center"><span>1</span> CASH</p>             <---------------essa parte eu queria saber como eu edito clicando por cima(tentei usando contenteditable), mas n deu do jeito que eu queria,preciso que o valor editado fique em uma variavel PHP
            </div>
            <p class="text-center" style="color: #888; font-size: 15px;">por apenas</p>
            <div class="preco-vip">
              <p class="text-center">R$ 1</p> <------------------- e aqui iria ter a variável preço que ja estaria definida como um, e quando la em cima fosse adicionado um valor int, somasse os 2 e gerasse a variavel valor e exibindo ela
            </div>
       
      Alguém ajuda eu, to caçando em mts sites algo assim mas n consigo
       
    • By drx
      Olá pessoal!
      Estou com um probleminha aqui. Estou me embrenhando pelos ajax e jquery. Muito interessante. 
      Eu peguei um exemplo e é bem simples. Só que não retorna a mensagem para a div.
       
      Eu tenho uma div em pagina1.php onde o usuário entra com um número identificador em um campo textfield.
      Após entrar com o número identificador, solicito a verificação em uma outra página.php onde tenho uma consulta no mysql.
      O echo da consulta é: Existente ou Inexistente. A consulta é feita pelo número identificador. Fiz a verificação e retorna perfeitamente,
      Porém eu quero que ao verificar, a mensagem retorne para minha outra div logo abaixo na pagina1.php
      Vou passar o código para facilitar....
       
      <html>
      <head>
       
      <script src="js/jquery.js"></script>
      <script>
      $(function(){
        $('#form').submit(function(){
           $.ajax({
             url: 'x_consultar_patro.php',
             type: 'POST',
             data: $('#form').serialize(),
             success:function ( data ) {
                 if (data != '') {
                     $('#frm_cadastro').html( data );
                 }
               }
             });
           return false;
         });
      });
      </script>
       
      </head>
       
      <body>

      <div id="frm_cadastro"></div>

      <form id="form" method="post" action="">
        <input type="text" name="codpatro" id="codpatro"/>
        <input type="submit" name="btn_procurar" id="btn_procurar" value="Procurar"/>
      </form>
       
      </body>
      <html>
       
       

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.