Когда я загружаю свой контроллер, я получаю эту ошибку на моей домашней странице, но после выполнения поиска ошибка исчезнет, и там будут отображаться результаты поиска.
Это моя страница просмотра:
<div id = "toggle_tst">
<div class = "scroll">
<?php
// List up all results.
echo "<table id='table'>";
echo "<tbody>";
echo "<thead>";
echo "<tr><th>NAME</th><th>Pernor No</th><th>DESIGNATION ID</th>
</tr>";
echo "</thead>";
foreach ($results as $row)
{
echo "<tr><td>";
echo $row['name'];
echo "</td><td>";
echo $row['pernor_no'];
echo "</td><td>";
echo $row['designation_id'];
echo "</td></tr>";
}
if (isset($_POST['data_rows']))
{
//if the page has been submitted, append the rows
echo $_POST['data_rows'];
}
echo "</tbody>";
echo "</table>";
?>
</div>
</div>
Контроллер:
public function execute_search()
{
// Retrieve the posted search term.
$search_term = $this->input->post('search');
$data['query'] = $this->JcMeetingExpense_model->viewother();
$data['query1'] = $this->JcMeetingExpense_model->viewcatprice();
// Use a model to retrieve the results.
$data['results'] = $this->JcMeetingExpense_model-
>get_results($search_term);
// Pass the results to the view.
$this->load->view('JcMeetingExpense/jc_meeting_expense',$data);
}






Причина в том, что вы не установили переменную results. Очень простое решение - добавить isset() перед циклом foreach.
if (isset($results)){
foreach ($results as $row){
.
.
.
.
}
}
используйте isset перед выполнением цикла.
isset - лучшая практика, если вы используете в своем коде для переменных и массивов.
Для вашего решения: используйте код ниже
if (isset($results)){
// all code inside it...
}
всегда используйте isset () для одного и того же условия.
Подробнее: Кликните сюда!
используйте код ниже
if (isset($results)){
// all code inside it...
}
$ results не возвращает массив, поэтому вы получаете ошибку. вы можете получить результаты от контроллера?