2012-04-02 5 views
0

Diese für den Controller-Snippet ist,Nicht in der Lage, durch Aufzeichnungen Paginieren

function email($start = 0) { 

    $result = $this -> admintools -> get_email_errors(); 
    if ($result) { 
     $data['email'] = $result; 
    } 

    $data['header'] = $this -> load -> view('includes/header', '', true); 
    $data['footer'] = $this -> load -> view('includes/footer', $data, true); 
    $data['menu_system_errors'] = $this -> load -> view('includes/menu_system_errors', $data, true); 

    //$config['total_rows'] = $this -> db -> query($query); 
    $config['base_url'] = '/admin/email'; 
    $config['total_rows'] = 1000; 
    $config['per_page'] = 10; 
    $config['use_page_numbers'] = TRUE; 

    for ($i = $start; $i < $start + $config['per_page']; $i++) { 
     if (isset($data_paging[$i])) { 
      $data['email']= $data_paging[$i]; 
     } 
    } 

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

    $this -> load -> view('/admin/email', $data); 

} 

und dies ist die Ansicht,

<?=$header 
?> 
<?=$menu_system_errors 
?> 

<style> 
    .alpha-link { 
     font-size: 22px; 
    } 

</style> 
<h1>System Errors EMail</h1> 
<table> 
    <thead> 
     <tr> 

      <th>Marketer ID</th> 
      <th></th> 
      <th>IP </th> 

      <th>Received Date</th> 
      <th>From Domain</th> 
      <th>Subject</th> 

     </tr> 
    </thead> 
    <? foreach ($systemerrors_email as $systemerror) { 
    ?> 
    <tr> 
     <td><?=$systemerror->marketerID 
     ?></td> 
     <td><?=$systemerror->ip 
     ?></td> 

     <td></td> 
     <td><?=$systemerror->received 
     ?></td> 
     <td><?=$systemerror->fromDomain 
     ?></td> 
     <td><?=$systemerror->subject 
     ?></td> 

    </tr> 
    <? }?> 
</table> 
<?echo $this -> pagination -> create_links();?> 

Das Problem ist es, die Paginierung Links erstellt, zeigt aber die gleiche notieren, wie nur 10 Reihen aber nicht ganz von ihnen. Gibt es ein Problem?

Ich bekomme die Datensätze durch eine Abfrage mit SELECT und JOIN.

+0

Normalerweise paginieren Sie auf Datenbankebene, so dass Sie nicht viele Zillionen von Datensätzen abrufen und alle außer der X-pro-Seite, die Sie anzeigen möchten, wegwerfen. –

+0

Sie sollten eine LIMIT-Klausel in Ihre mySQL-Abfrage einfügen und die Offset-Funktion verwenden. –

Antwort

1

Sie müssen wissen, welche Config-Tasten was tun, um die Paginierung zu aktivieren.

$config['total_rows'] definiert die Gesamtanzahl der Zeilen, die angezeigt werden sollen;

$config['per_page'] definiert, wie viele pro Seite angezeigt werden sollen.

Der Grund, warum Sie 10 Ergebnisse sehen, ist, weil Ihr per_page Wert auf 10 gesetzt ist, wenn Sie mehr wollen, ändern Sie es auf den gewünschten Wert. Sollte nicht auch Ihre $start Variable in Ihrem Controller auf $this->uri->segment(3) eingestellt sein? Da der URL-Parameter verwendet wird, ist es nicht erlaubt, dass die Schleife vom nächsten Teil der Zeilen aus beginnt. Sie zwingen ihn im Grunde, die ersten zehn Abfragen anzuzeigen. Wenn Sie diese Variable so festlegen, dass sie auf etwas Dynamisches angewiesen ist, können Sie andere Daten abrufen.