Jump to content
Israel Lira

PHP - fazer duas consultas por um único button

Recommended Posts

Caros, não estou sabendo implementar duas consultas quando o usuário clicar no (button). É uma proposta de apresentar a folha, mostrar os funcionários pelo SELECT .  Atualmente, consigo fazer com que ele veja se existe a referencia e se não existir apresenta um span de não encontrado. Preciso que faça de imediato uma sub-consulta trazendo os dados do select abaixo e se possivel implementar um exemplo calculando por exemplo um desconto de inss, por exemplo.: Salário: 1200,00  * 8% = 96,00.    

 

$consulta=pg_query($db,"SELECT funcionario.nome, funcionario.cargo, cargo.salario from funcionario INNER JOIN cargo ON funcionario.cargo = cargo.descricao ORDER BY funcionario.nome");

 

Segue primeiro o consulta folha:

 

 <!DOCTYPE html>
<html>
<head>
    <title>Consultar Folha</title>
    <link rel="stylesheet" type="text/css" href="style.css" >
    <!-- 
        Por comodidade, eu estou usando jquery direto do site deles, isso é mto comum e recomendado inclusive.
    -->
    <script src="https://code.jquery.com/jquery-3.4.0.min.js" type="text/javascript"></script>
    <script src="js/jquery.mask.min.js" type="text/javascript"></script>

    <script type="text/javascript">
        $(document).ready(function(){
            $("#cpf").mask("000.000.000-00");
            $("#rg").mask("0.000.000");
            $("#horario").mask("00:00");
            $("#Mesano").mask("00/0000");
        });

        /**
         * Este aqui é o nosso método Javascript que irá fazer a requisição assincrona
         */
        function pesquisarMesano(codigoMes) {
            document.getElementById('mensagem_erro').innerText = '';

            /**
             * Este é o método do Jquery que nos ajuda com o assincrono
             * Aqui ele faz uma request para http://nome_do_nosso_servidor/FOLHAPAGAMENTO/obtemFuncionarioPorCodigo.php
             * e passa como query string o parametro codigoFuncionario no final a url fica assim:
             * http://nome_do_nosso_servidor/FOLHAPAGAMENTO/obtemFuncionarioPorCodigo.php?codigoFuncionario=VALOR
             *
             * O valor da matricula do funcionario é passado pelo botao lá no form, ele obtem o valor do campo e passa para o método
             */
            $.get(
                '/FOLHADEPAGAMENTO/RECIBOFOLHA/obtemFolhaPorCodigo.php',
                { codigoMes: codigoMes },
                /** 
                 * Esse método aqui será chamado pelo Jquery assim que o script obtemFuncionarioPorCodigo.php
                 * imprimir qualquer coisa.
                 * Isso é chamado 'callback' e como parametro recebemos a resposta devolvida pelo script php
                 */
                function (response) {
                    /** 
                     * Para entender os valores de response, de uma olhada no script obtemFunncionarioPorCodigo primeiro.
                     * Tudo que está aqui (response.erro, response.descricao e response.salario) foi ele quem devolveu.
                     */
                    if (response.erro === 404) {
                        /**
                         * Eu nao estou usando o Jquery para obter os elementos, isso pq na versao do Javascript dos navegadores modernos, nao é mais necessario o jquery para isso
                         */
                        document.getElementById('formFolhamesano').reset();
                        document.getElementById('mensagem_erro').innerText = 'Folhamesano #'+codigoMes+' não encontrado!';

                        return;
                    }

                    document.getElementById('mesano').value = response.mesano;
                    document.getElementById('nome').value = response.nome;
                    document.getElementById('cargo').value = response.cargo;
                    document.getElementById('salario').value = response.salario;
                    document.getElementById('descricao').value = response.descricao;
                    document.getElementById('horario').value = response.horario;
                },
                'json'
            );
        }

    </script>
    
    <style type="text/css">
  
        #corposistema{

            width: 1200px auto;
            height: 500px auto;      
        }
        #corpocadastro{
            border: solid gray 5px;
            width: 300px;
            height: 210px;
            border-radius: 5px;
            margin: 120px auto;
            background: white;
            padding: 50px;
        }
        #botao{
            color: #fff;
            margin-left: 370px;
            margin-top: -170px;
            background: #337ab7;
            border-radius: 85%;
            background: #337ab7;
            text-align: center;
            padding-top: 0 auto;
        }
        #botaocancelar{
            height: 70%;
            color: #fff;
            margin-left: 370px;
            margin-top: -5px;
            padding-top: 0 auto;
            background: #337ab7;
            text-align: center;
            border-radius: 85%;
        }
    </style>
</head>
<?php

include "banco_de_dados.php";


if(!empty($_GET['codigoMes'])){
    $codigoMes = (int) $_GET['codigoMes'];

    /** Comentários do Adriano
     * Aqui simpliquei o uso do banco deixando apenas o que me importa. Conectar ao banco toda hora copiando aquele código
     * só vai sujar o seu script e te atrapalhar a encontrar possiveis problemas no futuro.
     *
     * O ideial seria desacoplar tudo, PHP no seu canto (E desacoplar o script PHP - código importante para um lado, código de banco para outro)
     * HTML esperando apenas valores e sem logico de PHP.
     *
     * Mas isso é para o futuro mas é bom ter em mente.
     */
    $row = consultaBanco("SELECT folhamesano.mesano FROM folhamesano WHERE folhamesano.mesano='{$codigoMes}'");

    $codigoMes = $row['codigoMes'];
    
} else $codigoMes = null;

    

