PHP – запрос MySQL с разбиением на страницы

Как я могу сделать сценарий разбивки на страницы для этого запроса MySQL и PHP.

if (isset($_GET['c'])) { $c = $_GET['c']; } $query = mysql_query("SELECT * FROM Categories WHERE category = '$c' "); WHILE($datarows = mysql_fetch_array($query)): $id = $datarows['id']; $category = $datarows['category']; $code = $datarows['code']; endwhile; $query2 = mysql_query("SELECT * FROM Games WHERE category = '$code' "); WHILE($datarows_cat = mysql_fetch_array($query2)): $title = $datarows_cat['title']; $description = $datarows_cat['description']; $imgurl = $datarows_cat['image_name']; $category = $datarows_cat['category']; $views = $datarows_cat['view_count']; $pagename = $datarows_cat['pagename']; $featured = $datarows_cat['featured']; if ($featured =="1") {$f = "<img src='http://my-site.com/images/star.png' width='13px' title='Featured Game' /> Featured"; } else {$f = "";} if(is_int($views/2)) { $views = $views / 2; } else { $views = $views / 2 + .5; } if (strlen($description) > 95) { $desc= substr($description,0,95); $desmod = "$desc...<br/><a href=\"http://my-site.com/$pagename#1\" title=\"$description\">- Read More</a>"; } else {$desmod = "$description";} echo "$f - <a href=\"http://my-site.com/$pagename\">$title - $desmod</a><br/>"; endwhile; 

И когда я посещаю http://my-site.com/categories/Action, например, код просматривает эту категорию в моей таблице категорий, а затем, когда он получает уникальный код для этой категории, он запускает другой запрос, чтобы найти все игры в другой таблице с этим кодом категории. В настоящее время, однако, у меня есть более 200 игр для одной категории, что приводит к большому количеству времени загрузки.

Спасибо за вашу помощь!

Прежде всего, узнайте, сколько игр существует для определенной категории

изменить линию

 $query2 = mysql_query("SELECT * FROM Games WHERE category = '$code' "); 

в

 $sql="SELECT * FROM Games WHERE category = '$code' "; $query_count=mysql_query($sql); 

Добавьте следующее после него

 $per_page =30;//define how many games for a page $count = mysql_num_rows($query_count); $pages = ceil($count/$per_page); if($_GET['page']==""){ $page="1"; }else{ $page=$_GET['page']; } $start = ($page - 1) * $per_page; $sql = $sql." LIMIT $start,$per_page"; $query2=mysql_query($sql); 

Затем отобразите количество страниц, где вы хотите

 <ul id="pagination"> <?php //Show page links for ($i = 1; $i <= $pages; $i++) {?> <li id="<?php echo $i;?>"><a href="linktoyourfile?c=<?php echo $c;?>&page=<?php echo $i;?>"><?php echo $i;?></a></li> <?php } ?> </ul> 

Используйте CSS для разбивки на страницы, это сделает трюк

 //database connation <?php $conn = new mysqli("localhost", "root", "","database_name"); ?> <!DOCTYPE html> <html>enter code here <head> <title>View Student Details</title> <h1 align="center"> Student Details </h1> <script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript" src="bootstrap/bootstrap.min.js"></script> <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css"> </head> <body> <div class="row"> <div class="col-sm-2"></div> <div class="col-sm-8"> <form> <table class="table table-striped"> <tr> <th>Sr.No.</th> <th>Student ID</th> <th>Student Name</th> <th>Class</th> <th>Gender</th> <th>Birth of Date</th> <th>Contact No.</th> <th>Action</th> </tr> <?php $count=0; if(isset($_GET['page_count'])) { $count=1; $page_count=$_GET['page_count']-1; $count=$page_count*10; } $q="SELECT * from student_detail LIMIT $count,10"; $result=$conn->query($q); $j=0; while($data=$result->fetch_array()) { $j=$j+1; ?> <tr> <td><?php echo $j ?></td> <td><?php echo $data['std_id'] ?></td> <td><?php echo $data['std_name'] ?></td> <td><?php echo $data['std_class'] ?></td> <td><?php echo $data['gender'] ?></td> <td><?php echo $data['bod'] ?></td> <td><?php echo $data['contact'] ?></td> <td> <div class="row"> <div class="col-sm-12"> <a href="delete_master.php?std_id=<?php echo $data['std_id']; ?>" class="btn btn-danger">Delete</a> <a href="update.php?std_id=<?php echo $data['std_id']; ?>" class="btn btn-danger">Update</a> </div> </div> </td> </tr> <?php } ?> </table> <ul class="pagination"> <?php $q="SELECT count(std_id) from student_detail"; $result=$conn->query($q); $data=$result->fetch_array(); $total=$data[0]; $total_page=ceil($total/10); if($total_page>1) { for($i=1;$i<=$total_page;$i++) { ?> <li class="active"><a href="view.php?page_count=<?php echo $i;?>" name="page_count" id="page_count"><?php echo $i; ?></a></li> <?php } } ?> </ul> </form> <div class="col-sm-2"></div> </div> </div> </body> </html> в //database connation <?php $conn = new mysqli("localhost", "root", "","database_name"); ?> <!DOCTYPE html> <html>enter code here <head> <title>View Student Details</title> <h1 align="center"> Student Details </h1> <script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript" src="bootstrap/bootstrap.min.js"></script> <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css"> </head> <body> <div class="row"> <div class="col-sm-2"></div> <div class="col-sm-8"> <form> <table class="table table-striped"> <tr> <th>Sr.No.</th> <th>Student ID</th> <th>Student Name</th> <th>Class</th> <th>Gender</th> <th>Birth of Date</th> <th>Contact No.</th> <th>Action</th> </tr> <?php $count=0; if(isset($_GET['page_count'])) { $count=1; $page_count=$_GET['page_count']-1; $count=$page_count*10; } $q="SELECT * from student_detail LIMIT $count,10"; $result=$conn->query($q); $j=0; while($data=$result->fetch_array()) { $j=$j+1; ?> <tr> <td><?php echo $j ?></td> <td><?php echo $data['std_id'] ?></td> <td><?php echo $data['std_name'] ?></td> <td><?php echo $data['std_class'] ?></td> <td><?php echo $data['gender'] ?></td> <td><?php echo $data['bod'] ?></td> <td><?php echo $data['contact'] ?></td> <td> <div class="row"> <div class="col-sm-12"> <a href="delete_master.php?std_id=<?php echo $data['std_id']; ?>" class="btn btn-danger">Delete</a> <a href="update.php?std_id=<?php echo $data['std_id']; ?>" class="btn btn-danger">Update</a> </div> </div> </td> </tr> <?php } ?> </table> <ul class="pagination"> <?php $q="SELECT count(std_id) from student_detail"; $result=$conn->query($q); $data=$result->fetch_array(); $total=$data[0]; $total_page=ceil($total/10); if($total_page>1) { for($i=1;$i<=$total_page;$i++) { ?> <li class="active"><a href="view.php?page_count=<?php echo $i;?>" name="page_count" id="page_count"><?php echo $i; ?></a></li> <?php } } ?> </ul> </form> <div class="col-sm-2"></div> </div> </div> </body> </html>