【问题标题】:pagination in php and keeping resultsphp中的分页并保留结果
【发布时间】:2016-12-29 18:11:09
【问题描述】:

尝试在我的 php 代码中实现分页脚本(取自我在网上找到的示例代码) 该页面返回 mysql 查询的结果。默认是一个空的“关键字”,它返回数据库中的所有数据。 在返回所有数据时分页工作成功,但是当我通过关键字搜索过滤结果时,单击“下一页”会在未过滤的结果中返回下一页(即搜索的关键字在刷新中丢失)

这是相关代码(希望有意义):

块引用

    $txt1='<A HREF="/memimomedia/music/128kb/';
    $txt2='" ><IMG src="/Save.png" width="24" height="24" align="middle" border="0"></A>';

    $txt9a='<a href="';
    $txt9b='" target="_blank">';
    $txt9c='</a>';

    $txt10a='<audio src="./128kb/';        
    $txt10d='" controls></audio>';


if(empty($_POST['searchkeywords']) && empty($_GET['searchkeywords']))     { $result = mysql_query("SELECT *

FROM ppl_tracks WHERE Mixed !='0' ORDER BY Track"); } if(!empty($_GET['searchkeywords'])) { $Searchword=$_GET['searchkeywords']; }

if(!empty($_POST['searchkeywords']))  { $Searchword=$_POST['searchkeywords']; }

$Totalresults = mysql_query("SELECT Track FROM (ppl_tracks LEFT JOIN TrackStyle ON ppl_tracks.RECNO = TrackStyle.TrackID LEFT JOIN StyleTable ON TrackStyle.StyleID = StyleTable.ID) LEFT JOIN TrackMood ON ppl_tracks.RECNO = TrackMood.TrackID LEFT JOIN MoodTable ON TrackMood.MoodID = MoodTable.ID WHERE (MoodChoices LIKE '%$Searchword%' OR 描述 LIKE '%$Searchword%' OR StyleChoices LIKE '%$Searchword%' OR Tempo LIKE '%$Searchword%' OR Track LIKE '%$Searchword%' ) AND Mixed =true GROUP BY Track ORDER BY Track" );

//这会检查是否有页码。如果没有,它将设置它 到第 1 页 if(isset($_GET['pagenum'])) { $pagenum = $_GET['pagenum']; } 其他 { $pagenum = 1; }

//这里我们统计结果的个数 $hits = mysql_num_rows($Totalresults);

//这是每页显示的结果数 $page_hits = 15;

//这告诉我们最后一页的页码 $last = ceil($hits/$page_hits);

//这确保页码不低于一,或多于我们的 最大页数 如果 ($pagenum $last) { $pagenum = $last; }

//这设置在我们的查询中显示的范围 $max = 'limit' .($pagenum - 1) * $page_hits .',' .$page_hits;

$result = mysql_query("SELECT * FROM (ppl_tracks LEFT JOIN TrackStyle ON ppl_tracks.RECNO = TrackStyle.TrackID LEFT JOIN StyleTable ON TrackStyle.StyleID = StyleTable.ID) 左加入 TrackMood ON ppl_tracks.RECNO = TrackMood.TrackID LEFT JOIN MoodTable ON TrackMood.MoodID = MoodTable.ID WHERE (MoodChoices LIKE '%$Searchword%' OR 描述 LIKE '%$Searchword%' OR StyleChoices LIKE '%$Searchword%' OR Tempo LIKE '%$Searchword%' OR Track LIKE '%$Searchword%' ) AND Mixed =true GROUP BY Track ORDER BY Track $max" );

echo " 跟踪 - 艺术家描述下载";

$color="1";

while($row = mysql_fetch_array($result)) { $SelectedStyles = 大批(); $Track=$row['Track']; $SelectedStylesQuery = mysql_query(" 从 ppl_tracks 中选择 StyleChoices LEFT JOIN TrackStyle ON ppl_tracks.RECNO = TrackStyle.TrackID LEFT JOIN StyleTable ON TrackStyle.StyleID = StyleTable.ID WHERE ppl_tracks.Track='$Track'"); 而($row1 = mysql_fetch_array($SelectedStylesQuery)) { $SelectedStyles[] = $row1[StyleChoices]; } $SelectedMoods = 数组(); $SelectedMoodsQuery = mysql_query(" 选择 MoodChoices FROM ppl_tracks LEFT JOIN TrackMood ON ppl_tracks.RECNO = TrackMood.TrackID LEFT JOIN MoodTable ON TrackMood.MoodID = MoodTable.ID WHERE ppl_tracks.Track='$Track'"); while($row2 = mysql_fetch_array($SelectedMoodsQuery)) { $SelectedMoods[] = $row2[MoodChoices]; } 排序($SelectedMoods);排序($选定样式); $stringS= implode(", ", $SelectedStyles); $stringM= implode(", ", $SelectedMoods);

if($color==1) { echo "";回声“”。 $row['Track'] 。 “——”。 ucwords($row['Artist']) 。 "";回声“”。 $字符串M 。 "
".$stringS."";回声“”。 $txt1.$row['FileName'].$txt2 。 "";回声“”。 $txt10a.$row['FileName'].$txt10d.""; 回声“”; $color="2"; }

else { 回声 "";回声“”。 $row['Track'] 。 “——”。 ucwords($row['Artist']) 。 "";回声“”。 $字符串M 。 "
".$stringS."";回声“”。 $txt1.$row['FileName'].$txt2 。 "";回声“”。 $txt10a.$row['FileName'].$txt10d.""; 回声“”; $color="1";}

} 回声“”;

// 这会显示用户他们在哪个页面,以及他们的总数 页面

echo " --page $pagenum of $last--

"; // 首先我们检查我们是否 在第一页。如果我们是,那么我们不需要指向上一个的链接 page 或第一页,所以我们什么都不做。如果我们不是,那么我们生成 链接到第一页和上一页。

如果 ($pagenum == 1)

{

}

否则

{ echo "

$counter=1;而 ( $counter

  else

    {
  echo " - ";
  echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$counter'>$counter</a> ";
  echo " - ";
    } $counter = $counter + 1; }

//这和上面一样,只检查我们是否在最后一个 页面,然后生成 Next 和 Last 链接

如果 ($pagenum == $last)

{

}

否则 { $next = $pagenum+1;回声“下一个->”;回声“—— "; echo " 最后->> "; } mysql_close($con); ?>

【问题讨论】:

  • 请努力格式化您的代码。这是不可读的

标签: php mysql pagination


【解决方案1】:

您每次进入新页面时都会重新加载页面,因此您需要再次将搜索词传递到页面中。最简单的方法是将分页链接更新为以下内容:

echo " <a href='{$_SERVER['PHP_SELF']}?searchkeywords=" . $_REQUEST["searchkeywords"] . "&pagenum=$counter'>$counter</a> ";

$_REQUEST 将同时处理 $_POST 和 $_GET 变量,但您可能希望以自己的方式执行此操作。简而言之,您只需将搜索关键字传递回您的网址

【讨论】:

    猜你喜欢
    • 2011-07-04
    • 2012-01-16
    • 2011-06-30
    • 2017-05-02
    • 2012-05-19
    • 2012-09-05
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    相关资源
    最近更新 更多