SQL Clause with Codigniter

Asked

Viewed 58 times

0

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

I am using the codeigniter so this the following way:

Controler:

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 as a foreign key the client code, I am using joins to display the name of the client to which the budget belongs, so far so good. But at the time of editing I believe that this missing some detail for the function to work could help me?

  • Gives error or just doesn’t update?

1 answer

0


Galera ended up solving carrying 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 carry everything from BD display what I wish and use foreign keys behind logic.

  • Mark the answer...

Browser other questions tagged

You are not signed in. Login or sign up in order to post.