加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码门户网 (https://www.92codes.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP和MySQL生成的标签云完成代码

发布时间:2022-01-19 13:37:52 所属栏目:PHP教程 来源:互联网
导读:用户输入文本和输入的文本在过去的一个标签云,标签云是一个用户生成的标签的可视化描述,或只是一个网站的文字内容,通常用来描述网站的内容。 为此,我们将创建一个HTML表格,将接受用户文本,也让用户可以看到从 MySQL数据库,其中包含在过去输入的文本生
  用户输入文本和输入的文本在过去的一个标签云,标签云是一个用户生成的标签的可视化描述,或只是一个网站的文字内容,通常用来描述网站的内容。
 
  为此,我们将创建一个HTML表格,将接受用户文本,也让用户可以看到从 MySQL数据库,其中包含在过去输入的文本生成的标签云,代码如下:
 
  <?php
   echo '<form method="post" action="tag_cloud_gen.php" name="gen_tag_db">';
   echo '<p>Input your text here:<br /><textarea name="tag_input" rows="20" cols="80"></textarea></p>';
   echo '<input type="submit" name="submit">';
   echo '</form>';
  ?>
  <br />
  <h3>OR</h3>
  <br />
  <p>see the current tag cloud here</p>
  <?php
   echo '<form name="show_tag_cloud" method="post" action="show_tag_cloud.php">';
   echo '<input type="submit" value="show current tag cloud" >';
   echo '</form>';
  ?>
  其中每个计算其频率和对将进入一个数组,输入的文本将被表征为单个词。然后将这个数组存储到一个MySQL数据库,我们可以选择保存在MySQL数据库表coloumn存储任何链接,如果这个项目未来的扩展。
 
  1) tag_id —- int,primary key,auto increament 1)tag_id - 整型,主键,自动increament
 
  2) keyword — varchar(20),unique 2)关键字 - 数据类型为varchar(20),独特的
 
  3) weight — int 3)重量 - 诠释
 
  4) link — varchar(256). 4)链接 - 为varchar(256)。
 
  代码如下:
 
  <?php
  /**
  * this function will update the mysql database table to reflect the new count of the keyword
  * i.e. the sum of current count in the mysql database &amp;amp;amp;amp; current count in the input.
  */
  function update_database_entry($connection,$table,$keyword,$weight){
   $string=$_POST['tag_input'];
   $connection = mysql_connect("localhost", "root", "");
   /**
   * now comes the main part of generating the tag cloud
   * we would use a css styling for deciding the size of the tag according to its weight,
   * both of which would be fetched from mysql database.
   */
   $query="select * from `tagcloud_db`.`tags` where keyword like '%$keyword%'";
   $resultset=mysql_query($query,$connection);
   if(!$resultset){
    die('Invalid query: ' . mysql_error());
   } else {
    while($row=mysql_fetch_array($resultset)){
    $query="UPDATE `tagcloud_db`.`tags` SET weight=".($row[2]+$weight)." where tag_id=".$row[0].";";
    mysql_query($query,$connection);
   }
  }
  }
  ?>
  <?php
  /*
  * get the input string from the post and then tokenize it to get each word, save the words in an array
  * in case the word is repeated add '1' to the existing words counter
  */
   $count=0;
   $tok = strtok($string, " t,;.'"!&-`nr");//considering line-return,line-feed,white space,comma,ampersand,tab,etc... as word separator
   if(strlen($tok)>0) $tok=strtolower($tok);
   $words=array();
   $words[$tok]=1;
   while ($tok !== false) {
    echo "Word=$tok<br />";
    $tok = strtok(" t,;.'"!&-`nr");
    if(strlen($tok)>0) {
    $tok=strtolower($tok);
    if($words[$tok]>=1){
     $words[$tok]=$words[$tok] + 1;
    } else {
     $words[$tok]=1;
    }
   }
  }
  print_r($words);
  echo '<br /><br />';
  /**
  * now enter the above array of word and corresponding count values into the database table
  * in case the keyword already exist in the table then update the database table using the function 'update_database_entry(...)'
  */
  $table="tagcloud_db";
  mysql_select_db($table,$connection);
  foreach($words as $keyword=>$weight){
   $query="INSERT INTO `tagcloud_db`.`tags` (keyword,weight,link) values ('".$keyword."',".$weight.",'NA')";
   if(!mysql_query($query,$connection)){
    if(mysql_errno($connection)==1062){
     update_database_entry($connection,$table,$keyword,$weight);
    }
   }
  }
  mysql_close($connection);
  ?>
  做出anether文件和将其命名为style.css文件,把下面的代码:
 
  HTML, BODY
  {
  padding: 0;
  border: 0px none;
  font-family: Verdana;
  font-weight: none;
  }
  .tags_div
  {
  padding: 3px;
  border: 1px solid #A8A8C3;
  background-color: white;
  width: 500px;
  -moz-border-radius: 5px;
  }
  H1
  {
  font-size: 16px;
  font-weight: none;
  }
  A:link
  {
  color: #676F9D;
  text-decoration: none;
  }
  A:hover
  {
  text-decoration: none;
  background-color: #4F5AA1;
  color: white;
  }
  这将使我们的标签云外观漂亮,它保存为style.css的,再次,使一个新的PHP文件,并命名它show_tag_cloud.php。
 
  在PHP代码中,如下我们连接到MySQL数据库,获取所有的标签,其重量和纽带,然后计算每个使用它的重量及最小的标签大小假定为标签的大小,它也是每一个标签从数据库中检索或与Google链接,如果没有链接存在,即“不适用”的链接,代码如下:
 
  <?php
   $connection = mysql_connect("localhost", "root", "");
   $table="tagcloud_db";
   $words=array();
   $words_link=array();
   mysql_select_db($table,$connection);
   $query="SELECT keyword,weight,link FROM `tagcloud_db`.`tags`;";
   if($resultset=mysql_query($query,$connection)){
    while($row=mysql_fetch_row($resultset)){
     $words[$row[0]]=$row[1];
     $words_link[$row[0]]=$row[2];
    }
   }
  // Incresing this number will make the words bigger; Decreasing will do reverse
  $factor = 0.5;
  // Smallest font size possible
  $starting_font_size = 12;
  // Tag Separator
  $tag_separator = '     ';
  $max_count = array_sum($words);
  ?>
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <HTML>
   <HEAD>
    <TITLE> Tag Cloud Generator </TITLE>
    <META NAME="Keywords" CONTENT="tag, cloud, php, mysql">
    <META NAME="Description" CONTENT="A Tag Cloud using php and mysql">
    <LINK REL="stylesheet" HREF="style.css" TYPE="text/css">
   </HEAD>
  <BODY>
  <center><h1>Tag Cloud using php and mysql </h1><div align='center' class='tags_div'>
  <?php
  foreach($words as $tag => $weight )
  {
   $x = round(($weight * 100) / $max_count) * $factor;
   $font_size = $starting_font_size + $x.'px';
   if($words_link[$tag]=='NA') echo "<span style='font-size: ".$font_size."; color: #676F9D;'><a href='http://www.google.co.in/search?hl=en&q=".$tag."&meta='>".$tag."</a></span>".$tag_separator;
   else echo "<span style='font-size: ".$font_size."; color: #676F9D;'><a href='http://".$words_link[$tag]."/'>".$tag."</a></span>".$tag_separator;
  }
  ?>
  </div></center>
  </BODY>
  </HTML>
  现在把他们所有在您的Web服务器的根目录,并观看结果。 每个查询会给你新的结果,随着时间的推移,数据库的增长。

(编辑:源码门户网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读