您的位置:首页 > 编程语言 > PHP开发

php 分页显示数据 post参数传递问题解决方法

2014-03-12 21:43 1006 查看
在进行php分页的时候可以正常显示分页页码如下图



但是当点击数字的时候,就会显示异常,页码消失

经过一番折腾感觉应该是点击一次之后参数传递方式的问题。找到一篇文章:php 分页显示数据 post参数传递问题解决方法

今日php实现显示数据分页,竟遇到类似如下问题

Notice: Undefined index: content in D:\Apache2.2\htdocs\pagefenye.php on line 18

琢磨半天,终得解决。

问题原因:因有post参出,点击诸如“下一页”等时,参数传递己变为get,而非post。
解决方案:

step1 使用$_REQUEST代替$_POST,$_REQUEST既可用于POST方法传递来的参数
也可用于GET方法传递的参数
step2 对form的post参数在换页时要重新传递

两个相关的文件贴一下:

<!--search.php:站内搜索函数--------------------->
<?php
/*session_start();
$search=$_REQUEST["search"];
$_SESSION["search"]=$search;
$keyword=$_REQUEST["keyword"];
$_SESSION["keyword"]=$keyword;*/
require_once("sys_conf.inc");
ini_set("error_reporting","E_ALL & ~E_NOTICE");
/**************************************************
/*功能:查询content字段包含$keyword的所有留言记录
/*输入:查询关键字
/*输出:查询数组
/**************************************************/
function search($keyword,$content)
{
$count=count($content);
$j=0;
$ArrSearch=array(); //结果数组
for ($i=0;$i<$count;$i++)
{
if (ereg($keyword,$content[$i]))	//判断cotent[$i]中是否含有$keyword关键字,如果有,则条件成立
{
//把关键字用红颜色突出显示,并放入结果数组
$ArrSearch[$j]=str_replace($keyword,"<font color=red><b>$keyword</b></font>",$content[$i]);
$j++;
}
}
return $ArrSearch;
}

/**************************************************
/*功能:查询content字段包含$keyword的所有留言记录的rid
/*输入:查询关键字
/*输出:rid数组
/**************************************************/
function searchid($keyword,$rid,$content)
{
$count=count($content);
$j=0;
$Arrid=array(); //结果数组
for ($i=0;$i<$count;$i++)
{
if (ereg($keyword,$content[$i]))	//判断cotent[$i]中是否含有$keyword关键字,如果有,则条件成立
{
$Arrid[$j]=$rid[$i];
$j++;
}
}
return $Arrid;
}

//初始化
$one_page_line=3; 	//每页的最大记录数
$content=array();		//数组,包含所有记录的content属性内容
$id=array();				//数组,包含所有记录的rid属性内容
$ArrSearch=array();	//数组,包含查询结果
$Arrid=array();			//数组,包含查询结果记录的编号

//查询数据库,获取$content值
$link_id=mysql_connect($DBHOST,$DBUSER,$DBPWD);
mysql_select_db($DBNAME);
$str="select rid,content from guestbook";
$result=mysql_query($str,$link_id);

//循环将数据库中值写入数组
$i=0;
while(list($rid,$con)=mysql_fetch_row($result))
{
$content[$i]=$con;
$id[$i]=$rid;
$i++;
}
mysql_close($link_id);

//调用search()函数,查询关键字
if (isset($_REQUEST["search"]) and isset($_REQUEST["keyword"]) and $_REQUEST["keyword"]!="")
{
$ArrSearch=search($_REQUEST["keyword"],$content);
$Arrid=searchid($_REQUEST["keyword"],$id,$content);
}
//输出全部数据
else
{
$ArrSearch=$content;
$Arrid=$id; //存储查询结果的所有主键rid
}
//print_r($ArrSearch);
//print_r($Arrid);
$count =count($ArrSearch);
?>


<!--查询结果显示-->
<?php
//session_start();
//ini_set("error_reporting","E_ALL & ~E_NOTICE");

include "search.php"

?>
<html>
<head>
<title>Search Inside</title>
</head>
<body>
<table width="68%" border="0">
<tr>
<td>
<?php
ini_set("error_reporting","E_ALL & ~E_NOTICE");
$int_page_count = $count; //Query Total
$int_page_num = ceil($int_page_count/$one_page_line); //Total pages
echo "<font color=#CC33FF>Paging:";
$search=$_REQUEST["search"];
$keyword=$_REQUEST["keyword"];

for ($i = 1;$i <= $int_page_num;$i++)
{
if ( isset($search) and isset($keyword) and $keyword!="")
echo "<a href='booklist.php?search=$search&keyword=$keyword&page=$i'> ".$i."</a>  ";
}
echo "</font>";
if (  isset($search) and isset($keyword) and $keyword!="")
{
echo "<br /><center>";
echo "Search result contained keywords <font color=red><b>".$_POST["keyword"]."</b></font> total <font color=red>".$count."</font></center>";
}
?>
</td>
<td>
<p align="right">Total<font color=red><?php echo " $count";?></font></p>
</td>
</tr>
</table>
<table width="68%" border="0" align="center">
<?php
if (isset($page) or $page=="")
{

$page=empty($_GET['page'])?1:$_GET['page'];
$begin_line=$int_page_count-($page-1)*$one_page_line;
if($begin_line<$one_page_line)
$one_page_line=$begin_line;
for ($j=$begin_line;$j>($begin_line-$one_page_line);$j--)
{
echo "<tr><td align=right colspan=2>";
echo "<a href=replylist.php?&recordid=".$Arrid[$j-1].">Scan reply</a> ";
echo "<a href=reply.php?task=reply&recordid=".$Arrid[$j-1].">Reply</a> ";
echo "<a href=update.php?recordid=".$Arrid[$j-1].">Edit</a> ";
echo "<a href=delete.php?recordid=".$Arrid[$j-1].">Delete</a> ";
echo "No.<font color=red>$j</font></td></tr>";
print_r ($ArrSearch[$j-1]);
}
}
?>
</table>
<p align=center><a href="#" onclick=history.back()>Back</a></p>
</body>
</html>

相关阅读:

PHP分页类--支持URL和POST两种

php分页不用get用post代码实例
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php
相关文章推荐