?>

<body>
    <div id="corposistema">
        <div id="corpocadastro">
            <form id="formFolhamesano" action="/FOLHADEPAGAMENTO/RECIBOFOLHA/CADASTROFOLHA.php" method="POST">
                    <p>
                            <label>Competência </label>
                            <input name="codigoMes" id="Mesano" type="text" style="width: 20%" value="<?=$codigoMes?>" required/>

                            <button type="button" onclick="pesquisarMesano(this.form.elements['codigoMes'].value)">Pesquisar</button>
                            <span style="color: red" id="mensagem_erro"></span><br/>
                    </p>
                    
                        

            </form>

            <form action="/FOLHADEPAGAMENTO/RECIBOFOLHA/FOLHACADASTRADOS.php" method="POST">
                <div id="botaocancelar"> 
                    <p>
                       <input type="submit" id="btn" value=" Cancelar  " />
                    </p>
                </div>    
            </form>
        </div>    
    </div>
</body>
</html>

--------------------------------------------------------

Segue o script que irá responder a requisição:

 

<?php

require "banco_de_dados.php";

function obtemfolhamesanoPorId($codigoMes) {
    return consultaBanco("SELECT folhamesano.mesano FROM folhamesano WHERE folhamesano.mesano='{$codigoMes}'");
    
}

/** 
 * Esse é o script que irá responder a requisição assincrona que criamos no Javascript
 *
 * Aqui eu espero que a query string codigoFuncionario esteja definida (Pode estar vazia, mas precisa estar definida, por exemplo, codigoCargo= ) por isso usei isset
 *
 *
 */
if (isset($_GET['codigoMes'])) {
    $codigoMes = $_GET['codigoMes'];

    /** Novamente encapsulando em métodos para adicionar contexto ao código */
    $folhamesano = obtemfolhamesanoPorId($codigoMes);

    if (empty($folhamesano)) {
        /** Como este é um código bem simples, usei o die para escrever o valor de saida
         * isso pq eu quero neste caso o texto seja escrito e a aplicação pare aqui
         * Eu poderia user um echo seguido de um return, mas para adicionar contexto
         * eu usei um método que deixe claro a intenção. Morre aqui e escreve o que eu estou pedindo.

         */
        die(json_encode([
            'erro' => 404,
        ]));
    }

    /** Neste caso eu quero escrever e sair (Se nada acontecer depois, ele irá sair sozinho), poderia usar o die, sim. Mas nao é um ponto onde precisa morrer, apenas sair um texto */
    echo json_encode($folhamesano);
} else {
    die(json_encode([
        'erro' => 404,
    ]));

                                          $tabela = '<table border="1" border: solid gray 5px;>';//abre table
                                          $tabela .='<thead>';//abre cabeçalho
                                          $tabela .= '<tr>';//abre uma linha
                                          $tabela .= '<th width="410px">Nome</th>';
                                          $tabela .= '<th width="300px">cargo</th>';
                                          $tabela .= '<th width="140px">salario</th>';
                                          $tabela .= '</tr>';//fecha linha
                                          $tabela .='</thead>'; //fecha cabeçalho
                                          $tabela .='<tbody>';//abre corpo da tabela

                                        $db = pg_connect("port=55432 dbname=folha user=fortesrh password=1234");
                                        
                                        $consulta=pg_query($db,"SELECT funcionario.nome, funcionario.cargo, cargo.salario from funcionario INNER JOIN cargo ON funcionario.cargo = cargo.descricao ORDER BY funcionario.nome"); 

                                        while ($linha = pg_fetch_array($consulta)) {//declaração da variável linha trazendo o resultado da query
                                          $tabela .= '<tr>'; // abre uma linha
                                          $tabela .= '<td>'.$linha['nome'].'</td>'; // coluna nome do funcionario
                                          $tabela .= '<td align="center">'.$linha['cargo'].'</td>'; // coluna cargo
                                          $tabela .= '<td align="center">'.$linha['salario'].'</td>'; // coluna salario
                                          $tabela .= '</tr>'; // fecha linha
                                          

                                        }
                                         $tabela .='</tbody>'; //fecha corpo
                                         $tabela .= '</table>';//fecha tabela

                                        echo $tabela; // imprime
}

 

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 samuel.huarachi
      Como o sistema da Yellow funciona?
      Como uma requisição no celular, destrava um patinete?

      Tem algum artigo na internet falando disso?
    • By geivisonsales
      Tenho um site sobre conteudos de entretenimento, e todos os posts tem uma imagem de fundo do tmdb, tem alguma maneira de otimizar o carregamento dessas imagens por url? ou alguma outra maneira?
    • By Salvatore
      Então, eu estou gravando uns dados no bancos de dados usando text area, mas quando eu dou espaço ou algo do tipo fica assim
       
      Ex :aaaa\r\naaaaaa\r\n
       
      onde esses \r\n são espaços e outras coisas, e ficam sendo exibidos quando eles retorna para a pagina
      alguém sabe como resolvo isso?
    • 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
       
×

Important Information

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