2014-11-02 2 views
0

Возможно, в StackOverflow есть много похожих сообщений, но мой сценарий немного отличается. Итак, я решил опубликовать этот вопрос, используя этот заголовок.CodeIgniter pagination активная ссылка не работает

Я хотел бы описать мою проблему в небольших частях:

Часть - 1: У меня есть нормальный вид страницы, где можно выбрать конкретную дату. Эта часть работает.

enter image description here

Часть - 2: страница вида покажет некоторые данные для выбранной даты (по умолчанию это текущая дата). Например, 2 ноября 2014 года есть некоторые данные. Они будут отображаться на нагрузки, например:

enter image description here

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

Часть - 3: Это основная проблема. Это часть, которая не работает.

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

enter image description here

На рисунке выше, я выбрал ссылку 2, но ссылка 1 показано, чтобы быть активным, а не ссылки 2.

Так мой взгляд -

 <fieldset> 
       <legend id="meal_view_page_legend">Meal</legend> 
       <div id="content" class="box"> 
        <a href="<?php echo base_url(); ?>index.php/admin_logins/meal2"><button id="button_add">Add Meal</button></a> 

        <br> 
         <br> 

          <div> 
           <?php 
           if (isset($message)) { 
            if ($message == 'Meal information added successfully' || $message == 'Meal information edited successfully' || $message == 'Meal information deleted successfully') { 
             ?> 
             <p class="msg done"> 
              <?php echo $message; ?> 
             </p> 
             <?php 
            } else if ($message == 'Employee ID doesn\'t exist') { 
             ?> 
             <p class="msg error"> 
              <?php echo $message; ?> 
             </p> 
             <?php 
            } 
           } 
           ?> 
          </div> 

          <label style="font-weight: bold">Select Date: </label> 

          <select onchange="ajaxGetInfoByDate()" id="day" name="day"> 
           <!--option selected><--?php echo $day; ?></option--> 
           <option <?php if(date("d")=='01'){ ?> selected <?php } ?>>01</option> 
           <option <?php if(date("d")=='02'){ ?> selected <?php } ?> >02</option> 
           <option <?php if(date("d")=='03'){ ?> selected <?php } ?>>03</option> 
           <option <?php if(date("d")=='04'){ ?> selected <?php } ?>>04</option> 
           <option <?php if(date("d")=='05'){ ?> selected <?php } ?>>05</option> 
           <option <?php if(date("d")=='06'){ ?> selected <?php } ?>>06</option> 
           <option <?php if(date("d")=='07'){ ?> selected <?php } ?>>07</option> 
           <option <?php if(date("d")=='08'){ ?> selected <?php } ?>>08</option> 
           <option <?php if(date("d")=='09'){ ?> selected <?php } ?>>09</option> 
           <option <?php if(date("d")=='10'){ ?> selected <?php } ?>>10</option> 
           <option <?php if(date("d")=='11'){ ?> selected <?php } ?>>11</option> 
           <option <?php if(date("d")=='12'){ ?> selected <?php } ?>>12</option> 
           <option <?php if(date("d")=='13'){ ?> selected <?php } ?>>13</option> 
           <option <?php if(date("d")=='14'){ ?> selected <?php } ?>>14</option> 
           <option <?php if(date("d")=='15'){ ?> selected <?php } ?>>15</option> 
           <option <?php if(date("d")=='16'){ ?> selected <?php } ?>>16</option> 
           <option <?php if(date("d")=='17'){ ?> selected <?php } ?> >17</option> 
           <option <?php if(date("d")=='18'){ ?> selected <?php } ?>>18</option> 
           <option <?php if(date("d")=='19'){ ?> selected <?php } ?>>19</option> 
           <option <?php if(date("d")=='20'){ ?> selected <?php } ?>>20</option> 
           <option <?php if(date("d")=='21'){ ?> selected <?php } ?>>21</option> 
           <option <?php if(date("d")=='22'){ ?> selected <?php } ?>>22</option> 
           <option <?php if(date("d")=='23'){ ?> selected <?php } ?>>23</option> 
           <option <?php if(date("d")=='24'){ ?> selected <?php } ?>>24</option> 
           <option <?php if(date("d")=='25'){ ?> selected <?php } ?>>25</option> 
           <option <?php if(date("d")=='26'){ ?> selected <?php } ?>>26</option> 
           <option <?php if(date("d")=='27'){ ?> selected <?php } ?>>27</option> 
           <option <?php if(date("d")=='28'){ ?> selected <?php } ?>>28</option> 
           <option <?php if(date("d")=='29'){ ?> selected <?php } ?>>29</option> 
           <option <?php if(date("d")=='30'){ ?> selected <?php } ?>>30</option> 
           <option <?php if(date("d")=='31'){ ?> selected <?php } ?>>31</option> 
          </select> 

          <select onchange="ajaxGetInfoByDate()" id="month" name="month" > 
           <!--option selected><--?php echo $month; ?></option--> 
           <option <?php if(date("m")=='01'){ ?> selected <?php } ?>>01</option> 
           <option <?php if(date("m")=='02'){ ?> selected <?php } ?>>02</option> 
           <option <?php if(date("m")=='03'){ ?> selected <?php } ?>>03</option> 
           <option <?php if(date("m")=='04'){ ?> selected <?php } ?>>04</option> 
           <option <?php if(date("m")=='05'){ ?> selected <?php } ?>>05</option> 
           <option <?php if(date("m")=='06'){ ?> selected <?php } ?>>06</option> 
           <option <?php if(date("m")=='07'){ ?> selected <?php } ?>>07</option> 
           <option <?php if(date("m")=='08'){ ?> selected <?php } ?>>08</option> 
           <option <?php if(date("m")=='09'){ ?> selected <?php } ?>>09</option> 
           <option <?php if(date("m")=='10'){ ?> selected <?php } ?>>10</option> 
           <option <?php if(date("m")=='11'){ ?> selected <?php } ?>>11</option> 
           <option <?php if(date("m")=='12'){ ?> selected <?php } ?>>12</option>  
          </select> 

          <select onchange="ajaxGetInfoByDate()" id="year" name="year"> 
           <!--option selected><--?php echo $year; ?></option--> 
           <option <?php if(date("y")=='14'){ ?> selected <?php } ?>>2014</option> 
           <option <?php if(date("y")=='15'){ ?> selected <?php } ?>>2015</option> 
           <option <?php if(date("y")=='16'){ ?> selected <?php } ?>>2016</option> 
           <option <?php if(date("y")=='17'){ ?> selected <?php } ?>>2017</option> 
          </select> 

          <div id="indexView"></div> 
          </fieldset> 

