Error Undefined property: Products :: $ db no Codegniter

0

I'mfollowingthetutorialofavideotocreateacrudinCodegnaiter,I'musingthePostgreSQLandXamppdatabase

MODEL:

if(!defined('BASEPATH'))exit('Nodirectscriptaccessallowed');classProdutos_modelextendsCI_Model{//ListatodososprodutosdatabelaprodutospublicfunctiongetProdutos(){$query=$this->db->get("produtos");
        return $query->result();
    }

    //Adiciona um novo produtos na tabela produtos
    public function addProduto($dados = NULL) {
        if ($dados != NULL):
            $this->db->insert('produtos', $dados);
            endif;
        }
    }
}

CONTROLLER:

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class Produtos extends CI_Controller {

    //Página de listar produtos
    public function index() {
        //Carrega o Model Produto
        $this->load->model('produtos_model', 'produtos');
        //Criamos um Array dados para armazenas os produtos
        //Executamos a função no produtos_model getProdutos
        $data['produtos'] = $this->produtos->getProdutos();
        //Carregamos a view listarprodutos e passamos como parametro a array produtos que guarda todos os produtos da db produtos
        $this->load->view('listarprodutos', $data);
    }

    //Página de adicionar produto
    public function add() {
        //Carrega o Model Produtos              
        $this->load->model('produtos_model', 'produtos');
        //Carrega a View
        $this->load->view('addprodutos');
    }

    //Função salvar no DB
    public function salvar() {
        //Verifica se foi passado o campo nome vazio.
        if ($this->input->post('nome') == NULL) {
            echo 'O compo nome do produto é obrigatório.';
            echo '<a href="/produtos/add" title="voltar">Voltar</a>';
        } else {
            //Carrega o Model Produtos              
            $this->load->model('produtos_model', 'produtos');
            //Pega dados do post e guarda na array $dados
            $dados['nome'] = $this->input->post('nome');
            $dados['preco'] = $this->input->post('preco');
            $dados['ativo'] = $this->input->post('ativo');

            //Executa a função do produtos_model adicionar
            $this->produtos->addProduto($dados);
            //Fazemos um redicionamento para a página       
            redirect("/");                
        }
    }
}
    
asked by anonymous 10.09.2017 / 14:07

2 answers

0

You are trying to consult the bank, without having loaded the connection library.

If you connect just in time, write this in your model:

$this->load->database(); //fará a conexão do banco padrão ou
$this->load->database('outra_conexao'); //faz a conexão de outro banco

If your site uses the bank on most pages I recommend you go in your config folder, in the autoload.php file and edit this line:

$autoload[‘libraries’] = array(‘database’);

Even better, I recommend giving an autoload in session also, thus:

$autoload['libraries'] = array('session','database');

If you are new to codeigniter, in this same file, edit the line of helpers , thus leaving:

$autoload['helper'] = array('url','html');

Another setting you forgot to see, also in the config folder has the file database.php :

//pedaço que interessa...
$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'localhost', //servidor
    'username' => 'root', //usuario
    'password' => 'sua senha', //senha
    'database' => 'seu banco', //banco
    'dbdriver' => 'postgre', //aqui é o tipo de conexão usada
//resto do codigo não mexe
    
10.09.2017 / 15:19
0

Update your question with the code of your autoload.php and database.php too, but properties error, it's usually the wrong configuration in php.ini . You can try to use PDO connection instead of the traditional one by uncommenting this line ;extension=php_pdo_pgsql.dll and changing your database.php these two lines to:

$db['default']['hostname'] = 'pgsql:host=seu_servidor;dbname=seubanco';
$db['default']['dbdriver'] = 'pdo'; //set driver here

The other lines remain the same.

Ah ... although it is very unlikely, it does not cost me to ask, you have already restarted your server since the first change in php.ini ? If not, it will not work.

    
11.09.2017 / 13:24