Jump to content
stefany nogueira

Não consigo gerar os resultados

Recommended Posts

Não estou conseguindo gerar os resultados da busca com filtro, 

Segue abaixo index e results:

Index:

<?php
    include "conexao.php"
?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml1" lang="pt-br" xml:lang="pt-br">

    <head>
        <meta charset="utf-8">
        <title> Busca </title>
    </head>

    <body>
    <form action="results" method="post">

    <select name = convênios>
        <option value="">Selecione o convênio</option>
        <?php
            $convenios = "SELECT * FROM convenios";
            $qrconvenio = mysqli_query($conexao, $convenios);
            while ($row_convenios = mysqli_fetch_assoc($qrconvenio)) { 
        ?>
                <option value = "<?php echo utf8_encode($row_convenios ['id_convenio'])?>" > <?php echo utf8_encode($row_convenios ['Nome']) ?></option>
        <?php
        }
        ?>
    </select>
    <select name = Estado>
        <option value="">Selecione o estado</option>
        <?php
            $estado = "SELECT * FROM estado";
            $qrestado = mysqli_query($conexao, $estado);
            while ($row_estado = mysqli_fetch_assoc($qrestado)) { 
        ?>
                <option value = "<?php echo utf8_encode($row_estado ['id_estado'])?>" > <?php echo utf8_encode($row_estado ['Nome']) ?></option>
        <?php
        }
        ?>
    </select>
    <select name = Cidade>
        <option value="">Selecione a cidade</option>
        <?php
            $cidade = "SELECT * FROM cidade";
            $qrcidade = mysqli_query($conexao, $cidade);
            while ($row_cidade = mysqli_fetch_assoc($qrcidade)) { 
        ?>
                <option value = "<?php echo utf8_encode($row_cidade ['id_cidade'])?>" > <?php echo utf8_encode($row_cidade ['Nome']) ?></option>
        <?php
        }
        ?>
    </select>
    <select name = Especialidade>
        <option value="">Selecione a especialidade</option>
        <?php
            $especialidade = "SELECT * FROM especialidades";
            $qrespecialidade = mysqli_query($conexao, $especialidade);
            while ($row_especialidade = mysqli_fetch_assoc($qrespecialidade)) { 
        ?>
                <option value = "<?php echo utf8_encode($row_especialidade ['id_especialidade'])?>" > <?php echo utf8_encode($row_especialidade ['Nome']) ?></option>
        <?php
        }
        ?>
    </select>
    <input type="hidden" name="acao" value="buscar"/>
    <input type="submit" value="Buscar"/>
    </form>
    
</body>

 

 

Results:

 

<?php
    include "conexao.php"
?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml1" lang="pt-br" xml:lang="pt-br">

    <head>
        <meta charset="utf-8">
        <title> Busca </title>
    </head>

<body>
<?php
    $convenios = $_POST ['convenios'];
    $estado = $_POST ['estado'];
    $cidade = $_POST ['ciadade'];
    $especialidade = $_POST ['especilidades'];
    $profissional = "SELECT * FROM profissional WHERE Nome LIKE 'id_convenio' AND 'id_estado' AND 'id_cidade' AND 'id_especialidade'";
    $qrprofissional = mysqli_query ($conexao, $profissional);
    $row = mysqli_num_rows ($qrprofissional);
    if ($row > 0 ) {
        while ($linha = mysql_fetch_array($qrprofissional)) {
            $nome = $linha ['Nome'];
            $endereço = $linha ['Endereço'];
            $telefone = $linha ['Telefone'];
            echo "<strong>Profissional: </strong>".@$nome;
            echo "<br></br>";
            echo "<strong>Endereço: </strong>".@$endereço;
            echo "<br></br>";
            echo "<strong>Telefone: </strong>".@$telefone;
            echo "<br></br>";
        }
    } else {
        echo "Não foi encontrado profissionais";

    }

?>


</body>

 

Share this post


Link to post
Share on other sites

@stefany nogueira vamos lá.

 

Existem alguns erros no seu código.

 

Os atributos NAME eu recomendo você a colocar todos sempre entre aspas e NUNCA usar acentuação, exatamente por causa desses tipos de erros, fica completamente complicado achar um erro devido a problemas de acentuação.

 

