Heim  >  Artikel  >  php教程  >  Nachdruck: Paging-Prinzip, Paging-Code, Paging-Klassenproduktion

Nachdruck: Paging-Prinzip, Paging-Code, Paging-Klassenproduktion

WBOY
WBOYOriginal
2016-09-24 09:02:461023Durchsuche

Die Paging-Anzeige ist eine sehr verbreitete Methode zum Durchsuchen und Anzeigen großer Datenmengen und eines der am häufigsten verarbeiteten Ereignisse in der Webprogrammierung. Für Veteranen der Webprogrammierung ist das Schreiben dieser Art von Code so selbstverständlich wie Atmen, aber für Anfänger sind sie oft verwirrt über dieses Problem, deshalb habe ich diesen Artikel geschrieben, um dieses Problem im Detail zu erläutern.

1. Paging-Prinzip:
Bei der sogenannten Paging-Darstellung wird die Ergebnismenge in der Datenbank künstlich in Abschnitte unterteilt. Zur Anzeige sind zwei Anfangsparameter erforderlich:

Wie viele Datensätze pro Seite ($PageSize)?
Welche Seite ist die aktuelle Seite ($CurrentPageID)?

Geben Sie mir jetzt einfach einen weiteren Ergebnissatz und ich kann ein bestimmtes Ergebnis anzeigen.

Andere Parameter wie vorherige Seite ($PReviousPageID), nächste Seite ($NextPageID), Gesamtzahl der Seiten ($numPages) usw. können basierend auf den vorherigen Angaben ermittelt werden.

Wenn Sie am Beispiel der MySQL-Datenbank einen bestimmten Inhalt aus der Tabelle abfangen möchten, können Sie die SQL-Anweisung verwenden: select * from table limit offset, rows. Schauen Sie sich den folgenden Satz von SQL-Anweisungen an und versuchen Sie, die Regeln zu finden.

Die ersten 10 Datensätze: Wählen Sie * aus dem Tabellenlimit 0,10 aus.
Der 11. bis 20. Datensatz: Wählen Sie * aus dem Tabellenlimit 10,10.
Der 21. bis 30. Datensatz: Wählen Sie * aus dem Tabellenlimit 20,10
......
Dieser Satz von SQL-Anweisungen ist eigentlich die SQL-Anweisung zum Abrufen von Daten von jeder Seite der Tabelle, wenn $PageSize=10. Wir können eine solche Vorlage zusammenfassen:
select * from table limit ($CurrentPageID - 1) * $PageSize, $PageSize
Verwenden Sie diese Vorlage, um den entsprechenden Wert einzufügen und ihn mit dem obigen Satz von SQL-Anweisungen zu vergleichen, um zu sehen, ob dies der Fall ist. Nach der Lösung des wichtigsten Problems, wie man die Daten erhält, müssen nur noch die Parameter übergeben, die entsprechende SQL-Anweisung erstellt und dann mit PHP die Daten aus der Datenbank abgerufen und angezeigt werden.


2. Paginierungscodebeschreibung: fünf Schritte

