Недопустимый аргумент Ошибка при создании панели поиска - PullRequest
1 голос
/ 26 января 2012

Я создаю панель поиска для сайта, она работает на одной странице, но на другой я получаю ошибку неверного аргумента. Надеюсь, все, что нужно, находится ниже. Я использую codeigniter. Пожалуйста помоги. Спасибо.

// Не работает //

private function getUsers () {
    $search = $this->input->post('search');

    if($search && filter_var($search, FILTER_VALIDATE_EMAIL)) {
        $where = 'WHERE source_adusers.ad_Email="'.$search.'"';
    } else if ($search) {
        $where = "WHERE source_adusers.ad_account='".$search."'";
    } else if (!$search) {
        $where = '';
    }

    $query = $this->db->query('SELECT *, COUNT(rollout_systems.EAM_USER) as systems FROM source_adusers 
        LEFT JOIN rollout_systems ON rollout_systems.EAM_User = source_adusers.ad_account '.$where.' GROUP BY source_adusers.ad_account LIMIT 0,50');

    $users = null;

    foreach ($query->result() as $row) {
        $data['account'] = $row->ad_account;
        $data['email'] = $row->ad_Email;
        $data['name'] = $row->ad_DispName;
        $data['systems'] = $row->systems;

        $users[] = $data;
    }

    if(isset($this->data['users'])) {
        $this->data['users'] = $users;
    } else {
        $this->data['users'] = $users;
    }
}

// Работает ли //

private function getSystems () {
    $search = $this->input->post('search');

    if ($search) {
        $where = 'WHERE disc_systempool.ad_name="'.$search.'"';
    } else {
        $where = '';
    }

    $query = $this->db->query('SELECT *, COUNT(rollout_systems.sys_name) as scopes FROM disc_systempool LEFT JOIN rollout_systems 
        ON rollout_systems.sys_name=disc_systempool.ad_name '.$where.' GROUP BY disc_systempool.ad_name LIMIT 0,50');

    foreach ($query->result() as $row) {
        $data['model'] = $row->eam_Model;
        $data['account'] = $row->ad_name;
        $data['city'] = $row->eam_City;
        $data['scopes'] = $row->scopes;
        $data['search'] = $this->input->post('search');

        $systems[] = $data;
    }

    if(isset($this->data['systems'])) {
        $this->data['systems'] = $systems;
    } else {
        $this->data['systems'] = $systems;
    }
}

// Где я получаю ошибку //

<tbody>
    <? foreach ($users as $user) { ?>                      <---- Line 18
    <tr>
        <td class="center"><?=$user['account']?></td>
        <td><?=$user['name']?></td>
        <td><?=$user['email']?></td>
        <td class="center"><?=$user['systems']?></td>
        <td class="center"><a href="#">View Details</a></td>
    </tr>
    <? } ?>
</tbody>

// ошибка //

A PHP Error was encountered
Severity: Warning
Message: Invalid argument supplied for foreach()
Filename: headquarters/users.php
Line Number: 18

Ответы [ 2 ]

0 голосов
/ 27 января 2012

Это показывает правильную вещь. Я исправил проблему. Я неправильно понял, что меня пригласил парень, который меня нанял. Он сказал поиск имени учетной записи. Я был в поисковом отображаемом имени, которое продолжало давать мне ошибку.

0 голосов
/ 26 января 2012

Попробуйте сделать var_dump($data); внутри вашего обзора.Если пусто.Сделайте то же самое в вашем контроллере, просто распечатав его.Если вы видите данные внутри массива $data.Убедитесь, что вы отправляете массив $data с собой в представление $this->load->view("view",$data);

Кроме того, мне может быть интересно, почему вы используете foreach для своих строк внутри контроллера вместо того, чтобы просто использовать право объектана ваш взгляд

return $query->result();

на виду

foreach($users as $user) { print $user->account; }

Надеюсь, вы это выясните.С уважением, Джонас

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