И еще страницу просмотра, которую я загрузил на вышеуказанную страницу просмотра с использованием нагрузки ajax:

 <fieldset>  

     <table id = "meal_list_table"> 
      <tr> 
       <th scope="col" >Employee Id</th> 
       <th scope="col" >Guest?</th> 
       <th scope="col" >No. of Guest</th> 
       <th scope="col" >Remarks</th> 
       <th scope="col" colspan="2" >Action</th> 
      </tr> 

      <?php foreach ($info as $list) { ?> 
       <tr> 
        <td><?php echo $list['emp_id']; ?></td> 
        <td><?php echo $list['is_guest']; ?></td> 
        <td><?php echo $list['num_of_guest']; ?></td> 
        <td><?php echo $list['remarks']; ?></td> 
        <td><a href="<?php echo base_url(); ?>index.php/admin_logins/mealIdGet/<?php echo $list['id']; ?>"><button id="button_edit">Edit</button></a></td> 
        <td> 
         <a href="<?php echo base_url(); ?>index.php/admin_logins/meal4/<?php echo $list['id']; ?>" 
          onclick="return confirm('Do you want to delete this Meal Information?');"> 
          <button id="button_delete">Delete</button> 
         </a> 
        </td> 
       </tr> 
      <?php } ?> 
     </table> 
     <p><?php echo $links; ?></p> 
</fieldset> 

Аякс вызова (на первой странице просмотра):

 function ajaxGetInfoByDate() { 
      //alert("ok"); 
      var offset = document.getElementById("offset").value; 
      var day = document.getElementById("day").value; 
      var month = document.getElementById("month").value; 
      var year = document.getElementById("year").value; 
      var date = year + '-' + month + '-' + day; 
      //alert(offset); 

      // alert(date); 

      if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari 
       xmlhttp = new XMLHttpRequest(); 
      } 
      else {// code for IE6, IE5 
       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      xmlhttp.onreadystatechange = function() { 
       if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
        document.getElementById("indexView").innerHTML = xmlhttp.responseText; 
       } 
      } 
      xmlhttp.open("GET", "<?php echo base_url(); ?>index.php/admin_logins/ajaxGetInfo?date=" + date + "&&offset=" + offset, true); 
      xmlhttp.send(); 
     } 

метод контроллер для просмотра первой страницы Вида:

function meal() { 
    $data['message'] = $this->session->flashdata('message'); 
    $this->load->view('/admin_logins/meal_list', $data); 
} 

и способ управления для загрузки второго вида страницы с помощью Ajax вызова:

function ajaxGetInfo() { 

    $customDate = $this->input->get('date'); 
    $offset = $this->input->get('offset'); 
    $query_string = "SELECT m.id, e.emp_id, m.is_guest, m.num_of_guest, m.remarks 
    FROM meal m 
    LEFT JOIN employee e 
    ON e.id = m.emp_id 
    WHERE m.entry_date ='$customDate' "; 
    $query = $this->db->query($query_string); 

    //pagination codes 
    $config = array(); 
    $config['base_url'] = site_url('admin_logins/meal'); 
    $config['per_page'] = 10; 
    $config['uri_segment'] = 3; 
    $config['total_rows'] = $query->num_rows(); 
    $choice = $config['total_rows']/$config['per_page']; 
    $config['num_links'] = round($choice); 
    $this->pagination->initialize($config); 
    $page = ($offset) ? $offset : 0 ; 
    $conf = $config['per_page'];  

    $query_string2 = "SELECT m.id, e.emp_id, m.is_guest, m.num_of_guest, m.remarks 
    FROM meal m 
    LEFT JOIN employee e 
    ON e.id = m.emp_id 
    WHERE m.entry_date ='$customDate' 
    LIMIT $page, $conf "; 

    $query2 = $this->db->query($query_string2); 
    $dataByDate['info'] = $query2->result_array(); 
    //echo "<pre>"; 
    //print_r($dataByDate['info']); 
    //die(); 
    $dataByDate['links'] = $this->pagination->create_links(); 
    $this->load->view('admin_logins/ajaxIndex', $dataByDate); 
} 

Что/где не так в моем коде?

ответ

0

Вы проверили, какое значение возвращает значение $ offset, и если оно является правильным значением?

+0

Я проверил значение $ offset. Это верно. –

+0

Изменить $ config ['base_url'] = site_url на base_url – mdgeus

Смежные вопросы