使用php mysql面临分页困难

时间:2015-04-15 04:05:47

标签: php mysql pagination

我正在使用php显示mysql数据库在表格中排列的结果,但我无法找到分页结果的方法,因为数据排列在表格中,因为某些行丢失并且作为网页将是动态的,因此用户将能够一次又一次地删除行并插入新行,因此我无法使用auto_increment值对我的结果进行分页。

以下是我的剧本:

<?php
    $mysql_session = mysql_query("SELECT * FROM session");
    $no_of_rows_session = mysql_num_rows($mysql_session);
    $msg_session='';
    $last_row = mysql_query("SELECT * from session ORDER BY id DESC LIMIT 1");
    $last_id = '';

    while($select_id_of_last_row = mysql_fetch_array($last_row)) {
        $last_id = $select_id_of_last_row['id'];
    }
?>



<?php echo $msg_session; ?>
<?php
    if($no_of_rows_session < 1) {
        $msg_session = 'No Session has been added yet';
    } else {
        for($i = 1; $i<=$last_id; $i++) {                   
            ${'mysql_session_every_single_query_' . $i} = mysql_query("SELECT * FROM session WHERE id LIKE '%$i%'");
            ${'mysql_existance_of_session_id_' . $i} = mysql_num_rows(${'mysql_session_every_single_query_' . $i});
            while(${'mysql_every_session_data_' . $i} = mysql_fetch_array(${'mysql_session_every_single_query_' . $i})){
                ${'id_session_' . $i} = ${'mysql_every_session_data_' . $i}['id'];
                ${'session_start_' . $i} = ${'mysql_every_session_data_' . $i}['start'];
                ${'session_end_' . $i} = ${'mysql_every_session_data_' . $i}['end'];
                echo "<table>";
                    echo "<tr id='tr_session_hover_" . $i . "'
                                class='tr_session_hover' 
                                onClick=\"document.location='session_edit.php?ss=${'session_start_' . $i}&se=${'session_end_' . $i}';\">
                            <td>" . ${'session_start_' . $i} . "-" . ${'session_end_' . $i} . "</td>
                        </tr>";
                echo "</table>";
            }
        }

    }     
?>

2 个答案:

答案 0 :(得分:0)

我认为你走错了路。当您选择某些订单条件并将其实施到表中时,这样的事情很简单 - 例如上次编辑或创建行的时间。之后,当你有页面长度和页面编号时,你必须使用SELECT的OFFSET / LIMIT子句,按标准排序 - 这样你就让MySQL引擎生成正确的页面。

答案 1 :(得分:0)

我有一个解决方案。 如果你也遇到这样的问题,并且只想继续使用变量(比如我):

假设你需要在一个页面上显示6个结果,并且你的auto_increment(假设一个名为id的列是你表中的auto_increment一个)值是常规的,那么你可以做的是,获取id的

的第6个元素

我假设你已经连接到phpmyadmin并选择了一个数据库

$no_of_results_per_page = 6;

if(isset($_GET['page_no'])) {
  $page_no = $_GET['page_no']; 
} else{
  $page_no = 1;

}


  $upper_limit = ($page_no - 1)*$no_of_result_per_page - 1;

if($page_no > 1){
  $mysql_getting_id_le = mysql_query("SELECT id FROM table LIMIT $upper_limit, 1");

  while($getting_id_last_elem = mysql_fetch_array($mysql_getting_id_le)) {
    $id_last_element = $getting_id_last_elem['id'];
  }
} else {
  $mysql_getting_id_le = mysql_query("SELECT id FROM table LIMIT 0, 1");

  while($getting_id_last_elem_p_1 = mysql_fetch_array($mysql_getting_id_le)) {
    $id_last_element = $getting_id_last_elem_p_1['id'];
$id_last_element = $id_last_element - 1;
  }
}

以上查询将帮助我们获取页面最后一个元素的ID

现在我们将创建按钮,以便从一个页面导航到另一个页面。

$final_mysql_query = mysql_query("SELECT * FROM table WHERE id > '%id_last_element%' LIMIT $no_of_results_per_page");

//Now, we can get all data limited to show no. of results you have defined per page using a loop

$total_results = mysql_query("SELECT * FROM table");

$total_results_count = mysql_num_rows($total_results);

$total_pages = ceil($total_results_count/$no_of_results_per_page);

$page_no = '';

for($i = 1; $i <= $total_pages; $i++) {
  $page_no .= "<a href='?page_no=" . $i . "'>" . $i . "</a>";
}