如何在php中实现下一个按钮

时间:2013-07-02 09:52:55

标签: php mysql

我正在使用github中的jspaginator一次显示10条通知,每页显示5条通知。但是我没有提供任何NEXT按钮来获取用户请求的更多结果。所以我想实现它我自己。我有以下PHP代码 -

                $start=0;
                $end=10;
                $query='select * from notice order by id desc limit '.$start.','.$end.';';
                if($query_run=mysql_query($query))
                {
                  $query_num_rows=mysql_num_rows($query_run);
                if($query_num_rows==0)
                  {
                    echo '<h4>No Notices</h4>';
                  }else {
                    echo    '<div id="green-contents" class="contents" ">
                              <table id="mt" cellpadding="0" cellspacing="0" border="0" class="table">
                              <tr class="header">
                              <th>
                                Date Posted
                              </th>
                              <th width="55%">
                               title
                              </th>
                              <th>
                               Posted By
                              </th>
                              <th>
                                Branch
                              </th>
                                 <th>
                                Semester
                              </th>
                              </tr>';
                    for($i=0;$i<$query_num_rows;$i++)
                    {
                        echo '<tr>
                                 <td>'.mysql_result($query_run,$i,'posted_on').'</td>
                                 <td class="note"><h4><a href="view_notice.php?id='.
                                 mysql_result($query_run,$i,'id').'">';
                                 if(strlen(mysql_result($query_run,$i,'title'))>48)
                                    echo (substr(mysql_result($query_run,$i,'title'),0,45)).'.....';
                                  else
                                    echo mysql_result($query_run,$i,'title');
                        echo      '<td>'.mysql_result($query_run,$i,'posted_by').'</td>
                                 <td>'.mysql_result($query_run,$i,'branch').'</td>
                                 <td>'.mysql_result($query_run,$i,'semester').'</td>';
                    }
                    echo '</table>';
                  }
                }else
                echo mysql_error();

现在,如何更改$start$end并再次执行查询以获取下一个10个结果。

3 个答案:

答案 0 :(得分:1)

您需要动态start参数。因此,可以通过$_GET参数添加 http://example.com/filename.php?page=1 等网址。

您的脚本如下所示:

<?php

$batch = 10;
$page = (intval($_GET['page']) > 0) ? $_GET['page'] : 1; // set $page if it's a number greater than zero

$start = (($page - 1) * $batch);

$sql = "SELECT * FROM tbl LIMIT :offset, :limit";
$stmt = $db->prepare($sql);
$stmt->bindParam(':offset', $start, PDO::PARAM_INT);
$stmt->bindParam(':limit', $batch, PDO::PARAM_INT);
$stmt->execute();

$results = $stmt->fetchAll();

您会注意到我在上面的代码段中没有使用mysql_函数。原因有两方面:

  1. {@ 1}}函数系列已弃用,不应使用,而应使用MySQLiPDO等替代函数。

  2. PDO允许创建语句,其中数据由标记(mysql_)表示。这是为了避免在SQL语句中使用内联变量并避免SQL注入漏洞。

答案 1 :(得分:1)

您可以在表单中添加隐藏的输入

<input type="hidden" name="page" value="'.$_GET['page']+1.'>

然后是你的$ start,$ end vars

if (isset($_GET['page']))
{
 $start = $_GET['page'];
 $end = $_GET['page']+9;
}
else
{
 $start = 0;
 $end = 10;
}

答案 2 :(得分:0)

您可以在网址中传递下一页的值,例如notices.php?page=2,并使用点击代码$start

$page = isset($_GET["page"]) ? intval($_GET["page"]) : 1;
if (0 == $page) {
    $page = 1;
}

$start = 10 * ($page - 1);
$end = 10;