乌鸟heart 发表于 2013-1-1 22:12:16

标签云的实现代码

<div id="cnblogs_post_body">效果网站 - 自动化1102: http://huxuemail.web-104.com
乌鸟heart - 博客园: http://www.cnblogs.com/wuniaoheart/

数据库中,存放文章的表中有“Tag”字段,用来存放标签。标签之间用“,”分隔。比如“PHP,VB,随笔”。
下面的实现代码,将标签从数据库中搜出来,并格式化处理,使其以出现的次数为依据显示出不同大小的文字连接。
其中的细节,不做解释了!
观念陈、方法笨、效率低的标签云的实现代码如下:

<div class="cnblogs_code"> 1 <?PHP 2 /** 3 * WNiaoBlog Tag Template ShowTag 4 * 5 * @package WNiaoBlog 6 * 7 * @subpackage Tag 8*/ 9 10 //Connect the database11 //include('../include/config.php');12 13 /**14 * CountTag() - Statistics labels appear the number,and the data to be stored in the two array15 *16 * GetTag() - Access the Tag's Labels from the database17*/18 19 function CountTag($String){20      $TagString = $String; 21      //echo $TagString."<br><br><br>";22      $Tags = explode(",",$TagString);23      $n = 1;24      $i = 0;25      $Continue = TRUE;26      //echo $Tags."<br><br><br>";27    //in case no-label's article28      while($Tags[$n] OR $Tags[++$n] OR $Tags[++$n] ){29      $EachTag = $Tags[$n++];30      //echo $EachTag."<br><br><br>";31      $Continue = TRUE;32      for($i=0;$Continue;$i++){33          if( $EachTagStr[$i]] ) {34            if( $EachTagStr[$i] == $EachTag ){35                  $EachTagStr[$i]++;36                  $Continue = FALSE;37                 }38            else {39                  if( $EachTagStr[$i+1] ) $Continue = TRUE;40                  else {41                      $EachTagStr[$i+1] = $EachTag;42                      $EachTagStr[$i+1] = 1;43                      $Continue = FALSE;44                    }45              }46         } else { //initialize the array $EachTagStr[][]47                  $EachTagStr[$i] = $EachTag;48                  $EachTagStr[$i] = 1;49                  $Continue = FALSE;50             }51       }52     }53   return $EachTagStr;54 }55 56 function ShowTag($Row,$ablink){57      $i = 0;58      while($Row[$i]]){59      $EachTag = $Row[$i]];60      $EachCount = $Row[$i]];61      $Size = SetSize($EachCount);62      echo "<a style='color:BLUE ; font-size:".$Size." ' onMouseOver=this.style.color='#900000' onMouseOut=this.style.color='BLUE'href='".$ablink."tag?tag=".$EachTag."' target='_self' > ".$EachTag."(".$EachCount.")"." </a>";63      $i++;64     }65 }66 67 function GetTag(){68      $QuerySet = mysql_query("select * from article");69      while($Row = mysql_fetch_array($QuerySet)){70          $Tag = $Row['tag'];71          $TagString = $TagString.",".$Tag;72       }73      return $TagString;74 }75 76 function SetSize($Size){77      $Size += 10;78      if($Size > 30)79      $Size = 30;80      return $Size;81 }82 83 //Go 84 echo "<div id=showtag>";85 echo "<pclass='med1' style='color:#046111'>标签云</p>";86 $String = GetTag();87 $Row = CountTag($String);88 ShowTag($Row,$ablink);89 echo "</div>";90 91 ?>
页: [1]
查看完整版本: 标签云的实现代码