PHP和MySQL生成的标签云实现代码
发布:smiling 来源: PHP粉丝网 添加日期:2014-01-03 09:02:25 浏览: 评论:0
用户输入文本和输入的文本在过去的一个标签云,标签云是一个用户生成的标签的可视化描述,或只是一个网站的文字内容,通常用来描述网站的内容。
为此,我们将创建一个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服务器的根目录,并观看结果。 每个查询会给你新的结果,随着时间的推移,数据库的增长。
Tags: MySQL 生成 标签
相关文章
- ·vsftpd+mysql的虚拟用户配置记录(2013-11-28)
- ·mysql_connect提示"No such file or directory"错误"(2013-12-04)
- ·php pdo_mysql未安装问题解决方法(2013-12-07)
- ·php如何连接mysql数据库(2014-06-06)
- ·xampp开启xampp Mysql数据库等的远程访问例子(2014-06-20)
- ·Memcache php提高mysql负载有效方法(2014-08-18)
- ·Pdo_MySQL安装过程模块提示PDO_MYSQL make: *** [pdo_mysql.lo](2014-08-28)
- ·检测mysql同步状态实现代码(php/linux)(2014-08-28)
- ·php mysql一个查询优化的简单例子(2014-08-28)
- ·php 中mysql导出excel文件方法(2014-08-29)
- ·php mysql用户注册登陆代码(2014-09-09)
- ·php memcached mysql开发详细实例(2014-09-09)
- ·深入分析mysql与mysqli的不同之处(2014-09-10)
- ·Php中使用PDO操作MySQL数据库(查询 更新 删除)(2014-09-10)
- ·php与mysql删除指定编号的员工信息(2014-09-10)
- ·php 环境本地用ip连接mysql响应快,用localhost连接慢的解决(2014-09-10)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)