面临使用php mysql分页的困难

面临使用php mysql分页的困难,php,mysql,pagination,Php,Mysql,Pagination,我正在使用php显示mysql数据库表中排列的结果,但我找不到一种方法来分页我的结果,因为数据排列在表中,而且有些行丢失,而且由于网页是动态的,所以用户可以一次又一次地删除行并插入新行,因此,我无法使用auto_increment值对结果进行分页 以下是我的脚本: <?php $mysql_session = mysql_query("SELECT * FROM session"); $no_of_rows_session = mysql_num_rows($mysql_s

我正在使用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>";
            }
        }

    }     
?>


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

我有一个解决方案。 如果您也面临此类问题,并且只想处理变量(如我):

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

我假设您已经连接到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>";
}
$final\u mysql\u query=mysql\u query(“从id>'%id\u last\u element%'的表中选择*限制每页$no\u个结果”);
//现在,我们可以使用循环将所有数据限制为显示每页定义的结果数
$total_results=mysql_查询(“从表中选择*);
$total\u results\u count=mysql\u num\u行($total\u results);
$total_pages=ceil($total_results_count/$no_of_results_/页);
$page_no='';

对于($i=1;$i为什么到处都使用变量?我将通过GET方法在另一个脚本中使用这些变量。我还找到了一种对结果进行分页的方法,一旦我确认我所想的方法有效,我将回答这个问题。创建一个包含每个iter的所有存储数据的数组不是更明智吗这并不能回答你的问题,但是回音和线条不应该在你的循环的外面吗?哦,是的,谢谢@EamonnGormley。对不起,先生,但是我在正确的方向上实现了我想要实现的目标。