如何用mysql查询结果显示序列号?

时间:2011-10-28 22:52:34

标签: mysql codeigniter codeigniter-2

我有一个脚本,显示这些字段的信息 - batchname,class,batchinstructor from table“batch”。但是当我显示数据时,我想在左侧显示动态生成的序列号。例如:

 Serial Number    BatchName     Class              Batch Instructor  
  1.               Solar      Class Five                John
  2.               Lunar      Class six                 Bon Jovi

我已经尝试了很多,但它不起作用。请你帮我解决这个问题吗?请注意,这些序列号不是来自数据库。

这是我的控制器:

<?php
  class Batchlist extends CI_Controller{


                    function index(){

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


                    $config['base_url'] = base_url().'batchlist/index';
                    $config['total_rows'] = $this->db->get('batch')->num_rows();
                    $config['per_page'] = 20;
                    $config['num_links'] = 20;
                    $config['full_tag_open'] = '<div class="pagination" align="center">';
                    $config['full_tag_close'] = '</div>';

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

                    $this->load->model('mod_batchlist');
                    $data['records']= $this->mod_batchlist->batch_list($config['per_page'],$this->uri->segment(3));
                    $data['main_content']='view_batchlist';
                    $this->load->view('includes/template',$data);

                }   

} ?&GT;

这是我的模特:

function batch_list($perPage,$uri) { 
                        $this->db->select('*');
                        $this->db->from('batch');
                        $this->db->join('teacher', 'batch.batchinstructor = teacher.teacherid');
                        $this->db->order_by('batchid','DESC');
                        $getData = $this->db->get('', $perPage, $uri);
                        if($getData->num_rows() > 0)
                        return $getData->result_array();
                        else
                        return null;
                        }

这是我的观点

<h1>Batch List  </h1>
            <?php if(count($records) > 0) { ?>
            <table id="table1" class="gtable sortable">
            <thead>
                    <tr>

                        <th>Batch Name</th>
                        <th>Class</th>
                        <th>Batch Instructor</th>
                        <th>Edit/Delete</th>
                    </tr>
            </thead>
            <tbody>
            <?php foreach ($records as $row){ ?>


                    <tr>

                        <td><a href="<?php echo base_url(); ?>batch/<?php echo $row['batchid']; ?>"><?php echo $row['batchname'];?></a></td>
                        <td><?php echo $row['class'];?></td>
                        <td><?php echo $row['teachername'];?></td>
                        <td> <a href="<?php echo base_url(); ?>updatebatch/get/<?php echo $row['batchid']; ?>" title="Edit"><img src="<?php echo base_url(); ?>support/images/icons/edit.png" alt="Edit" /></a>
                             <a href="#" title="Delete"><img src="<?php echo base_url(); ?>support/images/icons/cross.png" alt="Delete" /></a>
                             </td>
                    </tr>
            <?php  } ?>

            </tbody>
            </table>
            <?php } ?>
            <div class="tablefooter clearfix">

                        <div class="pagination">
                        <?php echo $this->pagination->create_links(); ?> 
                        </div>
            </div>

2 个答案:

答案 0 :(得分:4)

也许我误解了,但是......一个简单的计数器怎么样? (在SQL中订购记录之后)。 您需要将每页的项目数传递给视图(在此代码段中为$per_page),然后从URI($this->uri->segment(n))中检索当前页面。

在第1页,计数器从(20 * 0)+1开始,即1.在第2页,从(1 * 20)+1开始,即21,在第3页从(2 * 20)+1开始,即41等等...

  <?php 
   $cur_page = $this->uri->segment(n) ? intval($this->uri->segment(n)) : 1;
   $i = (($cur_page-1) * $per_page) +1;
   foreach ($records as $row) : 
   ?>
  <tr>
      <td><?php echo $i;?>.</td>
      <td><a href="<?php echo base_url(); ?>batch/<?php echo $row['batchid']; ?>"><?php echo $row['batchname'];?></a></td>
      <td><?php echo $row['class'];?></td>
      <td><?php echo $row['teachername'];?></td>
      <td> <a href="<?php echo base_url(); ?>updatebatch/get/<?php echo $row['batchid']; ?>" title="Edit"><img src="<?php echo base_url(); ?>support/images/icons/edit.png" alt="Edit" /></a><a href="#" title="Delete"><img src="<?php echo base_url();?>support/images/icons/cross.png" alt="Delete" /></a>
      </td>
</tr>
<?php 
      ++$i;
      endforeach;
 ?>

你可以将计数器放在任何你想要的位置,为了简单起见,我添加了一个列,但如果你想在其他地方放置,只需将计数器放在那里。

答案 1 :(得分:0)

您说序列号不是来自数据库。从那时起他们在哪里?如果您希望数据库生成它们,您可以创建一个名为id的列并将其设置为主键并使其自动递增。