2 votes

Problème de récupération de la base de données de CodeIgniter

C'est ma première tentative de coder en CodeIgniter. Le problème est qu'il n'est pas capable de récupérer les données de la base de données. L'erreur qu'il lance est la suivante :

A PHP Error was encountered

Severity: Notice

Message: Undefined property: Site::$db

Filename: core/Model.php

Line Number: 51

Je pourrais comprendre ce qu'il faut changer dans cette ligne de core/model.php .

Et c'est une autre erreur :

 Fatal error: Call to a member function query() on a non-object in C:\wamp\www\CI_one\application\models\site_model.php on line 9

Contrôleur

<?php
    class Site extends CI_Controller {
        function datta(){
            $this->load->model('site_model');
            $get = $this->site_model->getValues();
            $data['get'] = $get;
            $this->load->view('data3',$data);
        }
    }

Modèle

<?php
    class site_model extends CI_Model{

        function index(){
            echo "default index";
        }

        function getValues(){
            $query = $this->db->query("select * from nav_menu");

            if ($query->num_rows() > 0)
            {
               foreach ($query->result() as $row)
               {
                  echo $row->c1;
                  echo $row->m2;
                  echo $row->d3;
               }
            }
            return array(
                "name" => "nameless",
                "form" => "formless",
                "age"  => "ageless");
        }
    }

J'ai défini les paramètres de la base de données dans app/config/database.php .

Comment faire pour que ça marche ?


Je l'ai résolu moi-même. J'ai essuyé et recodé comme suit pour obtenir le résultat...

Contrôleur

<?php
    class Site extends CI_Controller {
        function datta(){

            $this->load->database();
            $this->load->model('site_model');
            $get = $this->site_model->getValues();
            $data['get'] = $get;
            $this->load->view('data3',$data);
        }
    }

Modèle en tant que

<?php
    class site_model extends CI_Model{

        function index(){
            echo "default index";
        }

        function getValues(){
            $query = $this->db->query("select * from nav_menu");

            if ($query->num_rows() > 0)
            {
               foreach ($query->result() as $row)
               {
                  echo $row->c1;
                  echo $row->m2;
                  echo $row->d3;
               }
            }
            return array(
                "name" => "nameless",
                "form" => "formless",
                "age"  => "ageless");
        }
    }

2voto

altafhussain Points 2099

Dans Codeigniter, vous devez charger manuellement la bibliothèque DB comme ci-dessous :

$this->load->database(); 

Ou vous devez charger automatiquement la bibliothèque comme l'a dit Sandip.

Au cours de votre application, vous pouvez avoir besoin de plusieurs bibliothèques et aides à charger automatiquement. Au lieu de les charger manuellement, le chargement automatique est la meilleure pratique. Pour en savoir plus sur le chargement automatique, cliquez ici.

http://ellislab.com/codeigniter/user-guide/general/autoloader.html

Lisez également le reste de la documentation, et vous apprendrez tout sur CI à partir de là. Elle est simple, concise et contient des exemples.

J'espère que cela vous aidera.

0voto

sandip Points 3061

Veuillez écrire un Constructeur dans le contrôleur de CodeIgniter comme :

public function __construct() {
    parent::__construct();
}

Et en plus de cela :

Vous devez d'abord charger la bibliothèque de la base de données. Dans

autoload.php :

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

Ou dans le constructeur du contrôleur comme :

  $this->load->database();

J'espère que cela vous aidera !

0voto

punit Points 182

Essayez ceci :

Contrôleur :

<?php
class Site extends CI_Controller {
    function datta(){
        $this->load->database();
        $this->load->model('site_model');
        $get=$this->site_model->getValues();
        $data['get']=$get;
        $this->load->view('data3',$data);
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X