Ir ao conteúdo
  • Cadastre-se
Irwing Seiji Ato

PHP Não consigo alterar um movimento cadastrado

Posts recomendados

Fiz essa função alterar movimento porém não sei se tem erro de sintaxe ou algo do tipo quando eu tento modificar um campo ele fala que ocorreu um erro no código que fiz, e quando altero todos os campos ele dá a mensagem que preciso preencher os campos obrigatórios

public function AlterarMovimento(MovimentoVO $vou) {
        if ($vou->getMovimento() || $vou->getData() == '' || $vou->getIdCategoria() == '' || $vou->getIdEmpresa() == '' || $vou->getValor() == '') {
            return 0;
        }
        $conexao = parent::retornaConexao();

        $comando = 'update tb_movimento SET tipo_movimento = ?, data_movimento = ?, id_categoria = ?, id_empresa = ?, valor_movimento = ?, obs_movimento = ?'
                . ' where id_movimento =?';
        $sql = new PDOStatement();
        $sql = $conexao->prepare($comando);
        $sql->bindValue(1, $vou->getMovimento());
        $sql->bindValue(2, $vou->getData());
        $sql->bindValue(3, $vou->getIdCategoria());
        $sql->bindValue(4, $vou->getIdEmpresa());
        $sql->bindValue(5, $vou->getValor());
        $sql->bindValue(5, $vou->getObs());
        $sql->bindValue(6, $vou->getIdMovimento());

        try {
            $sql->execute();
            return 1;
        } catch (Exception $ex) {
            return -1;
        }
    }

Esse é o código da página alterar_movimento 
<?php
require_once '../DAO/MovimentoDAO.php';
require_once '../vou/MovimentoVO.php';
require_once '../DAO/CategoriaDAO.php';
require_once '../DAO/EmpresaDAO.php';
include_once '_msg.php';

$dao = new MovimentoDAO();

if (isset($_GET['cod']) && is_numeric($_GET['cod'])) {

    $cod = $_GET['cod'];

    $dados = $dao->DetalharMovimento($cod);

    if (count($dados) == 0) {
        header('location: consultar_movimento.php');
    } else {
        $dao_cat = new CategoriaDAO();
        $dao_emp = new EmpresaDAO();
        $categorias = $dao_cat->ConsultarCategoria();
        $empresas = $dao_emp->ConsultarEmpresa();
    }
} else if (isset($_POST['btnGravar'])) {
    $vou = new MovimentoVO();
    $vou->setIdMovimento($_POST['codMov']);
    $vou->setMovimento($_POST['opcao']);
    $vou->setData($_POST['data']);
    $vou->setIdCategoria($_POST['categoria']);
    $vou->setIdEmpresa($_POST['empresa']);
    $vou->setValor($_POST['valor']);
    $vou->setObs($_POST['obs']);
    
    $ret = $dao->AlterarMovimento($vou);
    header('location: alterar_movimento.php?cod=' . $_POST['codMov'] . '&ret=' . $ret);    
} else {
    header('location: consultar_movimento.php');
}
?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
    <?php
    include_once '_head.php';
    ?>
    <body>
        <div id="wrapper">
            <?php
            include_once '_topo.php';
            include_once '_menu.php';
            ?>
            <!-- /. NAV SIDE  -->
            <div id="page-wrapper" >
                <div id="page-inner">
                    <div class="row">
                        <div class="col-md-12">
                            <?php
                            if (isset($_GET['ret'])) {
                                ExibirMsg($_GET['ret']);
                            }
                            ?>
                            <h2>Alterar movimento</h2>   
                            <h5>Aqui você altera seus movimentos</h5>                       
                        </div>
                    </div>
                    <!-- /. ROW  -->
                    <hr />
                    <form method="post" action="alterar_movimento.php">
                        <input type="hidden" name="codMov" value="<?= $dados[0]['id_movimento'] ?>"/>
                        <div class="form-group">
                            <label>Tipo de movimento</label>
                            <select class= "form-control" id="opcao" name="opcao" value="<?= $opcao ?>">
                                <option value ="">Selecione</option>
                                <option value="0" <?= $dados[0]['tipo_movimento'] == 0 ? 'selected' : '' ?>>Entrada</option>
                                <option value="1" <?= $dados[0]['tipo_movimento'] == 1 ? 'selected' : '' ?>>Saída</option>                            
                            </select>
                            <label class="validar-campo" id="val_opcao"></label>
                        </div>
                        <div class="form-group">
                            <label>Data</label>
                            <input type="date" class="form-control" id="data" name="data" value="<?= $dados[0]['data_movimento'] ?>"/>
                            <label class="validar-campo" id="val_data"></label>
                        </div>
                        <div class="form-group">
                            <label>Selecionar Categoria</label>
                            <select class="form-control" id="categoria" name="categoria">
                                <option value="">Selecione</option>
                                <?php for ($i = 0; $i < count($categorias); $i++) { ?>
                                    <option value="<?= $categorias[$i]['id_categoria'] ?>"<?= $categorias[$i]['id_categoria'] == $dados[0]['id_categoria'] ? 'selected' : ''?>><?= $categorias[$i]['nome_categoria'] ?></option>
                                <?php } ?>
                            </select>
                            <label class="validar-campo" id="val_categoria" name="categoria"></label>
                        </div>
                        <div class="form-group">
                            <label>Selecionar Empresa </label>
                            <select class="form-control" id="empresa" name="empresa">
                                <option value= "" selected>Selecione</option>
                                <?php for ($i = 0; $i < count($empresas); $i++) { ?>
                                    <option value ="<?= $empresas[$i]['id_empresa'] ?>"<?= $empresas[$i]['id_empresa'] == $dados[0]['id_empresa'] ? 'selected' :  '' ?>><?= $empresas[$i]['nome_empresa'] ?></option>
                                <?php } ?>
                            </select>
                            <label class="validar-campo" id="val_empresa"></label>
                        </div>
                        <div class="form-group">
                            <label>Valor</label>
                            <input type="text" class="form-control" placeholder="Digite aqui..." id="valor" name="valor" value="<?= $dados[0]['valor_movimento'] ?>"/>
                            <label class="validar-campo" id="val_valor"></label>
                        </div>
                        <div class="form-group">
                            <label>Observação</label>
                            <textarea placeholder="Digite aqui.." class="form-control" rows ="4" id="obs" name="obs"> <?= $dados[0]['obs_movimento'] ?></textarea>
                        </div>
                        <button class= "btn btn-success" onclick="return ValidarCampos(8)" name="btnGravar">Gravar</button>  
                    </form>
                </div>
                <!-- /. PAGE INNER  -->
            </div>
            <!-- /. PAGE WRAPPER  -->
        </div>
        <!-- /. WRAPPER  -->
        <!-- SCRIPTS -AT THE BOTOM TO REDUCE THE LOAD TIME-->
        <!-- JQUERY SCRIPTS -->   
    </body>
