PHP生成HTML的内容分页问题请教!!在线等!! 这个的确不好做,可用XML配合来做 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我还没学XML,,现在PHP还刚学。。 把echo的东西换成 string 就如此简单 xml配合xslt可以动态分页,可以看看xml版块孟子E章的分页程序 个人想法:先把数据导入模板,比如a.php 调用模板 然后用file函数读出,再写入一个新的html文件里,这样就生成了html文件 列表分页应该是生成HTML文件的时候。已经把文件路径有规则的写好了吧文章分页是不是生成的HTML文件放在一个夹子里面然后读取里面的文件。采用循环来分页。。这样不可以嘛?不知道做过这方面的朋友。。是否这样做 在添加文章时加入分页标志,在生成静态页面时,用explode("标志",$Content);$Content = explode("[dvnews_page]", $Content); $i=1; foreach($Content as $key => $value){ if($value!=""){ $t = new template("../template/"); $t->set_file("temp","display.html");//display.html静态网页的模板 $Name =$Id."_".$i;//文件名为ID与$i $FileName = "$Name.html"; $Prep = ""; $Next = ""; $count = count($Content); if($i == 1 && $count != 1){ $NextName = $Id."_".($i+1).".html"; $Next = "[<a href=".$NextName.">下一页</a>]"; } if($i == $count && $count != 1){ $PreName = $Id."_".($i-1).".html"; $Prep = "[<a href=".$PreName.">上一页</a>]"; } if($i != 1 && $i != $count && $count != 1){ $PreName = $Id."_".($i-1).".html"; $NextName = $Id."_".($i+1).".html"; $Prep = "[<a href=".$PreName.">上一页</a>]"; $Next = "[<a href=".$NextName.">下一页</a>]"; } $t->set_var(array("Title"=>$Row[0].$i, "Content"=>$value, "AddTime"=>你添加文章时间, "PrePage"=>$Prep, "NextPage"=>$Next, "NewsHits"=>文章点击率 )); $t->parse("out","temp"); $PageContent = $t->get("out"); $Handle = fopen ($FileName,"w"); if (!is_writable ($FileName)){ die ("文件:".$FileName."不可写,请检查其属性后重试!"); } if(!fwrite ($Handle,$PageContent)){ die ("生成文件".$FileName."失败!"); } $File .=$FileName; fclose ($Handle); $i++; } 实际应用中常见问题解决方案参考: 一,文章列表问题: 在数据库中创建字段,记录文件名,每生成一个文件,将自动生成的文件名存入数据库,对于推荐文章,只需指向存放静态文件的指定文件夹中的该页面即可。利用PHP操作处理文章列表,存为字符串,生成页面时替换此字符串即可。如,在页面中放置文章列表的表格加入标记{articletable},而在PHP处理文件中: Code: [点击这里把以下内容复制到剪贴板] <?php $title = "拓迈国际测试模板"; $file = "TwoMax Inter test templet,<br>author:Matrix@Two_Max"; $fp = fopen ("temp.html","r"); $content = fread ($fp,filesize ("temp.html")); $content .= str_replace ("{file}",$file,$content); $content .= str_replace ("{title}",$title,$content); // 生成列表开始 $list = ''; $sql = "select id,title,filename from article"; $query = mysql_query ($sql); while ($result = mysql_fetch_array ($query)){ $list .= '<a href='.$root.$result['filename'].' target=_blank>'.$result['title'].'</a><br>'; } $content .= str_replace ("{articletable}",$list,$content); //生成列表结束 // echo $content; $filename = "test/test.html"; $handle = fopen ($filename,"w"); //打开文件指针,创建文件 /* 检查文件是否被创建且可写 */ if (!is_writable ($filename)){ die ("文件:".$filename."不可写,请检查其属性后重试!"); } if (!fwrite ($handle,$content)){ //将信息写入文件 die ("生成文件".$filename."失败!"); } fclose ($handle); //关闭指针 die ("创建文件".$filename."成功!");?> 二,分页问题。 如我们指定分页时,每页20篇。某子频道列表内文章经数据库查询为45条,则,首先我们通过查询得到如下参数:1,总页数;2,每页篇数。第二步,for ($i = 0; $i < allpages; $i++),页面元素获取,分析,文章生成,都在此循环中执行。不同的是,die ("创建文件".$filename."成功!";这句去掉,放到循环后的显示,因为该语句将中止程序执行。例: Code: [点击这里把以下内容复制到剪贴板] <?php $fp = fopen ("temp.html","r"); $content = fread ($fp,filesize ("temp.html")); $onepage = '20'; $sql = "select id from article where channel='$channelid'"; $query = mysql_query ($sql); $num = mysql_num_rows ($query); $allpages = ceil ($num / $onepage); for ($i = 0;$i<$allpages; $i++){ if ($i == 0){ $indexpath = "index.html"; } else { $indexpath = "index_".$i."html"; } $start = $i * $onepage; $list = ''; $sql_for_page = "select name,filename,title from article where channel='$channelid' limit $start,$onepage"; $query_for_page = mysql_query ($sql_for_page); while ($result = $query_for_page){ $list .= '<a href='.$root.$result['filename'].' target=_blank>'.$title.'</a><br>'; } $content = str_replace ("{articletable}",$list,$content); if (is_file ($indexpath)){ @unlink ($indexpath); //若文件已存在,则删除 } $handle = fopen ($indexpath,"w"); //打开文件指针,创建文件 /* 检查文件是否被创建且可写 */ if (!is_writable ($indexpath)){ echo "文件:".$indexpath."不可写,请检查其属性后重试!"; //修改为echo } if (!fwrite ($handle,$content)){ //将信息写入文件 echo "生成文件".$indexpath."失败!"; //修改为echo } fclose ($handle); //关闭指针 } fclose ($fp); die ("生成分页文件完成,如生成不完全,请检查文件权限系统后重新生成!");?> 现在很多B2B都用ASP,难道PHP没好的吗? 怎么实现点击按钮加载,显示在页面 关于session注销后用isset判断session是否存在的问题 网站上有一个zip文件,如何统计其下载次数 phpMyAdmin 这个地址搞了什么东东为什么我读不了他的内容。。? 生成收缩略图的问题 请问:msql.dll无法加载,为什么? [急][在线]两个简单的问题,请大家帮忙看看 关于刷新的问题 向大家介绍一个下电子书的地方 如何以音标顺序输出????????????????????????
文章分页是不是生成的HTML文件放在一个夹子里面然后读取里面的文件。采用循环来分页。。这样不可以嘛?不知道做过这方面的朋友。。是否这样做
$Content = explode("[dvnews_page]", $Content);
$i=1;
foreach($Content as $key => $value){
if($value!=""){
$t = new template("../template/");
$t->set_file("temp","display.html");//display.html静态网页的模板 $Name =$Id."_".$i;//文件名为ID与$i
$FileName = "$Name.html";
$Prep = "";
$Next = "";
$count = count($Content);
if($i == 1 && $count != 1){
$NextName = $Id."_".($i+1).".html";
$Next = "[<a href=".$NextName.">下一页</a>]";
}
if($i == $count && $count != 1){
$PreName = $Id."_".($i-1).".html";
$Prep = "[<a href=".$PreName.">上一页</a>]";
}
if($i != 1 && $i != $count && $count != 1){
$PreName = $Id."_".($i-1).".html";
$NextName = $Id."_".($i+1).".html";
$Prep = "[<a href=".$PreName.">上一页</a>]";
$Next = "[<a href=".$NextName.">下一页</a>]";
}
$t->set_var(array("Title"=>$Row[0].$i,
"Content"=>$value,
"AddTime"=>你添加文章时间,
"PrePage"=>$Prep,
"NextPage"=>$Next,
"NewsHits"=>文章点击率 ));
$t->parse("out","temp");
$PageContent = $t->get("out");
$Handle = fopen ($FileName,"w");
if (!is_writable ($FileName)){
die ("文件:".$FileName."不可写,请检查其属性后重试!");
}
if(!fwrite ($Handle,$PageContent)){
die ("生成文件".$FileName."失败!");
}
$File .=$FileName;
fclose ($Handle);
$i++;
}
在数据库中创建字段,记录文件名,每生成一个文件,将自动生成的文件名存入数据库,对于推荐文章,只需指向存放静态文件的指定文件夹中的该页面即可。利用PHP操作处理文章列表,存为字符串,生成页面时替换此字符串即可。如,在页面中放置文章列表的表格加入标记{articletable},而在PHP处理文件中:
Code: [点击这里把以下内容复制到剪贴板]
<?php
$title = "拓迈国际测试模板";
$file = "TwoMax Inter test templet,<br>author:Matrix@Two_Max"; $fp = fopen ("temp.html","r");
$content = fread ($fp,filesize ("temp.html"));
$content .= str_replace ("{file}",$file,$content);
$content .= str_replace ("{title}",$title,$content);
// 生成列表开始
$list = '';
$sql = "select id,title,filename from article";
$query = mysql_query ($sql);
while ($result = mysql_fetch_array ($query)){
$list .= '<a href='.$root.$result['filename'].' target=_blank>'.$result['title'].'</a><br>';
}
$content .= str_replace ("{articletable}",$list,$content);
//生成列表结束
// echo $content;
$filename = "test/test.html";
$handle = fopen ($filename,"w"); //打开文件指针,创建文件
/*
检查文件是否被创建且可写
*/
if (!is_writable ($filename)){
die ("文件:".$filename."不可写,请检查其属性后重试!");
}
if (!fwrite ($handle,$content)){ //将信息写入文件
die ("生成文件".$filename."失败!");
}
fclose ($handle); //关闭指针
die ("创建文件".$filename."成功!");
?>
二,分页问题。 如我们指定分页时,每页20篇。某子频道列表内文章经数据库查询为45条,则,首先我们通过查询得到如下参数:1,总页数;2,每页篇数。第二步,for ($i = 0; $i < allpages; $i++),页面元素获取,分析,文章生成,都在此循环中执行。不同的是,die ("创建文件".$filename."成功!";这句去掉,放到循环后的显示,因为该语句将中止程序执行。例:
Code: [点击这里把以下内容复制到剪贴板]
<?php
$fp = fopen ("temp.html","r");
$content = fread ($fp,filesize ("temp.html"));
$onepage = '20';
$sql = "select id from article where channel='$channelid'";
$query = mysql_query ($sql);
$num = mysql_num_rows ($query);
$allpages = ceil ($num / $onepage); for ($i = 0;$i<$allpages; $i++){
if ($i == 0){
$indexpath = "index.html";
} else {
$indexpath = "index_".$i."html";
}
$start = $i * $onepage;
$list = '';
$sql_for_page = "select name,filename,title from article where channel='$channelid' limit $start,$onepage";
$query_for_page = mysql_query ($sql_for_page);
while ($result = $query_for_page){
$list .= '<a href='.$root.$result['filename'].' target=_blank>'.$title.'</a><br>';
}
$content = str_replace ("{articletable}",$list,$content); if (is_file ($indexpath)){
@unlink ($indexpath); //若文件已存在,则删除
} $handle = fopen ($indexpath,"w"); //打开文件指针,创建文件
/*
检查文件是否被创建且可写
*/
if (!is_writable ($indexpath)){
echo "文件:".$indexpath."不可写,请检查其属性后重试!"; //修改为echo
}
if (!fwrite ($handle,$content)){ //将信息写入文件
echo "生成文件".$indexpath."失败!"; //修改为echo
}
fclose ($handle); //关闭指针
} fclose ($fp);
die ("生成分页文件完成,如生成不完全,请检查文件权限系统后重新生成!");?>