0

データベース テーブルのデータを表示する小さなアプリケーションに取り組んでいます。2 つのエラーが発生しましたが、なぜそこにあるのかわかりません。私はまだ初心者なので、理解できません。私はそれがばかげていると思います、助けてください。

エラー

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: querys


Severity: Warning

Message: Invalid argument supplied for foreach()

これらのエラーはビュー ページにあります。

見る

    <?php foreach ($queries as $row): ?>
    <table>

       <th>Name</th>
       <th>Surname</th>
       <th>phone</th>
       <th>email</th>

       <td><?php echo $row->name; ?></td>
       <td><?php echo $row->surname; ?></td>
       <td><?php echo $row->phone; ?></td>
       <td><?php echo $row->email; ?></td>

   </table>  
    <?php endforeach; ?>

コントローラ

  function display($offset = 0)
    {
           $limit = 20;
            $this->load->model('info_model');

            $results = $this->info_model->search($limit, $offset);

            $data['queries'] = $results['rows'];
            $data['num_results'] = $results['num_rows'];


            $this->load->view('info_view',$data);


    }

モデル

 function search ($limit, $offset){

          //results query 
          $q = $this->db->select('ID, name, surname, phone, email');
          $this->db->from('tblinfo');
          $this->db->limit($limit, $offset);

          $ret['rows'] = $q->get()->result();
          //count query
          $q = $this->db->select('COUNT(*) as count', FALSE )
          ->from('tblinfo');

          $tmp = $q->get()->result();

          $ret['num_rows'] = $tmp[0]->count;
          return $ret;
      }

編集

挿入してforeachエラーを修正しました

   <?php if(is_array($queries)): ?>
   <?php endif; ?>

私が得ている唯一のエラーは

   A PHP Error was encountered

    Severity: Notice

    Message: Undefined variable: queries
4

5 に答える 5

5
$data['query'] = $results['rows'];

する必要があります

$data['querys'] = $results['rows']; // although correct spelling is "queries"

次に$querys、ビュー内にアクセスできます。

于 2013-03-13T07:57:56.663 に答える
1

search()問題は、おそらく結果を返さないモデルメソッドにあるようです。codeigniters アクティブ レコード クラスを利用するには、次のように書き直します。

function search ($limit, $offset){

    //results query 
    $this->db->select('ID, name, surname, phone, email');
    $q =  $this->db->get('tblinfo', $limit, $offset);

    $ret['rows'] = $q->result();

    //count query
    $ret['num_rows'] = $this->db->count_all('tblinfo');

    return $ret;
}

Codeignitersアクティブ レコード クラスを使用して、特定のテーブル内のすべてのレコードの数を取得できます。$this->db->count_all('table_name');

于 2013-03-13T08:17:07.443 に答える
0

モデルコードをこれに変更します

function search ($limit, $offset){

      //results query 
      $this->db->select('ID, name, surname, phone, email');
      $this->db->from('tblinfo');
      $this->db->limit($limit, $offset);
      $q = $this->db->get();
      $ret['rows'] = $q->result();
      //count query
      $q1 = $this->db->select('COUNT(*) as count', FALSE )
      ->from('tblinfo');

      $tmp = $q1->get()->result();

      $ret['num_rows'] = $tmp[0]->count;
      return $ret;
  }
于 2013-03-13T08:34:37.697 に答える
0

個人的には、関数は 1 つのタスクのみを実行する必要があると思います。現在、1 つの関数で 2 つのタスク (レコードを返し、レコード数を返す) を実行しようとしています。

モデルを次のように書き直します。

function search($limit, $offset)
{
  $this->db->select('ID, name, surname, phone, email');
  $this->db->from('tblinfo');
  $this->db->limit($limit, $offset);
  return $this->db->get();
}

コントローラーは次のようになります。

function display($offset = 0)
{
  $this->load->model('info_model');
  $results = $this->info_model->search(20, $offset);

  $data['queries'] = $results->result();
  $data['num_results'] = $this->db->count_all('tblinfo'); // Alternatively you could make a separate model function that does this

  $this->load->view('info_view', $data);
}
于 2013-03-13T08:23:43.013 に答える