Нужна помощь Создание таблицы из результатов запроса - PullRequest
0 голосов
/ 10 апреля 2011

У меня проблемы с созданием таблицы из результатов моего запроса.У меня есть этот код:

// Model
<?php
    class Search_Employee extends CI_Model {
        function getAll() {
            $searchterm = $this->name = $_POST['empname'];

            $this->db->like('first_name', $searchterm);
            $this->db->or_like('last_name', $searchterm); 

            $q = $this->db->query("SELECT first_name, last_name, deparment.name FROM employee
                                   INNER JOIN deparment ON employee.department_id = department.id
                                   WHERE first_name LIKE '%" . $searchterm . "%' OR last_name LIKE '%" . $searchterm . "%'");

            if ($q = $this->db->get('employee'))
            {
                if ($q->num_rows() > 0) {
                    foreach ($q->result() as $row) {
                        $data[] = $row;
                    }
                    return $data;
                } else {
                    echo "No results found.";
                    return array();
                }
            } else {
                echo sprintf("DB Query Failed: %s", $q);
                return false;
            }
        }
    }

// Controller
class Employees extends CI_Controller {
    function search_employee()
    {
        $this->load->library('table');
        $this->load->model('search_employee');

        $data['main_content'] = 'display_employee';
        $data['rows'] = $this->search_employee->getAll();

        $this->load->view('includes/template', $data);

    }

}

// View
<h1>Results</h1>
<?php
$this->table->set_heading('Name', 'Last Name', 'Department');
$tmp = array ( 'table_open'  => '<table border="0" cellpadding="2" cellspacing="1">' );
$this->table->set_template($tmp);

foreach ($rows as $r) :
    $this->table->add_row($r); ?>
endforeach;
?>

Я продолжаю получать

Fatal error: Call to a member function result() on a non-object in C:\xampp\htdocs\employees\application\views\display_employee.php on line 15
Line 15

это цикл foreach().

Большое спасибо заранее за вашу помощь.

1 Ответ

0 голосов
/ 10 апреля 2011

Я не знаю, к какому объекту класса $this->db относится, и, похоже, ни mysql, ни mysqli, ни PDO. Кстати, похоже, что $this->db->get('employee') не возвращает объект.

Возможно, вы допустили опечатку и имели в виду $this->db->result(), которая может быть функцией, возвращающей результат вашего последнего запроса.

Вы также можете проверить (if (is_object($q)) {}), является ли $q объектом, прежде чем обрабатывать его таким образом.

Почему бы вам не заменить

foreach ($q->result() as $row) {
    $data[] = $row;
}

с $data = $q->result;?

Если вам нужна дополнительная информация, вам лучше добавить код относительно этого класса БД, тогда я обновлю свой ответ.

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...