长篇文章分页显示的代码要怎么写???我写的如下,但是会出现乱码,点击下一页就没有内容显示,要怎么修改?
         <?phpif(isset($_GET["now_page"]))
{
$now_page = $_GET["now_page"];
$now_page = intval($now_page);
}
if($now_page==""||$now_page<1)
{
$now_page = 1;
}
$query_1=mysql_query("select * from tb_xxgk ",$conn);
while($myrow_1=mysql_fetch_array($query_1)) 
                         $info = $myrow_1[content];//信息内容
$each_page_save_words_num = 1000;//每$each_page_save_words_num个字换页
$count_words  = mb_strlen($info,'UTF-8');//字符统计
$count_page = ceil($count_words/$each_page_save_words_num);//总页码
//开始字数:
$start_words = ($now_page-1)*$each_page_save_words_num;
//输出信息:/* 
Utf-8、gb2312都支持的汉字截取函数 
cut_str(字符串, 截取长度, 开始长度, 编码); 
编码默认为 utf-8 
开始长度默认为 0 
*/ 
 
function cut_str($string,$start = 0, $sublen , $code = 'UTF-8') 

    if($code == 'UTF-8') 
    { 
        $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/"; 
        preg_match_all($pa, $string, $t_string); 
 
        if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen)); 
        return join('', array_slice($t_string[0], $start, $sublen)); 
    } 
    else 
    { 
        $start = $start*2; 
        $sublen = $sublen*2; 
        $strlen = strlen($string); 
        $tmpstr = ''; 
 
        for($i=0; $i< $strlen; $i++) 
        { 
            if($i>=$start && $i< ($start+$sublen)) 
            { 
                if(ord(substr($string, $i, 1))>129) 
                { 
                    $tmpstr.= substr($string, $i, 2); 
                } 
                else 
                { 
                    $tmpstr.= substr($string, $i, 1); 
                } 
            } 
            if(ord(substr($string, $i, 1))>129) $i++; 
        } 
        if(strlen($tmpstr)< $strlen ) 
{
//$tmpstr.= "..."; 
        }
return $tmpstr; 
    } 

 
//$str = "abcd需要截取的字符串"; 
//echo cut_str($str, 8, 0, 'gb2312'); 
$out =  cut_str($info,$start_words,$each_page_save_words_num ,'UTF-8'); 
//输出信息:完毕
echo $out.'<br/>';//分页处理
$show_page = 5;//显示5个页码
$url = "fy.php";//当前的文件名
//$last_page:上一页
//$next_page:下一页
//上一页
if($now_page>1)
{
$last_page = $now_page -1;
}
else
{
$last_page = 1;
}
//下一页
if($now_page<$count_page)
{
$next_page = $now_page +1;
}
else
{
$next_page = $count_page;
}
if($count_page<=$show_page)
{

$start = 1;
$end = $count_page;
}
else
{
if($now_page<=($show_page+1)/2)
{
$start = 1;
$end = $show_page;
}
else if($now_page>($count_page-($show_page+1)/2))
{
$start =  $count_page - $show_page+1;
$end = $count_page;
}
else
{
$start =  $now_page - ($show_page-1)/2;
$end = $now_page + ($show_page-1)/2;
}
}
$page = "<a href='".$url."?now_page=1'>首页</a> ";
$page .= "<a href='".$url."?now_page=".$last_page."'>上一页</a> ";
//echo $start.'<br/>';
//echo $end.'<br/>';
for($i=$start;$i<=$end;$i++)
{
if($i==$now_page)
{
$page .= "<a style=\"color:#ff0000;\" href='".$url."?now_page=".$i."'>".$i."</a> ";//当前页颜色变红
}
else
{
$page .= "<a href='".$url."?now_page=".$i."'>".$i."</a> ";
}
//echo $page.'<br/>';
}
$page .= "<a href='".$url."?now_page=".$next_page."'>下一页</a> ";
$page .= "<a href='".$url."?now_page=1".$count_page."'>尾页</a> ";
echo $page;
?>

