快速业务通道

PHP文本型数据库分类排序的实现

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
#becfed>
<?
$sortdownsrc="img/sortdown.gif"; //向下箭头的图片,显示在降序排列的标题旁
$sortupsrc="img/sortup.gif"; //向上箭头的图片,显示在升序排列的标题旁
function printtitle(){ //本函数用于输出标题链接和箭头图片
global $ename,$sorted,$dir,$sortdownsrc,$sortupsrc,$chname;
echo "<a href=''#'' onmouseover=''tips(this)'' onmousedown=''sortby(this)'' chname=''$chname'' ename=''$ename''><font color=''#0000FF''>$chname</font></a>";
/*上式输出中给<a>标签自己定义了两个属性“chname”和“ename”。“chname”是标题的中文名,用于显示;“ename”是标题的英文名,用于分类
在上面JavaScript代码中的sortby()函数中就直接利用了它们。这个方法也许值得读者借鉴。
*/
if($sorted==$ename){ //如果标题类别就是所排序的类别,则显示箭头图片
echo "<img src=''". ($dir>0?$sortdownsrc:$sortupsrc) ."''>";
//上一行的插入三元运算子的格式在前面已经介绍过。
}
}
?> <!--输出标题栏表格-->
<? $ename="musicname"; $chname="歌曲名称"; ?> <TD align=center> <? printtitle(); ?></TD>
<? $ename="singer"; $chname="歌手"; ?> <TD align=center> <? printtitle(); ?></TD>
<? $ename="musicsize"; $chname="大小"; ?> <TD align=center> <? printtitle(); ?></TD>
<?
$i=1;
//以下读取数据库文件夹里的文件数据。
$open=opendir("data/");
//第一次读取
while ($filename=readdir($open)) {
if (filesize("data/".$filename)>0){
$filecontent=file("data/".$filename);
//将读到的数据划分到各变量中:
$msgs_info=explode("|",$filecontent[0]);
$musicname=$msgs_info[0];
$singer=$msgs_info[1];
$musicsize=$msgs_info[2];
/* 把要排序的类的值读到$sort_array[]中以便排序,下式用到了双重变量,即把从地址栏传递过来的分类值作为变量。
所以上面三式的变量名必须与各链接标题的“ename”相对应:
*/
$sort_array[$i]=${$sorted};
//把对应的文件名读到$filename_array[]中,以便和排序后的下标对应。
$filename_array[$i]=$filename;
$i++;
}
}
$totalfile=count($sort_array); //文件总数
if($totalfile!=0){
//下面函数对$sort_array[]进行升序或降序排列:
$dir>0 ? asort($sort_array) : arsort($sort_array);
/* 读取排列后的新顺序:
注意到$sort_array[]的下标是从1开始的,因为该函数不能处理0为下标,在PHP中0认为是FALSE,在for()的条件中会中断循环。
*/
$i=1;
for(reset($sort_array); $key = key($sort_array); next($sort_array)) {
//令 $key_array[] 为排好的数组下标
$key_array[$i] = $key;
$i++;
}
for ($i=1;$i<=$totalfile;$i++){
// 因$key_array[]是排好的数组下标,把它应用到$filename_array[]中就行:
//第二次读取文件,按排好的文件读取,并输出:
$filecontent=file("data/".$filename_array[$key_array[$i]]);
$msgs_info=explode("|",$filecontent[0]);
$musicname=$msgs_info[0];
$singer=$msgs_info[1];
$musicsize=$msgs_info[2];
echo "<TR bgColor=#ebf1f7> \n";
echo "<td align=left>&nbsp;$musicname</td> \n"

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号