Clause of SQL upty with Codigniter

0

Good morning guys, I need to do an update in the database but I'm not getting the codes below:

I'm using codeigniter so it looks like this:

Controller:

function editar($ocod)  {

    /* Aqui vamos definir o título da página de edição */
    $this->template->set('title', 'Editar Orçamentos');
    /* Busca os dados da pessoa que será editada */
    $data['dados_orcamentos'] = $this->model->editar($ocod);

    /* Carrega a página de edição com os dados da pessoa */
    $this->template->load('layout', 'orcamentos_edit.phtml', $data);

}

function atualizar() {

    /* Carrega a biblioteca do CodeIgniter responsável pela validação dos formulários */
    $this->load->library('form_validation');

    /* Define as tags onde a mensagem de erro será exibida na página */
    $this->form_validation->set_error_delimiters('<span>', '</span>');

    /* Aqui estou definindo as regras de validação do formulário, assim como 
       na função inserir do controlador, porém estou mudando a forma de escrita */
    $this->form_validation->set_rules('cliente', 'Cliente', 'required');
    $this->form_validation->set_rules('produto', 'Produto', 'required');
    $this->form_validation->set_rules('orcdat', 'Data', 'required');
    $this->form_validation->set_rules('situacao', 'Situação', 'required');
    $this->form_validation->set_rules('valor', 'Valor', 'required');


    /* Executa a validação e caso houver erro chama a função editar do controlador novamente */
    if ($this->form_validation->run() === FALSE) {
            $this->editar($this->input->post('ocod'));
    } else 
        /* Senão obtém os dados do formulário */
        $data['ocod'] = $this->input->post('ocod');
        $data['cliente'] = $this->input->post('cliente');
        $data['produto'] = $this->input->post('produto');
        $data['orcdat'] = $this->input->post('orcdat');
        $data['situacao'] = $this->input->post('situacao');
        $data['valor'] = $this->input->post('valor');

        /* Executa a função atualizar do modelo passando como parâmetro os dados obtidos do formulário */
        if ($this->model->atualizar($data)) {
            $this->session->set_flashdata('mensagem', "<div class='alert alert-success'> Orçamento editado com sucesso</div>");
            redirect('orcamentos');
        } else {
            $this->session->set_flashdata('mensagem', "<div class='alert alert-danger'> Erro ao editar Orçamento</div>");
        }
    }

Model:

function editar($ocod) {
    $this->db->select('ocod, cnome, pnome, orcdat, situacao, valor');
    $this->db->where('ocod', $ocod);
    $this->db->join('clientes', 'clientes.ccod = orcamentos.cliente');
    $this->db->join('produtos', 'produtos.pcod = orcamentos.produto');
    $query = $this->db->get('orcamentos');
    return $query->result();
}

function atualizar($data) {
    $this->db->where('ocod', $data['ocod']);
    $this->db->set($data);
    return $this->db->update('orcamentos');
}

View:     

<input type="hidden" name="ocod" value="<?php echo $dados_orcamentos[0]->ocod; ?>"/>

<div class="row">
    <div class="form-group col-md-5">
        <label for="cliente">Cliente:</label><br/>
        <input type="text" class="form-control" name="nome"  value="<?php echo $dados_orcamentos[0]->cnome; ?>"/>
        <div class="error"><?php echo form_error('cliente'); ?></div>
    </div>  
    <div class="form-group col-md-5">
        <label for="produto">Produto:</label><br/>
        <input type="text" class="form-control" name="produto" value="<?php echo $dados_orcamentos[0]->pnome; ?>"/>
        <div class="error"><?php echo form_error('produto'); ?></div>
    </div>  

</div>

<div class="row">
    <div class="form-group col-md-5">
        <label for="orcdat">data:</label><br/>
        <input type="text" class="form-control" name="orcdat" value="<?php echo $dados_orcamentos[0]->orcdat; ?>"/>
        <div class="error"><?php echo form_error('orcdat'); ?></div>
    </div>
    <div class="form-group col-md-5">
        <label for="situacao">Situação:</label><br/>
        <input type="text" class="form-control" name="situacao" value="<?php echo $dados_orcamentos[0]->situacao; ?>"/>
        <div class="error"><?php echo form_error('situacao'); ?></div>
    </div> 
</div>

<div class="row">
    <div class="form-group col-md-5">
        <label for="valor">Valor:</label><br/>
        <input type="text" class="form-control" name="valor" value="<?php echo $dados_orcamentos[0]->valor; ?>"/>
        <div class="error"><?php echo form_error('orcdat'); ?></div>
    </div>
</div>


<div class="row">
    <div class="col-md-12">
        <input type="submit" class="btn btn-primary" name="btsalvar" value="Salvar" /> 
            <a onClick="history.go(-1)" class="btn btn-default">Cancelar</a>
    </div>
</div>

<?php echo form_close(); ?>

In case I have a budget related to a client, then each budget has the client's code as the foreign key, I'm using joins to display the name of the client that belongs to the budget, so far so good. But at the moment of edit I believe that it is missing some detail so that the function works could they help me?

    
asked by anonymous 02.05.2017 / 11:30

1 answer

0

I ended up solving some attributes like hidden:

<input type="hidden" name="cliente" value="<?php echo $dados_orcamentos[0]->cliente; ?>"/>
<input type="hidden" name="produto" value="<?php echo $dados_orcamentos[0]->produto; ?>"/>

In case I load everything from the DB I display what I want and use the foreign keys behind the logic.

    
03.05.2017 / 23:46