Der Code ist vollständig erklärt und kann kopiert werden Verwenden Sie es direkt in Ihrem Notizblock

  1. Liste der Mitarbeiterinformationen
  2. //Informationen aller Emp-Tabellen anzeigen
  3. //1. Stellen Sie eine Verbindung zur Datenbank her
  4. $conn=mysql_connect('localhost','root','1234abcd') or die('Connection Database Error'.mysql_error());
  5. //2. Datenbank auswählen
  6. mysql_select_db('empManage');
  7. //3. Zeichensatz auswählen
  8. mysql_query('Namen utf8 festlegen');
  9. //4. SQL-Anweisung senden und das Ergebnis zur Verarbeitung erhalten
  10. //4.1 Pagling [Pagling zum Senden von zwei SQL-Anweisungen, eine zum Abrufen von $ Rowcount und die andere zum Abrufen des Paging-Ergebnisses durch das SQL-Limit. Wir erhalten also zwei Ergebnismengen. Denken Sie daran, sie bei der Benennung zu unterscheiden.
  11. Paging (vier Werte und zwei SQL-Anweisungen). ]
  12. $pageSize=3;//Wie viele Datensätze werden auf jeder Seite angezeigt
  13. $rowCount=0;//Wie viele Datensätze gibt es insgesamt
  14. $pageNow=1;//Welche Seite möchten Sie anzeigen
  15. $pageCount=0;//Wie viele Seiten gibt es insgesamt? [Es gibt vier Indikatoren für Paging, die alle unverzichtbar sind. Da $rowCount vom Server bezogen werden kann, kann der Anfangswert als
  16. angegeben werden
  17. Welche Seite möchte $pageNow anzeigen? Es ist am besten, den Wert auf 0 zu setzen. $pageSize gibt an, wie viele Datensätze auf jeder Seite angezeigt werden sollen.
  18. $pageCount=ceil($rowCount/$pageSize), da $rowCount einen Anfangswert von 0 haben kann, kann $pageCount natürlich auf 0 gesetzt werden. Vier Indikatoren, zwei 0, einer 1 und der andere ist die Website braucht. ]
  19. //4.15 Ändern Sie den Wert von $ PAGENOW entsprechend dem Paging-Link
  20. if(!empty($_GET['pageNow'])){
  21. $pageNow=$_GET['pageNow'];
  22.               }[Ändern Sie den Wert von $pageNow basierend auf dem Paging-Link. ]
  23. $sql='select count(id) from emp';
  24. $res1=mysql_query($sql);
  25. //4.11 Ermitteln Sie die Anzahl der Zeilen
  26. if($row=mysql_fetch_row($res1)){
  27.                    $rowCount=$row[0];                           
  28. }//[Holen Sie sich $rowCount, und wir kennen die beiden Indikatoren $pageCount. ]
  29. //4.12 Berechnen Sie, wie viele Seiten es gibt
  30. $pageCount=ceil($rowCount/$pageSize);
  31. $pageStart=($pageNow-1)*$pageSize;
  32. //4.13 SQL-Ergebnisse mit Paging senden
  33. $sql="select * from emp limit $pageStart,$pageSize";//[Paging wird basierend auf den beiden Werten (Startwert, Anzahl der Elemente pro Seite) nach dem Limit der $sql-Anweisung implementiert . und finden Sie diese beiden Werte.]
  34.         $res2=mysql_query($sql,$conn) or die('无法获取结果集'.mysql_error());
  35.         echo '';[        echo "
    ";]
  36. "
  37. ";        while($row=mysql_fetch_assoc($res2)){
  38.                 echo "
  39. < ;td>删除用户
    idNameKlasseE-MailGehalt< /th>删除用户修改用户
    {$row['id']}{$row['name']}{ $row['grade']}{$row['email']}{$row['salary']}修改用户";        }
  40.         echo '
  41. ';
  42.         //4.14打印出页码的超链接
  43.         for($i=1;$i<=$pageCount;$i ){
  44.                 echo "$i ";//[打印出页码的超链接]
  45.         
  46.         }
  47.         //5.释放资源,关闭连接
  48.         mysql_free_result($res2);
  49.         mysql_close($conn);
  50. ?>


三、简单分页类分享

        现在公布一个简单分类制作。只要理解了这个类的原理和步骤,其他复杂类也就能够触类旁通了数据库操作类代码:mysqli.func.php
      

  • // 数据库连接常量  
  • define('DB_HOST', 'localhost');  
  • define('DB_USER', 'root');  
  • define('DB_PWD', '');  
  • define('DB_NAME', 'guest');  
  •   
  • // 连接数据库  
  • Funktion conn()  
  • {  
  •     $conn = mysqli_connect(DB_HOST, DB_USER, DB_PWD, DB_NAME);  
  •     mysqli_query($conn, "setnamen utf8");  
  •     return $conn;  
  • }  
  •   
  • //获得结果集  
  • Funktion doresult($sql){  
  •    $result=mysqli_query(conn(), $sql);  
  •    return  $result;  
  • }  
  •   
  • //结果集转为对象集合  
  • Funktion dolists($result){  
  •     return mysqli_fetch_array($result, MYSQL_ASSOC);  
  • }  
  •   
  • function totalnums($sql) {  
  •     $result=mysqli_query(conn(), $sql);  
  •     return $result->num_rows;  
  • }  
  •   
  • // 关闭数据库  
  • Funktion geschlossenb()  
  • {  
  •    if (! mysqli_close()) {  
  •         exit('关闭异常');  
  •     }  
  • }  
  •   
  • ?>   

  • Paging-Implementierungscode:


    1. include 'mysqli.func.php';
    2. //Gesamtzahl der Datensätze
    3. $sql = "SELECT dg_id FROM tb_user ";
    4. $totalnums = totalnums($sql);
    5. //Anzahl der auf jeder Seite angezeigten Elemente
    6. $fnum = 8;
    7. //Anzahl der umgeblätterten Seiten
    8. $pagenum = ceil($totalnums / $fnum);
    9. // Seitenzahlkonstante
    10. @$tmp = $_GET['page'];
    11. //Böswilliges Umblättern verhindern
    12. if ($tmp > $pagenum)
    13. echo "<script>window.location.href='index.php'</script>";
    14. //Berechnen Sie den Startwert des Pagings
    15. if ($tmp == "") {
    16. $num = 0;
    17. } sonst {
    18. $num = ($tmp - 1) * $fnum;
    19. }
    20. // Abfrageanweisung
    21. $sql = „SELECT dg_id,dg_username FROM tb_user ORDER BY dg_id DESC LIMIT „,$fnum“;
    22. $result = doresult($sql);
    23. // Ausgabe durchqueren
    24. while (! ! $rows = dolists($result)) {
    25. echo $rows['dg_id']
    26. }
    27. // Link zum Umblättern
    28. for ($i = 0; $i < $pagenum; $i ) {
    29. echo "}
    30. ?>