Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何根据使用PHP和MySQL输入MySQL数据库的次数显示更大的文本?_Php_Mysql_Tag Cloud - Fatal编程技术网

如何根据使用PHP和MySQL输入MySQL数据库的次数显示更大的文本?

如何根据使用PHP和MySQL输入MySQL数据库的次数显示更大的文本?,php,mysql,tag-cloud,Php,Mysql,Tag Cloud,好的,我有一个脚本,它应该显示为某个问题输入的标签比输入的标签大很多倍,输入的标签比输入的标签小一些。但由于某些原因,它会显示最后一个输入的标记,更大,并显示在它之前输入的所有标记,就像倒计时一样。我需要解决这个问题 我希望我解释得对吗 下面是MySQL表 CREATE TABLE questions_tags ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, tag_id INT UNSIGNED NOT NULL, users_questions_id I

好的,我有一个脚本,它应该显示为某个问题输入的标签比输入的标签大很多倍,输入的标签比输入的标签小一些。但由于某些原因,它会显示最后一个输入的标记,更大,并显示在它之前输入的所有标记,就像倒计时一样。我需要解决这个问题

我希望我解释得对吗

下面是MySQL表

CREATE TABLE questions_tags (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
tag_id INT UNSIGNED NOT NULL,
users_questions_id INT UNSIGNED NOT NULL,
PRIMARY KEY (id)
);

CREATE TABLE tags (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
tag VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
这是我的PHP脚本

<?php

$db_host = "localhost";
$db_user = "root";
$db_pass = "";
$db_name = "sitename";

mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error());
mysql_select_db($db_name);

function tag_info() {
$result = mysql_query("SELECT questions_tags.*, tags.* FROM questions_tags INNER JOIN tags ON tags.id = questions_tags.tag_id WHERE questions_tags.users_questions_id=3 ORDER BY users_questions_id DESC");
while($row = mysql_fetch_array($result)) {
$arr[$row['tag']] = $row['id'];
}
ksort($arr);
return $arr;
}

function tag_cloud() {

$min_size = 10;
$max_size = 30;

$tags = tag_info();

$minimum_count = min(array_values($tags));
$maximum_count = max(array_values($tags));
$spread = $maximum_count - $minimum_count;

if($spread == 0) {
$spread = 1;
}

$cloud_html = '';
$cloud_tags = array();

foreach ($tags as $tag => $count) {
$size = $min_size + ($count - $minimum_count)
* ($max_size - $min_size) / $spread;
$cloud_tags[] = '<a style="font-size: '. floor($size) . 'px'
. '" class="tag_cloud" href="http://www.example.com/tags/' . $tag .'/'
. '" title="\'' . $tag . '\' returned a count of ' . $count . '">'
. htmlspecialchars(stripslashes($tag)) . '</a>';
}
$cloud_html = join("\n", $cloud_tags) . "\n";
return $cloud_html;

}

?>

<div id="wrapper">
<?php print tag_cloud(); ?>
</div>

问题可能是WHERE子句中的硬编码id

questions_tags.users_questions_id=3

也许问题在于WHERE子句中的硬编码id

questions_tags.users_questions_id=3

您可以在数组中输入标记id作为值,这就是标记逐渐变小的原因

按tag.id分组并运行计数应该可以修复您的查询

$result = mysql_query("SELECT tag, count(*) as tagcount, tags.id FROM tags, questions_tags WHERE questions_tags.tag_id = tags.id AND questions_tags.users_questions_id=3 GROUP BY tags.id");
只需将标记计数指定为数组值

while($row = mysql_fetch_array($result)) {
$arr[$row['tag']] = $row['tagcount'];
}

您可以在数组中输入标记id作为值,这就是标记逐渐变小的原因

按tag.id分组并运行计数应该可以修复您的查询

$result = mysql_query("SELECT tag, count(*) as tagcount, tags.id FROM tags, questions_tags WHERE questions_tags.tag_id = tags.id AND questions_tags.users_questions_id=3 GROUP BY tags.id");
只需将标记计数指定为数组值

while($row = mysql_fetch_array($result)) {
$arr[$row['tag']] = $row['tagcount'];
}

这是调用问题网页id,不应该很重要,因为它稍后将被更改为动态值。我在一个页面上测试它来总结它。这是调用问题网页id,不应该很重要,因为它稍后将被更改为动态值。我在一个页面上测试它来总结它。@myhut是吗你的问题解决了吗?@bmac的答案应该对你有用。@myhut你解决问题了吗?@bmac的答案应该对你有用。