Я очень новый программист, поэтому, пожалуйста, простите меня, если мой вопрос покажется вам глупым.
Я работаю с Codeigniter, и у меня есть метод get_projects() в модели проектов для чтения данных из таблицы проектов. вот код.
public function get_projects ($userid = '')
{
if (empty($userid))
{
return FALSE;
}
$return_data = array();
$this->db->select('id, startdate, projectname, expenddate, amount, advance, dues');
$this->db->where('userid', $userid);
$query = $this->db->get('projects');
if ($query->row())
$return_data = $query->row();
return $return_data;
}
У меня есть функция контроллера get_projects(), в которой я пытаюсь вызвать этот метод модели и передать данные в файл просмотра. Вот код.
public function get_projects()
{
$userid = $this->session->userdata('user_id');
$projects = $this->projects->get_projects($userid);
$data = array(
'projectname' => '',
'startdate' => ''
);
$this->load->view('dashboard', $data);
}
У меня есть файл представления с именем dashboard.php, и я хочу показать его там. Я обновляю свой вопрос, чтобы показать файл просмотра.
<?php defined('BASEPATH') OR exit('No direct script access allowed');?>
<section>
<div class = "row topspace">
<div class = "col-6 offset-3">
<h4 class = "text-center">Dashboard Testing</h4><hr>
</div>
</div>
<div class = "row">
<?php foreach ($result as $row) { ?>
<div class = "col-12">
<div class = "card" style = "width: 18rem;">
<div class = "card-body">
<h5 class = "card-title"><?php echo $row->projectname; ?></h5>
<h6 class = "card-subtitle mb-2 text-muted"><?php echo $row->startdate; ?></h6>
<a href = "#" class = "card-link">Card link</a>
<a href = "#" class = "card-link">Another link</a>
</div>
</div>
</div>
<?php } ?>
</div>
</section>
Как мне это сделать? Каков правильный способ отправки данных из контроллера в файл просмотра и как правильно получить доступ к этим данным в файле просмотра? Пожалуйста, помогите мне понять это, я пытаюсь последние 5 часов. Заранее большое спасибо.






Вы должны сначала загрузить свою модель:
$mymodel = $this->load->model('namemodel')
Затем доступ к вашей функции модели:
$result = $mymodel->get_projects(useridgohere)
И у вас есть результат в вашем $result var.
Для чтения в поле зрения вы можете поместить свои переменные данные в свой результат
$data = array(
'thenameofvariableinview' => $result,
);
$this->load->view('dashboard', $data);
Затем вы можете вызвать с помощью:
<?php
echo $thenameofvariableinview;
?>
привет, сэр, но однажды я возвращаю строку результата из модели, эта строка имеет много атрибутов правильно. Я хочу получить к ним доступ с контроллера, а затем перейти к файлу просмотра. Я обновляю свой вопрос, чтобы показать файл просмотра.
Просто получите доступ к массиву, например $result['name']
Во-первых, убедитесь, сколько строк вы извлекаете.
row() для одной записи и result() для более чем одной
Модель
public function get_projects ($userid = '')
{
if (empty($userid)){
return FALSE;
}
$this->db->select('id, startdate, projectname, expenddate, amount, advance, dues');
$this->db->where('userid', $userid);
$query = $this->db->get('projects');
//Another way is to count rows and then use row() or result()
//$query->num_rows() will tell you how many rows you are getting
if ($query->num_rows() == 1){
return $query->row();
}else{
return $query->result();
}
}
Контроллер
public function get_projects(){
$userid = $this->session->userdata('user_id');
$projects = $this->projects->get_projects($userid);
//Here pass `$projects` data to array and give it to view
$data = array(
'projectname' => $projects,
'startdate' => 'your-date'
);
$this->load->view('dashboard', $data);
}
Теперь покажите данные в представлении. Если строк больше одной, используйте цикл foreach(), иначе без цикла.
У меня есть дата начала и другие данные, хранящиеся в базе данных. Как только я возвращаю результат () из модели, как мне получить доступ ко всем деталям в контроллере, а также в представлении. Пожалуйста, уточните, я делаю это впервые.
@ Ришав, согласно моему ответу, в контроллере вы получаете запись проекта из БД в переменной $projects. Затем вы передаете это в виде другого массива $data. В контроллере вы можете использовать данные проектов с переменной $projects. На ваш взгляд, вы можете получить доступ к данным проектов с именем переменной $projectname.
мне нужно получить доступ только к некоторым атрибутам всего набора результатов.
см. в контроллере $data = array('имя проекта' => $projects->имя проекта, 'дата начала'-> $projects->дата начала) ; . Могу ли я сделать что-то вроде этого.
Нет нет. Делай так $data = array('projectname' => $projetcs, 'startdate' => 'other-value') ;
см., что у меня есть все данные в массиве результатов. я хочу показать все данные в поле зрения. поэтому я должен пройти от контроллера. пожалуйста, покажите мне, как прочитать дату начала из базы данных в модели, передать ее контроллеру, а затем просмотреть. Извините, если мое понимание ограничено. Пожалуйста, потерпите меня.
Еще одна просьба, если у вас есть 5 минут времени, я хотел бы подключиться на любом столе, пожалуйста.
startdate находится в таблице projects?
вам не нужно передавать его отдельно, вы можете получить его из переменной $projects.
На вид $projectname->startdate;
Это решило все. Спасибо, сэр, за вашу помощь. Желаю тебе всего наилучшего в жизни. Спасибо большое.
Модель:
public function get_projects ($userid = '')
{
if (!empty($userid))
{
$this->db->select('id, startdate, projectname, expenddate, amount, advance, dues');
$this->db->where('userid', $userid);
$query = $this->db->get('projects');
if ($query->num_rows() > 0){
return $query->row();
//return $query->result();//according to your requirment like loop
}else{
return array();//empty array
}
}else{
return array();//empty array
}
}
Контроллер:
public function get_projects(){
$data = array()
$this->load->model('Project_model');//assums not loaded in autoload
$userid = $this->session->userdata('user_id');
$results = $this->Project_model->get_projects($userid);//always add _model to avoid confusion
//$results->startdate = '';//you can do this too
$data['result'] = $results;
$data['startdate'] = '';//dont forget to add date
$this->load->view('dashboard', $data);
}
Вид:
<?php defined('BASEPATH') OR exit('No direct script access allowed');?>
<section>
<div class = "row topspace">
<div class = "col-6 offset-3">
<h4 class = "text-center">Dashboard Testing</h4><hr>
</div>
</div>
<div class = "row">
<?php if (!empty($result) { ?>
<?php foreach ($result as $row) { ?>
<div class = "col-12">
<div class = "card" style = "width: 18rem;">
<div class = "card-body">
<h5 class = "card-title"><?php echo $row->projectname; ?></h5>
<h6 class = "card-subtitle mb-2 text-muted"><?php echo $startdate; ?></h6>
<a href = "#" class = "card-link">Card link</a>
<a href = "#" class = "card-link">Another link</a>
</div>
</div>
</div>
<?php } ?>
<?php }else{ ?>
<div class = "col-12">
<div class = "card" style = "width: 18rem;">
<div class = "card-body">
<h5 class = "card-title">No data found.</h5>
</div>
</div>
</div>
<?php } ?>
</div>
</section>
Добавьте свой вид php, и я смогу вам помочь!