解决方案 »

  1.   

    刚测试了,你的分页代码是没有问题的,问题的原因在于,你的
    while($myrow_1=mysql_fetch_array($query_1)) 这句话后面的内容应该用{ }包含起来,否者不会执行循环的。
    另外,把function放到最外边吧。帮你修正下,你自己测试下。大致是这样的
    <?php
    function cut_str($string,$start = 0, $sublen , $code = 'UTF-8'){ 
      //函数的代码放到最前面。
    }if(isset($_GET["now_page"])){
      $now_page = $_GET["now_page"];
      $now_page = intval($now_page);
    }
    if($now_page==""||$now_page<1){
      $now_page = 1;
    }
    $query_1=mysql_query("select * from tb_xxgk ",$conn);
    while($myrow_1=mysql_fetch_array($query_1)) {
    //后面的代码放到这里大括号里。
    }
      

  2.   

    附上用你的代码的测试代码结果。  <?php
      
      function cut_str($string,$start = 0, $sublen , $code = 'UTF-8'){ 
        if($code == 'UTF-8'){ 
           $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/"; 
           preg_match_all($pa, $string, $t_string); 
     
           if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen)); 
           return join('', array_slice($t_string[0], $start, $sublen)); 
      } 
      else{ 
      $start = $start*2; 
      $sublen = $sublen*2; 
      $strlen = strlen($string); 
      $tmpstr = ''; 
     
      for($i=0; $i< $strlen; $i++){ 
        if($i>=$start && $i< ($start+$sublen)){ 
          if(ord(substr($string, $i, 1))>129){ 
             $tmpstr.= substr($string, $i, 2); 
           } 
          else{ 
             $tmpstr.= substr($string, $i, 1); 
          } 
        } 
        if(ord(substr($string, $i, 1))>129) $i++; 
      } 
      if(strlen($tmpstr)< $strlen){
      }
    return $tmpstr; 


      if(isset($_GET["now_page"])){
       $now_page = $_GET["now_page"];
       $now_page = intval($now_page);
    }
    if($now_page==""||$now_page<1){
       $now_page = 1;
    }
    $info = "adsfaefadfeafadsfefasafi239asjf93asdiofjioaksdfj90asdjiojeioiojcaEIAZNIAEFNIASDFIEFNIASDFNAWEOFI912JKISDFEIANFIEFANIDFEIADIFENIADIFEsdfffffffffffasdfefef";//信息内容
    $each_page_save_words_num = 30;//每$each_page_save_words_num个字换页
    $count_words = mb_strlen($info,'UTF-8');//字符统计
    $count_page = ceil($count_words/$each_page_save_words_num);//总页码
    //开始字数:
    $start_words = ($now_page-1)*$each_page_save_words_num;$out = cut_str($info,$start_words,$each_page_save_words_num ,'UTF-8'); 
    //输出信息:完毕
    echo $out.'<br/>';//分页处理
    $show_page = 5;//显示5个页码
    $url = "test.php";//当前的文件名if($now_page>1){
       $last_page = $now_page -1;
    }
    else{
       $last_page = 1;
    }
    //下一页
    if($now_page<$count_page){
       $next_page = $now_page +1;
    }
    else{
       $next_page = $count_page;
    }
    if($count_page<=$show_page){
       $start = 1;
       $end = $count_page;
    }
    else{
      if($now_page<=($show_page+1)/2){
        $start = 1;
        $end = $show_page;
      }
      else if($now_page>($count_page-($show_page+1)/2)){
        $start = $count_page - $show_page+1;
        $end = $count_page;
      }
      else{
        $start = $now_page - ($show_page-1)/2;
        $end = $now_page + ($show_page-1)/2;
      }
    }
    $page = "<a href='".$url."?now_page=1'>首页</a> ";
    $page .= "<a href='".$url."?now_page=".$last_page."'>上一页</a> ";
    //echo $start.'<br/>';
    //echo $end.'<br/>';
    for($i=$start;$i<=$end;$i++){
      if($i==$now_page){
        $page .= "<a style=\"color:#ff0000;\" href='".$url."?now_page=".$i."'>".$i."</a> ";//当前页颜色变红
      }
      else{
        $page .= "<a href='".$url."?now_page=".$i."'>".$i."</a> ";
      }
    }
    $page .= "<a href='".$url."?now_page=".$next_page."'>下一页</a> ";
    $page .= "<a href='".$url."?now_page=1".$count_page."'>尾页</a> ";
    echo $page;
    ?>