试图在我的php代码中实现一个分页脚本(从我在网上找到的示例代码中采用) 该页面返回mysql查询的resaults。默认为空关键字'它返回数据库中的所有数据。 当所有数据都被返回但是当我通过关键字搜索过滤结果时,点击下一页'返回未过滤结果中的下一页(即刷新后搜索的关键字丢失)
这是相关的代码(希望它有意义):
块引用
$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!=&#39; 0&#39;按顺序排序&#34;); } if(!empty($ _ GET [&#39; searchkeywords&#39;])){$ Searchword = $ _ GET [&#39; searchkeywords&#39;]; }
if(!empty($_POST['searchkeywords'])) { $Searchword=$_POST['searchkeywords']; }
$ Totalresults = mysql_query(&#34; 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 &#39;%$搜索内容%&#39;或描述LIKE&#39;%$ Searchword%&#39;或StyleChoices 喜欢&#39;%$ Searchword%&#39;或节奏喜欢&#39;%$ Searchword%&#39;或跟踪LIKE &#39;%$搜索内容%&#39; )AND Mixed = true GROUP BY Track ORDER BY Track&#34; );
//检查是否有页码。如果没有,它将设置它 到第1页if(isset($ _ GET [&#39; pagenum&#39;])){$ pagenum = $ _GET [&#39;页次&#39;]; } else {$ pagenum = 1; }
//这里我们计算结果的数量 $ hits = mysql_num_rows($ Totalresults);
//这是每页显示的结果数 $ page_hits = 15;
//这告诉我们最后一页的页码 $ last = ceil($ hits / $ page_hits);
//这可确保页码不低于我们的一个或多个 最大页数 if($ pagenum&lt; 1) { $ pagenum = 1; } elseif($ pagenum&gt; $ last) { $ pagenum = $ last; }
//这将设置要在查询中显示的范围 $ max =&#39;限制&#39; 。($ pagenum - 1)* $ page_hits。&#39;,&#39; 。$ page_hits;
$ result = mysql_query(&#34; SELECT * 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 &#39;%$搜索内容%&#39;或描述LIKE&#39;%$ Searchword%&#39;或StyleChoices 喜欢&#39;%$ Searchword%&#39;或节奏喜欢&#39;%$ Searchword%&#39;或跟踪LIKE &#39;%$搜索内容%&#39; )AND Mixed = true GROUP BY Track ORDER BY Track $ max&#34; );
回声&#34;追踪 - 艺术家描述下载&#34;;$颜色=&#34; 1&#34 ;;
while($ row = mysql_fetch_array($ result)){$ SelectedStyles = 阵列(); $履带= $行[&#39;轨道&#39;]; $ SelectedStylesQuery = mysql_query(&#34; SELECT StyleChoices FROM ppl_tracks LEFT JOIN TrackStyle ON ppl_tracks.RECNO = TrackStyle.TrackID LEFT JOIN StyleTable ON TrackStyle.StyleID = StyleTable.ID WHERE ppl_tracks.Track =&#39; $ Track&#39;&#34;); while($ row1 = mysql_fetch_array($ SelectedStylesQuery)){ $ SelectedStyles [] = $ row1 [StyleChoices]; } $ SelectedMoods = array(); $ SelectedMoodsQuery = mysql_query(&#34; SELECT MoodChoices FROM ppl_tracks LEFT JOIN TrackMood ON ppl_tracks.RECNO = TrackMood.TrackID LEFT JOIN MoodTable在TrackMood.MoodID = MoodTable.ID WHERE ppl_tracks.Track =&#39; $轨道&#39;&#34);而($ row2 = mysql_fetch_array($ SelectedMoodsQuery)){ $ SelectedMoods [] = $ row2 [MoodChoices]; sort($ SelectedMoods);排序($ SelectedStyles); $ stringS = implode(&#34;,&#34;,$ SelectedStyles); $ stringM = implode(&#34;,&#34;,$ SelectedMoods);
if($ color == 1){echo&#34;&#34 ;;回声&#34;&#34; 。 $ row [&#39; Track&#39;]。 &#34; - &#34; 。 ucwords($ row [&#39;艺术家&#39;])。 &#34;&#34 ;;回声&#34;&#34; 。 $ stringM。 &#34;
&#34; $字符串&#34;&#34 ;;回声&#34;&#34; 。 $ txt1。$ row [&#39; FileName&#39;]。$ txt2。 &#34;&#34 ;;回声&#34;&#34; 。 。$ txt10a $行[&#39;文件名&#39]。$ txt10d&#34;&#34 ;; echo&#34;&#34 ;; $颜色=&#34; 2&#34 ;; }else {echo&#34;&#34 ;;回声&#34;&#34; 。 $ row [&#39; Track&#39;]。 &#34; - &#34; 。 ucwords($ row [&#39;艺术家&#39;])。 &#34;&#34 ;;回声&#34;&#34; 。 $ stringM。 &#34;
&#34; $字符串&#34;&#34 ;;回声&#34;&#34; 。 $ txt1。$ row [&#39; FileName&#39;]。$ txt2。 &#34;&#34 ;;回声&#34;&#34; 。 。$ txt10a $行[&#39;文件名&#39]。$ txt10d&#34;&#34 ;; echo&#34;&#34 ;; $颜色=&#34; 1&#34 ;;}} echo&#34;&#34;;
//这会向用户显示他们所在的页面以及总数 页
回声&#34; - $ $ pagenum $ last--&#34 ;; //首先我们检查一下 在第一页。如果我们是,那么我们不需要链接到前一个 页面或第一页所以我们什么都不做。如果我们不是,那么我们就会生成 链接到第一页和上一页。
if($ pagenum == 1)
{
}
其他
{echo&#34; &lt; -First&#34 ;; echo&#34; - &#34 ;; $ previous = $ pagenum-1; echo&#34; &lt; -Previous&#34 ;; }
$计数器= 1; while($ counter&lt; = $ last) { if($ counter == $ pagenum) { echo&#34; - &#34 ;; echo&#34; $ counter&#34 ;; echo&#34; - &#34 ;; }
else { echo " - "; echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$counter'>$counter</a> "; echo " - "; } $counter = $counter + 1; }
//这与上面相同,只检查我们是否在最后 页面,然后生成下一个和最后一个链接
if($ pagenum == $ last)
{
}
else {$ next = $ pagenum + 1; echo&#34;下一步 - &gt; &#34 ;; echo&#34; - &#34 ;; echo&#34;最后 - &gt;&gt; &#34 ;; } mysql_close($ con); ?&GT;
答案 0 :(得分:2)
每次进入新页面时都会重新加载页面,因此您需要再次将搜索词传递到页面中。最简单的方法是将您的链接更新为以下内容:
echo " <a href='{$_SERVER['PHP_SELF']}?searchkeywords=" . $_REQUEST["searchkeywords"] . "&pagenum=$counter'>$counter</a> ";
$ _ REQUEST将处理$ _POST和$ _GET变量,但您可能希望以自己的方式执行此操作。简单地说,您只需将搜索关键字传回您的网址
即可