Então assim:: 

<select name = convênios> eu recomendo isso  <select name="convenios">

E o motivo disso é porque no seu POST você pegou convenio SEM o ^ gerando 1 erro. $convenios = $_POST ['convenios'];

<select name = Especialidade> eu recomendo isso <select name="especialidade">

Existe diferenças entre MAIUSCULO e MINUSCULO, então Especialidade é diferente de especialidade, mantenha um padrão de nome e eu sugiro TUDO sempre em minusculo e SEMPRE sem acentuação.

 

Outro erro é que você faz a recepção das variáveis enviadas pelo FORMULÁRIO via método POST e no seu SELECT você não as utiliza de forma correta, onde você coloca ID_CONVENIO você precisa colocar a variável que pegou o conteudo do POST['convenio'] que é $convenio, então o LIKE precisa ter '%".$convenio."%' <-- exatamente assim, com aspas simples, porcentagem aspas duplas ponto variável php ponto aspas duplas porcentagem aspas simples.

 

Existe um erro extremamente GRAVE na sua clausula SQL.

Vou te fazer a pergunta e em seguida uma sugestão do que eu acho que deve ser.

 

O que essa clausula deveria buscar como CRITÉRIO?

$profissional = "SELECT * FROM profissional WHERE Nome LIKE 'id_convenio' AND 'id_estado' AND 'id_cidade' AND 'id_especialidade'";

 

Explicando o que esse comando FAZ exatamente.

 

SELECIONA (TUDO) DA TABELA profissional ONDE nome (TEM COMO CONTEUDO SIMILAR) 'id_convenio' E' 'id_estado' E 'id_cidade' E 'id_especialidade',

 

Então explicando o porque eu marquei o E em vermelho, VOCÊ TEM UM NOME (nome que eu não sei do que) que tenha como conteudo por exemplo, MEDICO SP SÃO PAULO PSICOLOGO ???? Porque é isso que você está fazendo.

 

Mais um DETALHE, o comando LIKE precisa buscar uma STRING com % ou antes da string ou depois da string ou antes e depois da string, veja como funciona:

 

Expressão Resultado
LIKE 'Juca%' Qualquer string que iniciem com Juca.
LIKE '%Silva' Qualquer string que terminem com Silva.
LIKE '%Santos%' Qualquer string que tenha Santos em qualquer posição.

 

Então eu acho que o que você quer é buscar as informações dos profissionais que tenham como caracteristicas, aceitar um tal convênio, que estejam dentro de um estado/cidade e que tenham a especialização informada, neste caso o seu select precisa respeitar a seguinte clausula.

 

$profissional = "SELECT * FROM profissional WHERE convenio LIKE '%".$convenio."%' AND estado LIKE '%".$estado."%' AND cidade LIKE '%".$cidade."%' AND especialidade LIKE '%".$especialidade."%';

 

Explicando o que o select acima faz.

 

SELECIONA (TUDO) DA TABELA PROFISSIONAL ONDE CONVENIO TENHA CONTEUDO %nomeconvenio% E ESTADO TENHA CONTEUDO %nomeestado% E CIDADE TENHA CONTEUDO %nomecidade% E ESPECIALIDADE TENHA CONTEUDO %nomeespecialidade%

 

Onde todo o conteudo entre %% são exatamente os valores selecionados no seu combobox passados via POST[''] que são atribuidas as variáveis PHP $nomevar que você colocou aqui:

 

    $convenios = $_POST ['convenios'];
    $estado = $_POST ['estado'];
    $cidade = $_POST ['ciadade'];
    $especialidade = $_POST ['especilidades'];

 

Corriga esses erros e veja se funciona ou se pelo menos aparece algo, uma dica que eu dou é se os comandos SQL não estão funcionando, após declarar a variável SQL de um ECHO nela, pegue o que ira aparecer na tela e execute dentro do banco.

 

Assim:

$profissional = "SELECT * FROM profissional WHERE Nome LIKE 'id_convenio' AND 'id_estado' AND 'id_cidade' AND 'id_especialidade'";

 