</html>


Esse é o código para exibir a mensagem
<?php

function ExibirMsg($ret) {
    switch ($ret) {
        case -3:
            echo '<div class= "alert-warning">
            Usuário não encontrado
            </div>';
            break;
        
        case -2:
            echo '<div class= "alert-warning">
            Senha e repetir senha não conferem
            </div>';
            break;
        
        case -1:
            echo '<div class="alert alert-danger">
                Ocorreu um erro na operação
            </div>';
            break;
        
        case 0:
            echo '<div class="alert alert-warning">
                Preencher o(s) campo(s) obrigatório(s)
            </div>';
            break;
        case 1:
            echo '<div class="alert alert-success">
                Dados gravados com sucesso
            </div>';
            break;                
    }
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem como postar alguma imagem do erro? Como não temos seu banco, não tem como fazer debug.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui está a imagem do erro, porém encontrei outro erro depois que atualizei o código não está encontrando a empresas cadastradasimage.thumb.png.8252e9c16798ba072e84f8ae1aa541ba.png

 

image.thumb.png.2bd15791ee077499d8cf56e00b0c803b.png

adicionado 3 minutos depois

Segue o  código completo esse é do alterar_movimento

<?php
require_once '../DAO/MovimentoDAO.php';
require_once '../vou/MovimentoVO.php';
require_once '../DAO/CategoriaDAO.php';
require_once '../DAO/EmpresaDAO.php';
include_once '_msg.php';

$dao = new MovimentoDAO();

if (isset($_GET['cod']) && is_numeric($_GET['cod'])) {

    $cod = $_GET['cod'];

    $dados = $dao->DetalharMovimento($cod);

    if (count($dados) == 0) {
        header('location: consultar_movimento.php');
    } else {
        $dao_cat = new CategoriaDAO();
        $dao_emp = new EmpresaDAO();
        $categorias = $dao_cat->ConsultarCategoria();
        $empresas = $dao_emp->ConsultarEmpresa();
    }
} else if (isset($_POST['btnGravar'])) {
    $vou = new MovimentoVO();
    $vou->setIdMovimento($_POST['codMov']);
    $vou->setMovimento($_POST['opcao']);
    $vou->setData($_POST['data']);
    $vou->setIdCategoria($_POST['categoria']);
    $vou->setIdEmpresa($_POST['empresa']);
    $vou->setValor($_POST['valor']);
    $vou->setObs($_POST['obs']);
    
    $ret = $dao->AlterarMovimento($vou);
    header('location: alterar_movimento.php?cod=' . $_POST['codMov'] . '&ret=' . $ret);    
} else {
    header('location: consultar_movimento.php');
}
?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
    <?php
    include_once '_head.php';
    ?>
    <body>
        <div id="wrapper">
            <?php
            include_once '_topo.php';
            include_once '_menu.php';
            ?>
            <!-- /. NAV SIDE  -->
            <div id="page-wrapper" >
                <div id="page-inner">
                    <div class="row">
                        <div class="col-md-12">
                            <?php
                            if (isset($_GET['ret'])) {
                                ExibirMsg($_GET['ret']);
                            }
                            ?>
                            <h2>Alterar movimento</h2>   
                            <h5>Aqui você altera seus movimentos</h5>                       
                        </div>
                    </div>
                    <!-- /. ROW  -->
                    <hr />
                    <form method="post" action="alterar_movimento.php">
                        <input type="hidden" name="codMov" value="<?= $dados[0]['id_movimento'] ?>"/>
                        <div class="form-group">
                            <label>Tipo de movimento</label>
                            <select class= "form-control" id="opcao" name="opcao" value="<?= $opcao ?>">
                                <option value ="">Selecione</option>
                                <option value="0" <?= $dados[0]['tipo_movimento'] == 0 ? 'selected' : '' ?>>Entrada</option>
                                <option value="1" <?= $dados[0]['tipo_movimento'] == 1 ? 'selected' : '' ?>>Saída</option>                            
                            </select>
                            <label class="validar-campo" id="val_opcao"></label>
                        </div>
                        <div class="form-group">
                            <label>Data</label>
                            <input type="date" class="form-control" id="data" name="data" value="<?= $dados[0]['data_movimento'] ?>"/>
                            <label class="validar-campo" id="val_data"></label>
                        </div>
                        <div class="form-group">
                            <label>Selecionar Categoria</label>
                            <select class="form-control" id="categoria" name="categoria">
                                <option value="">Selecione</option>
                                <?php for ($i = 0; $i < count($categorias); $i++) { ?>
                                    <option value="<?= $categorias[$i]['id_categoria'] ?>" <?= $categorias[$i]['id_categoria'] == $dados[0]['id_categoria'] ? 'selected' : '' ?>><?= $categorias[$i]['nome_categoria'] ?></option>
                                <?php } ?>
                            </select>
                            <label class="validar-campo" id="val_categoria" name="categoria"></label>
                        </div>
                        <div class="form-group">
                            <label>Selecionar Empresa </label>
                            <select class="form-control" id="empresa" name="empresa">
                                <option value="">Selecione</option>
                                <?php for ($i = 0; $i < count($empresas); $i++) { ?>
                                    <option value ="<?= $empresas[$i]['id_empresa'] ?>"<?= $empresas[$i]['id_empresa'] == $dados[0]['id_empresa'] ? 'selected' :  '' ?>><?= $empresas[$i]['nome_empresa'] ?></option>
                                <?php } ?>
                            </select>
                            <label class="validar-campo" id="val_empresa" name="empresa"></label>
                        </div>
                        <div class="form-group">
                            <label>Valor</label>
                            <input type="text" class="form-control" placeholder="Digite aqui..." id="valor" name="valor" value="<?= $dados[0]['valor_movimento'] ?>"/>
                            <label class="validar-campo" id="val_valor"></label>
                        </div>
                        <div class="form-group">
                            <label>Observação</label>
                            <textarea placeholder="Digite aqui.." class="form-control" rows ="4" id="obs" name="obs"> <?= $dados[0]['obs_movimento'] ?></textarea>
                        </div>
                        <button class= "btn btn-success" onclick="return ValidarCampos(8)" name="btnGravar">Gravar</button>  
                    </form>
                </div>
                <!-- /. PAGE INNER  -->
            </div>
            <!-- /. PAGE WRAPPER  -->
        </div>
        <!-- /. WRAPPER  -->
        <!-- SCRIPTS -AT THE BOTOM TO REDUCE THE LOAD TIME-->
        <!-- JQUERY SCRIPTS -->   
    </body>
</html>

Esse é o código do MovimentoDAO

<?php

require_once 'Conexao.php';
require_once 'UtilDAO.php';

class MovimentoDAO extends Conexao {

    public function CadastrarMovimento(MovimentoVO $vou) {
        if ($vou->getMovimento() || $vou->getData() == '' || $vou->getIdCategoria() == '' || $vou->getIdEmpresa() == '' || $vou->getValor() == '') {
            return 0;
        }

        //1 PASSO: Criar um obj que receberá o obj de conexão
        $conexao = parent::retornaConexao();

        //2 PASSO: Criar uma variável que receberá o comando SQL que deverá ser executado
        $comando = 'insert into tb_movimento (tipo_movimento, data_movimento, valor_movimento, obs_movimento, id_usuario, id_categoria, id_empresa) value(?,?,?,?,?,?,?)';

        //3 PASSO: Criar um objeto que será configurado para ser executado NO MYSQL
        $sql = new PDOStatement();

        //4 PASSO: O objeto configurado SQL receberá a conexão que vai estar preparada para o comando
        $sql = $conexao->prepare($comando);

        //5 PASSO: Verifica se tem no $comando pontos de interrogação. Se tiver configura o bindValue
        $sql->bindValue(1, $vou->getMovimento());
        $sql->bindValue(2, $vou->getData());
        $sql->bindValue(3, $vou->getValor());
        $sql->bindValue(4, $vou->getObs());
        $sql->bindValue(5, UtilDAO::CodigoLogado());
        $sql->bindValue(6, $vou->getIdCategoria());
        $sql->bindValue(7, $vou->getIdEmpresa());
        try {
            $sql->execute();
            return 1;
        } catch (Exception $ex) {
            echo $ex->getMessage();
            return -1;
        }
    }

    public function AlterarMovimento(MovimentoVO $vou) {
        if ($vou->getMovimento() || $vou->getData() == '' || $vou->getIdCategoria() == '' || $vou->getIdEmpresa() == '' || $vou->getValor() == '') {
            return 0;
        }
        $conexao = parent::retornaConexao();

        $comando = 'update tb_movimento set tipo_movimento = ?, data_movimento = ?, id_categoria = ?, id_empresa = ?, valor_movimento = ?, obs_movimento = ? '
                . ' where id_movimento = ?';
        $sql = new PDOStatement();
        $sql = $conexao->prepare($comando);
        $sql->bindValue(1, $vou->getMovimento());
        $sql->bindValue(2, $vou->getData());
        $sql->bindValue(3, $vou->getIdCategoria());
        $sql->bindValue(4, $vou->getIdEmpresa());
        $sql->bindValue(5, $vou->getValor());
        $sql->bindValue(5, $vou->getObs());
        $sql->bindValue(6, $vou->getIdMovimento());

        try {
            $sql->execute();
            return 1;
        } catch (Exception $ex) {
            echo $ex->getMessage();
            return -1;
        }
    }

    public function ConsultarMovimento($tipo, $dtinicial, $dtfinal) {
        $conexao = parent::retornaConexao();

        $comando = 'select id_movimento, tipo_movimento, data_movimento, valor_movimento, obs_movimento, nome_categoria, nome_empresa '
                . ' from tb_movimento'
                . ' inner join tb_categoria on tb_categoria.id_categoria = tb_movimento.id_categoria'
                . ' inner join tb_empresa on tb_movimento.id_empresa = tb_empresa.id_empresa'
                . ' where tb_movimento.id_usuario = ?'
                . ' and data_movimento between ? and ? ';

        if ($tipo != 2) {
            $comando = $comando . ' and tipo_movimento = ?';
        }
        $sql = new PDOStatement();
        $sql = $conexao->prepare($comando);

        $sql->bindValue(1, UtilDAO::CodigoLogado());
        $sql->bindValue(2, $dtinicial);
        $sql->bindValue(3, $dtfinal);

        if ($tipo != 2) {
            $sql->bindValue(4, $tipo);
        }

        //Elimina o índice do array
        $sql->setFetchMode(PDO::FETCH_ASSOC);

        $sql->execute();

        return $sql->fetchAll();
    }

    public function DetalharMovimento($codMov) {

        $conexao = parent::retornaConexao();

        $comando = 'select id_movimento, data_movimento, tipo_movimento, valor_movimento, obs_movimento, id_empresa'
                . ' id_categoria from tb_movimento where id_usuario = ? and id_movimento = ?';
        

        $sql = $conexao->prepare($comando);

        $sql->bindValue(1, UtilDAO::CodigoLogado());
        $sql->bindValue(2, $codMov);

        //Elimina o índice do array
        $sql->setFetchMode(PDO::FETCH_ASSOC);

        $sql->execute();

        return $sql->fetchAll();
    }

}

Esse é o código para exibir a mensagem 

<?php

function ExibirMsg($ret) {
    switch ($ret) {
        case -3:
            echo '<div class= "alert-warning">
            Usuário não encontrado
            </div>';
            break;
        
        case -2:
            echo '<div class= "alert-warning">
            Senha e repetir senha não conferem
            </div>';
            break;
        
        case -1:
            echo '<div class="alert alert-danger">
                Ocorreu um erro na operação
            </div>';
            break;
        
        case 0:
            echo '<div class="alert alert-warning">
                Preencher o(s) campo(s) obrigatório(s)
            </div>';
            break;
        case 1:
            echo '<div class="alert alert-success">
                Dados gravados com sucesso
            </div>';
            break;                
    }
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifica se o método ConsultarEmpresa está realmente selecionando a coluna id_empresa. O erro que acusa é porque, na hora de imprimir, não encontra essa coluna.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui está o código da EmpresaDAO tem o select id_empresa não sei onde está o erro

<?php

require_once 'Conexao.php';
require_once 'UtilDAO.php';

class EmpresaDAO extends Conexao {

    public function CadastrarEmpresa(EmpresaVO $vou) {
        if ($vou->getNomeEmpresa() == '' || $vou->getEndereco() == '' || $vou->getTelefone() == '') {
            return 0;
        }
        //1 PASSO: criar um obj que receberá o obj de conexão
        $conexao = parent::retornaConexao();

        //2 PASSO: Criar uma variável que receberá o comando SQL que deverá ser executado 
        $comando = 'insert into tb_empresa (nome_empresa, id_usuario, endereco_empresa, telefone_empresa) value (?,?,?,?)';

        //3 PASSO: Criar um objeto que será configurado para ser executado NO MYSQL
        $sql = new PDOStatement();

        //4 PASSO: O objeto configurado SQL receberá a conexão que vai estar preparada para o comando
        $sql = $conexao->prepare($comando);

        //5 PASSO: Verifica se tem no $comando pontos de interrogação. Se tiver configura o bindValue
        $sql->bindValue(1, $vou->getNomeEmpresa());
        $sql->bindValue(2, UtilDAO::CodigoLogado());
        $sql->bindValue(3, $vou->getEndereco());
        $sql->bindValue(4, $vou->getTelefone());

        try {
            $sql->execute();
            return 1;
        } catch (Exception $ex) {
            echo $ex->getMessage();
            return -1;
        }
    }

    public function AlterarEmpresa(EmpresaVO $vou) {
        if ($vou->getNomeEmpresa() == '' || $vou->getEndereco() == '' || $vou->getTelefone() == '') {
            return 0;
        }
        $conexao = parent::retornaConexao();
        $comando = 'update tb_empresa set nome_empresa = ? endereco_empresa = ?, telefone_empresa = ? where id_empresa= ?';
        $sql = new PDOStatement();
        $sql = $conexao->prepare($comando);
        $sql->bindValue(1, $vou->getNomeEmpresa());
        $sql->bindValue(2, $vou->getEndereco());
        $sql->bindValue(3, $vou->getTelefone());
        $sql->bindValue(4, $vou->getIdEmpresa());

        try {
            $sql->execute();
            return 1;
        } catch (Exception $ex) {
            return -1;
        }
    }

    public function ConsultarEmpresa() {
        $conexao = parent::retornaConexao();

        $comando = 'select id_empresa, nome_empresa, endereco_empresa, telefone_empresa from tb_empresa where id_usuario = ?';

        $sql = new PDOStatement();
        $sql = $conexao->prepare($comando);

        $sql->bindValue(1, UtilDAO::CodigoLogado());

        //Elimina o índice do array
        $sql->setFetchMode(PDO::FETCH_ASSOC);

        $sql->execute();

        return $sql->fetchAll();
    }
    
    public function DetalharEmpresa($idEmpresa){
        $conexao = parent::retornaConexao();

        $comando = 'select id_empresa, nome_empresa, endereco_empresa, telefone_empresa from tb_empresa where id_usuario = ? and id_empresa = ?';

        $sql = new PDOStatement();
        $sql = $conexao->prepare($comando);

        $sql->bindValue(1, UtilDAO::CodigoLogado());
        $sql->bindValue(2, $idEmpresa);
        //Elimina o índice do array
        $sql->setFetchMode(PDO::FETCH_ASSOC);
        $sql->execute();

        return $sql->fetchAll();
    }

}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!