PHP中的下一个和上一个

时间:2011-10-20 21:44:00

标签: php mysql

我不确定是否有人之前做过类似事情。

这是场景:我将mysql结果加载到PHP数组中,然后将其添加到会话中。我希望能够按两个按钮(上一个/下一个)来浏览结果。这是可行的吗?

这是我的代码:

include('config.php');

$con = mysql_connect($host, $username, $password); 

if(!$con)
{
    die('Could not connect: ' . mysql_error()); 
}

mysql_select_db('members', $con) or die(mysql_error());

$sql = "SELECT * FROM people where status like 'married' ";  
$result = mysql_query($sql);

while($row = mysql_fetch_array($result))
{
    $result_array[] = $row['id'];
}

return $result_array;

session_start();
$_SESSION['theResult'] = $result_array; 

mysql_close($con);

2 个答案:

答案 0 :(得分:0)

您至少需要两个会话变量:

  1. 数组列表
  2. 索引(偏移)计数器
  3. (可选)“每页项目数”计数器,但这可以是硬编码的
  4. 从会话中的一系列项目开始,索引为0.“下一步”按钮将偏移量增加N(其中N是页面上显示的项目数)。 上一个减少它。 (一直检查以确保我们有足够的物品来制作开关)。因此,例如,如果您有一个包含10个项目的列表,并且我们希望每页显示三个项目:

    $_SESSION['item'] = array('a','b','c','d','e','f','g','h','i','j');
    $_SESSION['offset'] = 0;
    $itemsPerPage = 3;
    

    对next / prev的任何调用都会将$_SESSION['offset']更改为$itemsPerPage金额(正面或负面)。然后,显示项目是一个问题:

    $end = $_SESSION['offset'] + $itemsPerPage;
    if ($end >= sizeof($_SESSION['items']))
    {
      // never go past the number of items we have
      $end = sizeof($_SESSION['items']) - 1;
    }
    for ($i = $_SESSION['offset']; $i < $end; $i++){
      //output $_SESSION['items'][$i];
    }
    

    对于单个项目显示,$itemsPerPage变得没有实际意义,您需要跟踪的是$_SESSION['offset']并在会话数组中显示该存储偏移量的项目。 e.g。

    $currentItem = $_SESSION['offset'];
    
    //output $_SESSION['items'][$currentItem];
    

答案 1 :(得分:0)

未经测试但是会有这样的工作吗?

$_SESSION["current"] = $_SESSION["current"] || 0;
if(isset($_POST["move"])) {
   if($_POST["move"] == "prev") {
        echo $_SESSION['theResult'][$_SESSION["current"] == 0 ? 0 : $_SESSION["current"]--];
   } else if($_POST["move"] == "next") {
        echo $_SESSION['theResult'][$_SESSION["current"] == count($_SESSION['theResult'])-1 ? count($_SESSION['theResult'])-1 : $_SESSION["current"]++];
   }

}