echo $profissional;

 

Na tela vai aparecer o comando, copie e cole no banco de dados e execute para ver se traz o que você quer e se realmente o comando que você montou funciona, pois quando o comando não traz o que deveria é porque você montou errado o comando.

 

Espero ter ajudado.

 

Att.

Felipe Coutinho

Share this post


Link to post
Share on other sites

Agradeço a ajuda, sim confirmei com pelo banco e esta correta o select, porém continua não puxando o resultado e apresenta o erro:

 

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\wamp64\www\busca\results.php on line 27
Call Stack
# Time Memory Function Location
1 0.0005 404464 {main}( ) ...\results.php:0
2 0.0058 420504 mysqli_num_rows ( ) ...\results.php:27

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 adrianno
      Olá, estou com a seguinte dúvida com uso do JWT , trabalho com PHP a um tempo e estou migrando alguns projetos para formato API REST,  mas também começando a trabalhar com JS,REACT, NODE etc e a dúvida basicamente se aplica independente da linguagem uma vez  que o formato JWT é padrão.
      Vamos lá,   imagine que ao fazer um login bem sucedido o usário receba um token JWT  padrão, e no payload  coloquei o ID: "ff0eb2864feb22354747f8c85d42ccb5" e EMAIL :  "email@teste.com" do usuário junto com outras info padrão de um JWT,   mas qual pe a forma mais correta de validar este token?  usando métodos de verificar a assinatura, ok,   desmontando e montando novamente o token passado para comparar, OK  mas como eu verifico a integridade do usuário, imagine que eu de alguma forma um usuário malicioso obtenha o token de outro usuário, se ele enviar este token em uma requisição, ele seria aceito, mesmo sem ter que fazer o login de usuário, uma vez  que a rota em questão vai verificar o token e o mesmo teoricamente vai funcionar e este teria acesso a API em nome de outro usuário. Quais são as formas corretas de se trabalhar com JWT?
    • By leandro123456789
      <div id="direito">
             
             <?php 
                      
                 $link = filter_input(INPUT_GET, 'link');
                 
                 $pag[1] = "../admin/home.php";
                 $pag[2] = "../admin/classes/Lista.php";
                 
              
              
                 if(!empty($link)){
                     
                     if(file_exists($pag[$link]))
                        
                      {
                         include $pag[$link];
                      
                      }
                        
                      else
                      { 
                         
                          include "home.php";
                      
                      }
                     
                 }else{
                     include "home.php";
                 }
              
              ?>
             
          </div>
       
       
      Estou tentando colocar a paginação do meu banco em $ pag [2] na minha página: ../admin/classes/Lista.php tem o seguinte código de paginação:

      <? php
          
          include_once ("../ admin / classes / ClassConexao.php");
          
          
          // verifique a página atual se informado no URL, caso contrário, ela será atribuída como 1ª página
          $ pagina = (isset ($ _ GET ['link = 2']))? $ _GET ['link = 2']: 1;
       
          // seleciona todos os itens da tabela
          $ cmd = "selecione * da categoria";
          $ produtos = mysqli_query ($ conn, $ cmd);
          
          // conta o total de itens
          $ total = mysqli_num_rows ($ produtos);
       
          // seta o número de itens por página, neste caso, 2 itens
          $ registros = 2;
       
          // calcula o número de páginas arredondando o resultado
          $ numPaginas = teto ($ total / $ registros);
       
          // variável para calcular o início da visualização com base na página atual
          $ inicio = ($ registros * $ pagina) - $ registros;
       
          // seleciona itens por página
          $ cmd = "selecione * da categoria limite $ inicio, $ registros";
          $ produtos = mysqli_query ($ conn, $ cmd);
          $ total = mysqli_num_rows ($ produtos);
           
          // exibe produtos selecionados
          while ($ produto = mysqli_fetch_array ($ produtos)) {
              echo $ produto ['id_categoria']. "-";
              echo $ produto ['categoria']. "-";
              echo $ produto ['ativo_categoria']. "<br />";
          }

      // Não sei como consertar esta parte para mostrar a paginação nesse $ pag [2] = "../admin/classes/Lista.php";
           
          // exibe paginação
          para ($ i = 1; $ i <$ numPaginas + 1; $ i ++) {
              
             echo "<a href='?pagina=$i'>". $ i. "</a>";
          }
                  
      ?>
      Meu menu fica assim:

      <div id = "sessao"> Categoria </div>
         <ul>
             
            
             <li> <a href="index.php?link=3"> Cadastro </a> </li>
             <li> <a href="index.php?link=2"> Listar / Editar </a> </li>
         
        </ul>
    • By violin101
      Caros amigos
       
      saudações...
       
      Gostaria de tirar uma dúvida com os amigos, referente uma função em Codeigniter.
       
      Fiz algumas pesquisa, mas não entendi muito bem.
       
      No Codeigniter existe base_url() e site_url(), qual é a diferença entre essas funções ou são a mesma coisa ?
       
      Grato,
       
      Cesar
    • By Kemily
      Estou com dificuldade com este programa.
      Ele da erro e não sei o que posso fazer para ele mostrar na tela o exemplo da venda de carros.
      Neste programa eu preciso conseguir dar opções de carros e formas de pagamento ao usuário para depois armazenar a escolha e assim criar uma tabela com o id do usuário, escolha de carro, quanto será a entrada e quantas parcelas de pagamento.
      Faltam algumas coisas ainda mas eu não sei como inseri-las.
      <?php if ($_POST) { $saldo = $_POST['total'] - $_POST['entrada']; <tr> <td>carro</td> <td>$_post['carro']</td> </tr> <tr> <td>total</td> <td>$_post['carro']</td> </tr> <tr> <td>estrada</td>, <td>$_post['entrada']</td> </tr> <tr> <td>parcelas</td> <td>$_post['parcelas']</td> </tr> <tr> <td>saldo</td> <td>$_POST['total'] - $_POST['entrada']</td> </tr> } ?> <html> <body> <form name='Carros' action='' method='post'> <label for="carros">Qual carro deseja comprar?</label> <br> <br> <select name="carros"> <option value="bmw">BMW M3 Sedã</option> <option value="chevrolet">Chevrolet Volt</option> <option value="dodge">Chrysler/Dodge Journey</option> <option value="citroen">Citroen C4 Lounge</option> <option value="ford">Ford Ka</option> </select> <label for="entrada">$ Entrada</label> <input type="dinheiro" value="0" name="entrada"><br> <label for="parcelas">Quantas parcelas?</label> <select name="parcelas"> <option value="12">12</option> <option value="24">24</option> <option value="36">36</option> <option value="48">48</option> </select><br><br> <label for="total">$ Total</label> <input type="dinheiro" value="0" name="total"><br> <input type="submit" value="Enviar"> </form> </body> </html>  
    • By Kemily
      <? php /* 1 - Faça uma função que recebe 3 numeros e faça a média aritmética desses números e retorne o resultado. */ if (isset ($_POST['enviar'])); $valor1 = $_POST['valor1']; $valor2 = $_POST['valor2']; $valor3 = $_POST['valor3']; $media = ($valor1 + $valor2 + $valor3) / 3; endif; ?> <!DOCTYPE html> <html> <head> <meta charset = "Utf-8"> <title> Cálculo da média aritimética</title> </head> <body> <form method="post" action=""> <br> <label>Primeiro valor: </label> <input name="valor1" type="text"> <br> <label>Segundo valor: </label> <input name="valor2" type="text"> <br> <label> Terceiro valor: </label> <input name="valor3" type="text"> <br> <br> <button type="submit" name="enviar"> Calcular Média </button> <button type="reset"> Limpar </button> <br> <br> Valor da Média <? php echo "A média equivale a:<br>" . $media . " - "; ?> </form> </body> </html> Alguém pode me ajudar?
      Eu estou fazendo este programa para calcular a média aritmética de três número que serão digitados pelo usuário.
      Porém não estou conseguindo fazer o resultado ser apresentado na tela.
      Nem o ultimo "echo" aparece só o " " . $media . " - "; " literalmente é isso que aparece onde deveria mostrar o resultado.
      Sou iniciante na área de php e se puderem ajudar agradeço. 
×

Important Information

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