У меня есть поиск с разбиением на страницы, функция поиска работает нормально, а разбиение на страницы также отлично работает, но моя реальная проблема заключается в том, что я не знаю, как объединить эти два. Каждый раз, когда я пытаюсь выполнить поиск, результат поиска показывается, но разбиение на страницы не работает нормально. Пожалуйста, помогите мне в этом вопросе. Я не знаю, с чего начать.
У меня есть этот код:
<?php $con = mysql_connect("localhost","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("region_survey", $con); $sql="SELECT * FROM municipality"; if(isset($_POST['search'])){ $search_term=mysql_real_escape_string($_POST['search_box']); $sql .= " WHERE province_id LIKE '%{$search_term}%' "; } $query=mysql_query($sql) or die (mysql_error()); ?> <form name="search_form" method="POST" action=""> Search:<input type="text" name="search_box" value="" /> <input type="submit" name="search" value="search the table" /> </form> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <?php //Include the PS_Pagination class include('ps.php'); //Connect to mysql db $conn = mysql_connect('localhost','root',''); if(!$conn) die("Failed to connect to database!"); $status = mysql_select_db('region_survey', $conn); if(!$status) die("Failed to select database!"); $sql = 'SELECT * FROM municipality'; //Create a PS_Pagination object $pager = new PS_Pagination($conn, $sql, 15, 17); //The paginate() function returns a mysql result set for the current page $rs = $pager->paginate(); ?> <?php $con = mysql_connect("localhost","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); } //Count total number of records after search mysql_select_db("region_survey", $con); if(isset($_POST['search'])){ $search_term=mysql_real_escape_string($_POST['search_box']); $sql="SELECT * FROM municipality WHERE province_id LIKE '%$search_term%'"; } $result = mysql_query($sql, $con); $row = mysql_num_rows($result); echo "Total Number: "; echo $row; ?> <table border="1" cellpadding="0" cellspacing="0" id="resultTable"> <tr> <th> <strong>ID</strong> </th> <th> <strong>Province ID</strong> </th> <th> <strong>Municipality Name</strong> </th> </tr> <?php while($row = mysql_fetch_array($query)) { ?> <tr> <td> <?php echo $row["id"]; ?> </td> <td> <?php echo $row["province_id"]; ?></td> <td> <?php echo $row["municipality_name"]; ?></td> <td><input name="selector[]" type="checkbox" id="checkbox[]" value="<?php echo $row['id'];?>"></td> <td><a href="update.php<?php echo '?id='.$row['id']; ?>">Edit</a> </td> </tr> <?php } ?> </table> <?php //Display the navigation //echo $pager->renderFullNav(); echo '<div style="text-align:center">'.$pager->renderFullNav().'</div>'; ?> </body> </html>
Страницы будут иметь URL, например example.com/search/term/?page=2
(или example.com/search.php?term=xyz&page=2
, неважно, перенаправляете ли вы URL-адреса).
В PHP тогда будет что-то вроде:
$pagelimit = 10; // records per page $page = isset($_GET['page']) ? (int)$_GET['page'] : 1; // set current page
И LIMIT
с OFFSET
в вашем SQL-запросе:
$sql = "SELECT * FROM municipality WHERE province_id LIKE '%$search_term%' LIMIT " . ($page - 1) * $pagelimit . ", " . $pagelimit;