0

データベース上の2つのテーブルからのデータを表示しているWebサイトのページネーションに取り組んでいます。ページにページネーションがありますが、ページを変更しないと想定されるため、動作しません。現在、私は Web ページに 16 のレコードを表示しており$config['per_page'] = 1;、ページネーション バーを 16 に設定していますが、すべてのレコードがページに表示されているページをめくることはありません。ここに私のコードがあります:

コントローラ

 <?php

class Result_controller extends CI_Controller{

    function getall(){

        $this->load->model('result_model');
        $data['query'] = $this->result_model->result_getall();
        // print_r($data['query']); die();


        $this->load->library('pagination');

        $config['base_url'] = 'http://localhost/Surva/index.php/result_controller/getall';
        $config['total_rows'] = $this->db->get('tblanswers, credentials')->num_rows();
        $config['per_page'] = 1;
        $config['num_links'] = 10;


        $this->pagination->initialize($config);

        $data['records'] = $this->db->get('tblanswers, credentials', $config['per_page'], $this->uri->segment(1, 0))->result_array();
        $data['pagination'] = $this->pagination->create_links();
        $this->load->view('result_view', $data);




        }


}

?>

見る

   <div>    






     <table border="1">


      <tr>
         <th>Name</th>
         <th>Second Name</th>
         <th>Phone</th>
         <th>Email</th>
         <th>Answer</th>
         <th>Comment</th>
     </tr>
      <?php foreach ($query as $row): ?> 
     <tr>

         <td><?php echo $row->name; ?></td>
         <td><?php echo $row->second_name; ?></td>
         <td><?php echo $row->phone; ?></td>
         <td><?php echo $row->email; ?></td>
          <td> <?php echo $row->answerA;?>
          <?php echo $row->answerB;?>
          <?php echo $row->answerC;?></td>
         <td><?php echo $row->comment;?><br></td>

     </tr>

      <?php endforeach; ?>

     </table>  
     <?php if (isset($pagination))
      {
       echo $pagination;
      // echo "<pre>"; var_dump($query);
       } ?>

モデル

function result_getall(){

   return $this->db->select('tblanswers.*,credentials.*')
                         ->from('tblanswers, credentials')
                         ->get()
                         ->result_object();
4

3 に答える 3

1

クエリは、x 個のレコードのみが必要であることを魔法のように認識していません。Codeigniter は、モデルからフィードしたものを表示します。

function getall(){

        $this->load->model('result_model');
        // print_r($data['query']); die();


        $this->load->library('pagination');

        $config['base_url'] = 'http://localhost/Surva/index.php/result_controller/getall';
        $config['total_rows'] = $this->db->get('tblanswers, credentials')->num_rows();
        $config['per_page'] = 1;
        $config['num_links'] = 10;
        $config['uri_segment'] = 3; //guessing here, but this is where the uri segment you use to change pages goes.
        if($this->uri->segment('3')) {
        $offest = $this->uri->segment('3');
        } else {
        $offest = 0;
        }
        $data['query'] = $this->result_model->result_getall($config['per_page'],$offset);


        $this->pagination->initialize($config);

        $data['records'] = $this->db->get('tblanswers, credentials', $config['per_page'], $this->uri->segment(1, 0))->result_array();
        $data['pagination'] = $this->pagination->create_links();
        $this->load->view('result_view', $data);




        }



Model:

function result_getall($limit=0,$offset=0){

   if($limit != 0)
   {
   return $this->db->select('tblanswers.*,credentials.*')
                         ->from('tblanswers, credentials')
                         ->limit($limit, $offset)
                         ->get()
                         ->result_object();
   } else {
   return $this->db->select('tblanswers.*,credentials.*')
                         ->from('tblanswers, credentials')
                         ->get()
                         ->result_object();
   }

コントローラーで、オフセットとページごとをモデルに渡し、それらを使用してモデル自体のリターンを制限していることに注意してください。

于 2013-03-06T11:44:22.567 に答える
0

$query ではなく $records をループする必要があります。$query にはすべてのレコードが含まれます。

于 2013-03-06T11:49:06.050 に答える
0

このようにしてください

    $this->load->library('pagination');
    $limit = 10;

    $total = $this->legend_model->get_legend_count($language_id);

    $config['base_url'] = base_url().'legend/index/';
    $config['total_rows'] = $total;
    $config['per_page'] = $limit;
    $config['uri_segment'] = 3;

    $config['first_link'] = '<< First';
    $config['last_link'] = 'Last >>';
    $config['next_link'] = 'Next ' . '&gt;';
    $config['prev_link'] = '&lt;' . ' Previous';
    $config['num_tag_open'] = '<span class="number">';
    $config['num_tag_close'] = '</span>';

    $config['cur_tag_open'] = '<span class="current"><a href="#">';
    $config['cur_tag_close'] = '</a></span>';

    $this->pagination->initialize($config);
    $data['offset'] = $offset;
    $data['legends'] = $this->legend_model->get_legend($language_id, $limit, $offset);

    $this->template->write('title', 'Legend : Manage Legend');
    $this->template->write_view('content', 'legend/index', $data);
    $this->template->render();
于 2013-03-06T12:20:06.590 に答える