2013-11-22 2 views
0

Я пытаюсь работать с базой данных, делать запросы и так ..работы с базой данных в MVC

класс базы данных, где это соединение

class Database { 

    public $user = 'root'; 
    public $password = ''; 

    function __construct() { 
     $this->connect(); 
    } 
    function connect() { 
     try { 
      $this->conn = new PDO('mysql:host=localhost;dbname=university', $this->user, $this->password,array(PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES CP1251')); 
      $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

     } catch(PDOException $e) { 
      echo 'ERROR: ' . $e->getMessage(); 
      } 
    } 

    function selectQuery($sql) { 
     $this->stmt = $this->conn->prepare($sql); 
     $this->stmt->execute(); 
    } 
} 

IndexController

require_once 'application/models/Database.php'; 

class IndexController extends Controller { 

    public function indexAction() { 
     $this->db = new Database(); 
     $data = $this->db->selectQuery('SELECT * FROM students'); 
     $this->view->render('index','template',$data); 
    } 
} 

В этом контроллер i подключается к базе данных и выполняет запрос, а затем отправляет его на просмотр

Просмотреть класс

class View { 

    function render($content_view, $template_view, $data = null) { 
     /* 
     if(is_array($data)) { 
      // преобразуем элементы массива в переменные 
      extract($data); 
     } 
     */ 

     $content = $content_view.'.php'; 
     include 'application/views/'.$template_view.'.php'; 
    } 
} 

Задача отображает результат в моем представлении, как я могу это сделать?

Пожалуйста, помогите :)

Благодарности

+1

Что не работает? –

+0

Какие рамки вы используете? Zend, Codeigniter или ваш собственный? – VishwaKumar

+0

мой собственный :) :) – user3005741

ответ

0

Ваша функция selectQuery не возвращает ничего, пусть return $this->stmt или все, что вы хотели.

В файле $template_view.php вы можете получить доступ к переменной $data, пока шаблон является файлом PHP.

Я бы предпочел установить ваши переменные для шаблона следующим образом;

// Add a general class 
class Data { 
    private $binds = array(); 
    public function bind($key, $value) { 
     $this->binds[$key] = $value; 
    } 
    public function getAll() { 
     return $this->binds; 
    } 
} 

// Add this in the controller 
$data = new Data(); 
$data->bind('students', $this->model('students')->readAll()); 
$this->view->render('index','template',$data->getAll()); 

И extract переменные в пределах вида. Затем вы можете получить доступ к $students из вашего файла шаблона.

+0

Да, но как я его показываю? Мне нужно получить его каким-то образом, как я это делаю в своем примере? – user3005741

+0

Я правильно понимаю ваши вопросы. Попробуйте добавить в файл шаблона 'var_dump ($ data)'. – vonUbisch

+0

Что такое класс DataObject? – user3005741

Смежные вопросы