Undefined error Property: Products::$db in Codegniter

Asked

Viewed 940 times

1

inserir a descrição da imagem aqui inserir a descrição da imagem aqui

I’m following the tutorial of a video to create a crud in Codegnaiter, I’m using the Postgresql database and Xampp

MODEL:

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

class Produtos_model extends CI_Model {

    //Lista todos os produtos da tabela produtos    
    public function getProdutos() {
        $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("/");                
        }
    }
}

  • point me to the line that gives the error in these codes! I think it’s time to rename the model!

  • Line 8 giving public Function getProducts model error() {

  • PHP Connection Library with Postgresql + library connection to the Codeigniter. If both are not loaded and functioning symptoms are those there.

  • That question here Isn’t it yours? If you solved the problem described there, you shouldn’t be having the problem described here...

2 answers

1

Updates your question with your code autoload.php and database.php also, but error of properties, is usually wrong configuration usually in the php.ini. You can try using connection PDO instead of the traditional uncommenting this line ;extension=php_pdo_pgsql.dll and changing its 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’s very unlikely, it doesn’t hurt me to ask, you’ve restarted your server since the first change in php.ini right? If not, it won’t work anyway.

0

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

If you’re just going to connect on time, write this on 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 bank on most pages I recommend, you go in your folder config, in the archive autoload.php and edit that line:

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

Even better, recommend giving an autoload on session also, getting like this:

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

Taking advantage of if you are beginner in codeigniter, in this same file, edit the line of helpers, leaving so:

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

Another configuration you forgot by the look, also in the folder config 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
  • When I put the database in the autoload of this error: Message: Call to Undefined Function pg_connect()

  • everything I try to create in codegnaiter is giving this error, I’m beginner do not know how it works yet, I’m just following the tutorials

  • Test that setting on autoload.php that will work, then punctuate me here again, thank you.

  • I tested it, it still didn’t work :(

  • And your file database.php also in the same directory, you configured? I will update my answer, check there.

  • Yes, I’ve also set up the database.php

Show 1 more comment

Browser other questions tagged

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