Ir para conteúdo

Israel Lira

Members
  • Total de itens

    18
  • Registro em

  • Última visita

Posts postados por Israel Lira


  1. Por gentileza, preciso de ajuda! estou iniciando aqui na comunidade e recente no flutter. Tenho uma missão de utilizar o json e controller dos inputs. Preciso pelo botão (ADD) sair da Primeira tela redirecionar para a Segunda tela, salvar ao colocar os inputs e retornar para a primeira mostrando (nome e valor). O formulário da Segunda Tela terá campos: nome, telefone, data e valor. Quero manter a função dismissible para termos o efeito de arrastar o item da lista. Segue o que estou fazendo mais com erros.

     

    Não sei como proceder e apanhando a vários dias!

      

    import 'dart:async';
    import 'dart:convert';
    import 'dart:io';
    
    import 'package:flutter/material.dart';
    import 'package:path_provider/path_provider.dart';
    
    void main(){
      runApp(MaterialApp(
        home: Home(),
      ));
    }
    
    class Home extends StatefulWidget {
      @override
      _HomeState createState() => _HomeState();
    }
    
    class _HomeState extends State<Home> {
    
      final _toDoController = TextEditingController();
    
      List _toDoList = [SegundaRota];
      
    
      Map<String, dynamic> _lastRemoved;
      int _lastRemovedPos;
    
      @override
      void initState() {
        super.initState();
    
        _readData().then((data) {
          setState(() {
            _toDoList = json.decode(data);
          });
        });
      }
    
      void _addToDo() {
        setState(() {
          Map<String, dynamic> newToDo = Map();
          newToDo["title"] = _toDoController.text;
          _toDoController.text = "";
          newToDo["ok"] = false;
          _toDoList.add(newToDo);
    
          _saveData();
        });
      }
    
      Future<Null> _refresh() async{
        await Future.delayed(Duration(seconds: 1));
    
        setState(() {
          _toDoList.sort((a, b){
            if(a["ok"] && !b["ok"]) return 1;
            else if(!a["ok"] && b["ok"]) return -1;
            else return 0;
          });
    
          _saveData();
        });
    
        return null;
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text("Lista de Tarefas"),
            backgroundColor: Colors.blueAccent,
            centerTitle: true,
          ),
          body: Column(
            children: <Widget>[
              Container(
                padding: EdgeInsets.fromLTRB(17.0, 1.0, 7.0, 1.0),
                child: Row(
                  children: <Widget>[
                    
                    RaisedButton(
                      color: Colors.blueAccent,
                      child: Text("ADD"),
                      textColor: Colors.white,
                      onPressed: () {
                		  Navigator.push(
                  		  context,
    	                  MaterialPageRoute(builder: (context) => SegundaRota()),
                		  );
              	     },
                    )
                  ],
                ),
              ),
              Expanded(
                child: RefreshIndicator(onRefresh: _refresh,
                  child: ListView.builder(
                      padding: EdgeInsets.only(top: 10.0),
                      itemCount: _toDoList.length,
                      itemBuilder: buildItem),),
              )
            ],
          ),
        );
      }
    
      Widget buildItem(BuildContext context, int index){
        return Dismissible(
          key: Key(DateTime.now().millisecondsSinceEpoch.toString()),
          background: Container(
            color: Colors.red,
            child: Align(
              alignment: Alignment(-0.9, 0.0),
              child: Icon(Icons.delete, color: Colors.white,),
            ),
          ),
          direction: DismissDirection.startToEnd,
          child: CheckboxListTile(
            title: Text(_toDoList[index]["title"]),
            value: _toDoList[index]["ok"],
            secondary: CircleAvatar(
              child: Icon(_toDoList[index]["ok"] ?
              Icons.check : Icons.error),),
            onChanged: (c){
              setState(() {
                _toDoList[index]["ok"] = c;
                _saveData();
              });
            },
          ),
          onDismissed: (direction){
            setState(() {
              _lastRemoved = Map.from(_toDoList[index]);
              _lastRemovedPos = index;
              _toDoList.removeAt(index);
    
              _saveData();
    
              final snack = SnackBar(
                content: Text("Tarefa \"${_lastRemoved["title"]}\" removida!"),
                action: SnackBarAction(label: "Desfazer",
                    onPressed: () {
                      setState(() {
                        _toDoList.insert(_lastRemovedPos, _lastRemoved);
                        _saveData();
                      });
                    }),
                duration: Duration(seconds: 2),
              );
    
              Scaffold.of(context).removeCurrentSnackBar();
              Scaffold.of(context).showSnackBar(snack);
    
            });
          },
        );
      }
    
      Future<File> _getFile() async {
        final directory = await getApplicationDocumentsDirectory();
        return File("${directory.path}/data.json");
      }
    
      Future<File> _saveData() async {
        String data = json.encode(_toDoList);
    
        final file = await _getFile();
        return file.writeAsString(data);
      }
    
      Future<String> _readData() async {
        try {
          final file = await _getFile();
    
          return file.readAsString();
        } catch (e) {
          return null;
        }
      }
    
    }
    
    class SegundaRota extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text("Segunda Rota (tela)"),
          ),
    
          body: Column(
            children: <Widget>[
              Container(
                padding: EdgeInsets.fromLTRB(17.0, 1.0, 7.0, 1.0),
                child: Row(
                  children: <Widget>[
                    Expanded(
                      child: TextField(
                        controller: _toDoController,
                        decoration: InputDecoration(
                            labelText: "Nova Tarefa",
                            labelStyle: TextStyle(color: Colors.blueAccent)
                        ),
                      )
                    ),
                    RaisedButton(
                      color: Colors.blueAccent,
                      child: Text("ADD"),
                      textColor: Colors.white,
                      onPressed: _addToDo,
                    )
                  ],
                ),
              ),
              Expanded(
                child: RefreshIndicator(onRefresh: _refresh,
                  child: ListView.builder(
                      padding: EdgeInsets.only(top: 10.0),
                      itemCount: _toDoList.length,
                      itemBuilder: buildItem),),
              )
            ],
          ),  
    
          body: Center(       child: RaisedButton(
              onPressed: () { 
                Navigator.pop(context);
              },
              child: Text('Retornar !'),
            ),
          ),
        );
      
      }
    
    
    
    }
    
    

     

    ERRO VS code.png


  2. Em 12/07/2019 at 21:54, ShadowDLL disse:

     

    A seu dispor ;)

     

    Tem mais uma situação que tentei mais não avançou. Quero totalizar um somatório de salario + diasdescanso.

     

    $tabela .= '<td width="150px" align="center">'.number_format ((str_replace (',', '.', preg_replace ('#[^\d\,]#is', '', $linha['salario'])) + $linha [ 'salario' ] / $diasdescanso), 2, ',', '.').'</td>';

    image.png.3f8e614e997d47405c0b0921945d8f56.png

     

     


  3. 45 minutos atrás, ShadowDLL disse:

    ATUAL

    
    $tabela .= '<td align="center">' . $linha [ 'salario' ] * ( $inss / 100 ) . '</td>';

     

    ALTERAR POR

    
    $tabela .= '
    	<td align="center">'.
    		number_format (
    			(
    				str_replace (
    					',', '.', preg_replace (
    						'#[^\d\,]#is', '', $linha [ 'salario' ]
    					)
    				) * $inss / 100
    			), 2, ',', '.'
    		)
    	.'</td>'
    ;

     

    OBSERVAÇÕES

    Se possível evitar o envio de valores formatados

    ao banco de dados, pois assim, você evita ter de

    fazer o trabalho acima...

     

    Show! deu certo. Vou fazer as demais implementações. Muito obrigado.

     


  4. 14 horas atrás, ShadowDLL disse:

    Siga as etapas abaixo:

     

    1º Etapa

     

    ATUAL

    
    var inss = 8%;

    ALTERAR POR

    
    $inss = 8;

     

    2º Etapa

     

    ATUAL

    
    $tabela .= '<td align="center">'.$linha['salario * inss'].'</td>';

    ALTERAR POR

    
    $tabela .= '<td align="center">' . $linha [ 'salario' ] * ( $inss / 100 ) . '</td>';

     

    Apresentou o erro:

     

    image.png.958e36d05dc99b45dec67b8744f8fbed.png

     

    image.png.fb332ac0ce4da96319ace1e4da05c502.png

     

    O valor para calcular: 2990,00 x8% = 239.20

     

    Script modificado:

     

    <?php

                                            $inss = 8;

                                              $tabela = '<table border="1" border: solid gray 5px;>';//abre table
                                                $tabela .='<thead>';//abre cabeçalho
                                                 $tabela .= '<tr>';//abre uma linha
                                              
                                              $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 .= '<th colspan="2" width="210px">Folha de Pagamento</th>';
                                              $tabela .= '<th colspan="3" width="410px">Data e Assinatura:  ____/____/_____ ___________________________________________________</th>';
                                              $tabela .= '</tr>';//fecha linha
                                              $tabela .= '<th width="170px" height="20px" align="left">Empresa: XP Seriços Demonstrativos Ltda ME</th>';
                                              $tabela .= '<th width="100px" align="left">CNPJ:  00.000.000/0000-00</th>';
                                              $tabela .= '<th width="150px" align="center">Admissão: 10/05/2019</th>';
                                              $tabela .= '<th width="150px" align="center">Competência: Junho de 2019</th>';

                                              $tabela .= '</tr>';//fecha linha
                                              $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 .= '<td align="center">' . $linha [ 'salario' ] * ( $inss / 100 ) . '</td>';            
                                              $tabela .= '</tr>'; // fecha linha


                                              $tabela .= '<th width="550px" colspan="5" align="center">----------------------------------------------------------------------</th>';
                                              $tabela .= '</tr>'; // fecha linha

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

                                            echo $tabela; // imprime
            
                                        ?>

     


  5. <?php

                                        var inss = 8%;


                                              $tabela = '<table border="1" border: solid gray 5px;>';//abre table
                                                $tabela .='<thead>';//abre cabeçalho
                                                 $tabela .= '<tr>';//abre uma linha
                                              
                                              $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 .= '<th colspan="2" width="210px">Folha de Pagamento</th>';
                                              $tabela .= '<th colspan="3" width="410px">Data e Assinatura:  ____/____/_____ ___________________________________________________</th>';
                                              $tabela .= '</tr>';//fecha linha
                                              $tabela .= '<th width="170px" height="20px" align="left">Empresa: XP Seriços Demonstrativos Ltda ME</th>';
                                              $tabela .= '<th width="100px" align="left">CNPJ:  00.000.000/0000-00</th>';
                                              $tabela .= '<th width="150px" align="center">Admissão: 10/05/2019</th>';
                                              $tabela .= '<th width="150px" align="center">Competência: Junho de 2019</th>';

                                              $tabela .= '</tr>';//fecha linha
                                              $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 .= '<td align="center">'.$linha['salario * inss'].'</td>'; // coluna salario
                                              $tabela .= '</tr>'; // fecha linha
                                              $tabela .= '<th width="550px" colspan="5" align="center">----------------------------------------------------------------------</th>';
                                              $tabela .= '</tr>'; // fecha linha

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

                                            echo $tabela; // imprime
            
                                        ?>

    Spoiler

     

     


  6. 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.    

     

    consultaBanco("SELECT funcionario.nome, funcionario.cargo, cargo.salario, folhamesano.mesano FROM funcionario, cargo, folhamesano WHERE funcionario.cargo = cargo.descricao AND folhamesano.mesano='{$codigoMes}'");

     

    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 = '';

                /** Teste*/
                document.getElementById('mensagem_folha').innerText = '';
                /** Teste*/
                
                $.get(
                    '/FOLHADEPAGAMENTO/RECIBOFOLHA/obtemFolhaPorCodigo.php',
                    { codigoMes: codigoMes },
                    
                    function (response) {
                        
                        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('mensagem_folha').innerText = 'Folhamesano #'+codigoMes+' teste!';
                        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'];

        
        $row = consultaBanco("SELECT funcionario.nome, funcionario.cargo, cargo.salario, folhamesano.mesano from funcionario, cargo, folhamesano WHERE funcionario.cargo = cargo.descricao AND folhamesano.mesano='{$codigoMes}'");

        $codigoMes = $row['codigoMes'];
        $nome = $row['nome'];
        $rg = $row['rg'];
        $cpf = $row['cpf'];
        $descricao = $row['descricao'];
        $horario = $row['horario'];
        
    } else $codigoMes = $nome = $rg = $cpf = $descricao = $horario = 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/>
                                <span style="color: red" id="mensagem_folha"></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>

     

    ___________________________________________________

     

    <?php

    require "banco_de_dados.php";

    function obtemfolhamesanoPorId($codigoMes) {
        return consultaBanco("SELECT funcionario.nome, funcionario.cargo, cargo.salario, folhamesano.mesano FROM funcionario, cargo, folhamesano WHERE funcionario.cargo = cargo.descricao AND 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'];
        $nome = $_GET['nome'];

        /** 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,
            ]));
        
        $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


        }

        /** 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,
        ]));

                                              
    }

     


  7. 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
    }

     


  8. Fiz uma alteração na coluna salario do postgres para character varying.

    Agora, consigo atualizar a coluna descricao, mas a coluna salario faz é desaparecer a informação que tinha.

     

    Exemplo: 

    Tinha a informação                         codigo    descricao                                  salario

    no banco de dados:                               36      RECURSOS HUMANOS          1.200,00

     

    Teste de validação: Atualizando a descricao e salario seria por exemplo descricao = 'PROFESSOR' e salario = '1.500,00'

      Ex.:                               

                                          codigo    descricao               salário

                                                 36     PROFESSOR                        

     

    Segue os códigos:

     

    CARGOSEDITAR.php

     

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title> Editar cargo </title>
        <link rel="stylesheet" type="text/css" media="screen" />
        <script src="js/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(){
                $("#salario").mask("0.000,00");
            })    
        </script>
    </head>
    <?php
    if(!empty($_GET['codigo'])){
        /**
        Conecta com o PostgreSQL
        */
        $dns = "port=55432 dbname=folha user=fortesrh password=1234";
        $db = pg_connect($dns);
        $codigo = (int) $_GET['codigo'];
        $resultado = pg_query($db, "SELECT * FROM cargo WHERE codigo='{$codigo}'");    
        $row = pg_fetch_assoc($resultado);
        $codigo = $row['codigo'];
        $descricao = $row['descricao'];
        $salario = $row['salario'];
    } else $codigo = $descricao = $salario = null;
    ?>
    <body>
        <form enctype="multipart/form-data" action="http://localhost/FOLHADEPAGAMENTO/CARGOSALVARUPDATE.php" method="POST">
            <label>Código: </label>
            <input name="codigo" type="text" style="width: 30%" value="<?=$codigo?>"><br>      
            <label>Descrição: </label>
            <input name="descricao" type="text" style="width: 50%" value="<?=$descricao?>"><br>
            <label>Salário: </label>
            <input name="salario" type="text" style="width: 25%" value="<?=$salario?>"><br>
            <input type="submit">
        </form>

        <form action="http://localhost/FOLHADEPAGAMENTO/CARGOSCADASTRADOS.php" method="POST">
            <p>
              <input type="submit" id="btn" value="Voltar" />
            </p>
        </form>
    
        </body>
    </html>

    21 horas atrás, paulpolidoro disse:

    A coluna salário é float? E qual valor está vindo na variável $salario?

    Fiz uma alteração na coluna salario do postgres para character varying.

    Agora, consigo atualizar a coluna descricao, mas a coluna salario faz é desaparecer a informação que tinha.

     

    Exemplo: 

    Tinha a informação                         codigo    descricao                                  salario

    no banco de dados:                               36      RECURSOS HUMANOS          1.200,00

     

    Teste de validação: Atualizando a descricao e salario seria por exemplo descricao = 'PROFESSOR' e salario = '1.500,00'

      Ex.:                               

                                          codigo    descricao               salário

                                                 36     PROFESSOR                        

     

    Segue os códigos:

     

    CARGOSEDITAR.php

     

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title> Editar cargo </title>
        <link rel="stylesheet" type="text/css" media="screen" />
        <script src="js/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(){
                $("#salario").mask("0.000,00");
            })    
        </script>
    </head>
    <?php
    if(!empty($_GET['codigo'])){
        /**
        Conecta com o PostgreSQL
        */
        $dns = "port=55432 dbname=folha user=fortesrh password=1234";
        $db = pg_connect($dns);
        $codigo = (int) $_GET['codigo'];
        $resultado = pg_query($db, "SELECT * FROM cargo WHERE codigo='{$codigo}'");    
        $row = pg_fetch_assoc($resultado);
        $codigo = $row['codigo'];
        $descricao = $row['descricao'];
        $salario = $row['salario'];
    } else $codigo = $descricao = $salario = null;
    ?>
    <body>
        <form enctype="multipart/form-data" action="http://localhost/FOLHADEPAGAMENTO/CARGOSALVARUPDATE.php" method="POST">
            <label>Código: </label>
            <input name="codigo" type="text" style="width: 30%" value="<?=$codigo?>"><br>      
            <label>Descrição: </label>
            <input name="descricao" type="text" style="width: 50%" value="<?=$descricao?>"><br>
            <label>Salário: </label>
            <input name="salario" type="text" style="width: 25%" value="<?=$salario?>"><br>
            <input type="submit">
        </form>

        <form action="http://localhost/FOLHADEPAGAMENTO/CARGOSCADASTRADOS.php" method="POST">
            <p>
              <input type="submit" id="btn" value="Voltar" />
            </p>
        </form>
    
        </body>
    </html>


  9.  

     

    image.thumb.png.c22d27835489164812c1d66e92779a50.png

     

     

    CARGOSEDITAR.php

     

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title> Editar cargo </title>
        <link href="css/form.css" rel="stylesheet" type="text/css" media="screen" />
    </head>
    <?php
    if(!empty($_GET['codigo'])){
        /**
        Conecta com o PostgreSQL
        */
        $dns = "port=55432 dbname=folha user=fortesrh password=1234";
        $db = pg_connect($dns);
        $codigo = (int) $_GET['codigo'];
        $resultado = pg_query($db, "SELECT * FROM cargo WHERE codigo='{$codigo}'");    
        $row = pg_fetch_assoc($resultado);
        $codigo = $row['codigo'];
        $descricao = $row['descricao'];
        $salario = $row['salario'];
    } else $codigo = $descricao = $salario = null;
    ?>
    <body>
        <form enctype="multipart/form-data" action="http://localhost/FOLHADEPAGAMENTO/CARGOSALVARUPDATE.php" method="POST">
            <label>Código</label>
            <input name="codigo" type="text" style="width: 30%" value="<?=$codigo?>"><br>      
            <label>Descrição</label>
            <input name="descricao" type="text" style="width: 50%" value="<?=$descricao?>"><br>
            <label>Salário</label>
            <input name="salario" type="text" style="width: 25%" value="<?=$salario?>"><br>
            <input type="submit">
        </form>
    
        </body>
    </html>

     

     

     


  10. A proposta é o usuário digitar no campo CODIGO e pelo query fazer uma consulta com script localizando o dado e redirecionado ao script de atualização no CARGO  ou  no VALOR.

     

    Segue os scripts de consulta e de atualização:

     

     

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title> Editar cargo </title>
        <link href="css/form.css" rel="stylesheet" type="text/css" media="screen" />
    </head>
    <?php
    if(!empty($_GET['codigo'])){
        /**
        Conecta com o PostgreSQL
        */
        $dns = "port=55432 dbname=folha user=fortesrh password=1234";
        $db = pg_connect($dns);
        $codigo = (int) $_GET['codigo'];
        $resultado = pg_query($db, "SELECT * FROM cargo WHERE codigo='{$codigo}'");    
        $row = pg_fetch_assoc($resultado);
        $codigo = $row['codigo'];
        $descricao = $row['descricao'];
        $salario = $row['salario'];

    else $codigo = $descricao = $salario = null;
    ?>
    <body>
        <form enctype="multipart/form-data" action="http://localhost/FOLHADEPAGAMENTO/CARGOSALVARUPDATE.php" method="POST">
            <label>Código</label>
            <input name="codigo" readonly="1" type="text" style="width: 30%" value="<?=$codigo?>"><br>      
            <label>Descrição</label>
            <input name="descricao" readonly="1" type="text" style="width: 50%" value="<?=$descricao?>"><br>
            <label>Salário</label>
            <input name="salario" readonly="1" type="text" style="width: 25%" value="<?=$salario?>"><br>
            <input type="submit">
        </form>

    </body>
    </html>

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

    <?php
              
              $dados = $_POST;
              if ($dados['codigo']) {

              /**
                   Conecta com o PostgreSQL
               */
               $dns = "port=55432 dbname=folha user=fortesrh password=1234";
               $db = pg_connect($dns);
              
                   

                   /**
                        Atribui a variável $query a instrução para deletar um registro.
                    */
                  $query = "UPDATE cargo SET descricao = '{$dados['descricao']}', 
                                             salario = '{$dados['salario']}'
                                             WHERE codigo = '{$dados['codigo']}'";


                  $resultado = pg_query($db, $query); /** Executa a consulta na conexão com o banco de dados e com query*/
                 
                  if ($resultado) {
                    print 'Cargo atualizado com sucesso';
                  }

                  else {
                      print pg_last_error($db);
                      
                    }  
                   

                   /**
                       Fecha a conexão com o PostgreSQL
                   */
                  
                  pg_close ($db);
              
               }
    ?>

     

    image.png


  11. <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title> Editar cargo </title>
        <link href="css/form.css" rel="stylesheet" type="text/css" media="screen" />
    </head>
    <?php
    if(!empty($_GET['codigo'])){
        /**
        Conecta com o PostgreSQL
        */
        $dns = "port=55432 dbname=folha user=fortesrh password=1234";
        $db = pg_connect($dns);
        $codigo = (int) $_GET['codigo'];
        $resultado = pg_query($db, "SELECT * FROM cargo WHERE codigo='{$codigo}'");    
        $row = pg_fetch_assoc($resultado);
        $codigo = $row['codigo'];
        $descricao = $row['descricao'];
        $salario = $row['salario'];

    else $codigo = $descricao = $salario = null;
    ?>
    <body>
        <form enctype="multipart/form-data" action="http://localhost/FOLHADEPAGAMENTO/CARGOSALVARUPDATE.php" method="POST">
            <label>Código</label>
            <input name="codigo" readonly="1" type="text" style="width: 30%" value="<?=$codigo?>"><br>      
            <label>Descrição</label>
            <input name="descricao" readonly="1" type="text" style="width: 50%" value="<?=$descricao?>"><br>
            <label>Salário</label>
            <input name="salario" readonly="1" type="text" style="width: 25%" value="<?=$salario?>"><br>
            <input type="submit">
        </form>

    </body>
    </html>

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

    <?php
              
              $dados = $_POST;
              if ($dados['codigo']) {

              /**
                   Conecta com o PostgreSQL
               */
               $dns = "port=55432 dbname=folha user=fortesrh password=1234";
               $db = pg_connect($dns);
              
                   

                   /**
                        Atribui a variável $query a instrução para deletar um registro.
                    */
                  $query = "UPDATE cargo SET descricao = '{$dados['descricao']}', 
                                             salario = '{$dados['salario']}'
                                             WHERE codigo = '{$dados['codigo']}'";


                  $resultado = pg_query($db, $query); /** Executa a consulta na conexão com o banco de dados e com query*/
                 
                  if ($resultado) {
                    print 'Cargo atualizado com sucesso';
                  }

                  else {
                      print pg_last_error($db);
                      
                    }  
                   

                   /**
                       Fecha a conexão com o PostgreSQL
                   */
                  
                  pg_close ($db);
              
               }
    ?>

     

     

     

    image.png


  12. Fiz algumas buscas, até encontrei várias referencias apontando o mesmo erro que o meu, porém, não entendi ao certo o problema.

     

    Ao abrir uma pagina estou obtendo o seguinte erro:

    <br /><b>Notice</b>:  Undefined variable: codigo in <b>D:\PROJETOS\LOCALHOST\FOLHADEPAGAMENTO\CARGOSEDITAR.php</b> on line <b>36</b><br />

     

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title> Editar cargo </title>
        <link href="css/form.css" rel="stylesheet" type="text/css" media="screen" />
    </head>
    <?php

            if (!empty($_GET['codigo'])) 
            {
                      /**
                           Conecta com o PostgreSQL
                       */
                       $dns = "port=55432 dbname=folha user=fortesrh password=1234";
                       $db = pg_connect($dns);

                       $codigo = (int) $_GET['codigo'];

                       $resultado = pg_query($db, "SELECT * FROM cargo WHERE codigo='{$codigo}'");    
                      

                      

                       $row = pg_fetch_assoc($resultado);
                    
                       $codigo = $row['codigo'];
                       $descricao = $row['descricao'];
                       $salario = $row['salario'];
            }
    ?>
        <body>

        <form enctype="multipart/form-data" action="http://localhost/FOLHADEPAGAMENTO/CARGOSALVARUPDATE.php" method="POST">
                <label>Código</label>
                <input name="codigo" readonly="1" type="text" style="width: 30%" value="<?=$codigo?>"><br>
        </form>        
                <label>Descrição</label>
                <input name="descricao" readonly="1" type="text" style="width: 50%" value="<?=$descricao?>"><br>

                <label>Salário</label>
                <input name="salario" readonly="1" type="text" style="width: 25%" value="<?=$salario?>"><br>
                <input type="submit">
        </form>

        </body>
    </html>

     

×

Informação importante

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