我的桌子上有几个静态标签。
我试图跟踪静态标签上的点击情况,我在其他网站上看到(实际上非常好)流行标签的变化就是大小。
看一看这张图片:
这个图像显示了预期的输出。
这张桌子是这样的:
+-----------+--------+
| tag | clicks |
+-----------+--------+
| Falun | 45 |
| Stockholm | 229 |
| Borlänge | 77 |
| ... | ... |
| ... | ... |
+-----------+--------+
点击越多,字体大小越大。但是字体大小应该是最大40 5px,最小5 5px。
如何从MySQL和PHP中计算点击量的差异并在font-size
中显示
SELECT tag, (SELECT COUNT(percentage) FROM tags) AS tag_size FROM tags
然后
foreach($tags as $tag){
<a href="#" style="font-size: <?php echo $tag->tag_size ?>px"><?php echo $tag->tag ?></a>
}
很抱歉有伪代码,但是我不知道怎么做!
发布于 2015-12-13 01:32:03
首先,您需要找到最大点击次数:
SELECT MAX(`clicks`) FROM `tags`;
让我们假设这是分配给一个名为$max_clicks
的变量。然后,您需要根据这个值缩放点大小。您使用的公式完全取决于您,但是根据单击计数的平方根进行缩放应该会产生合理的结果:
if ($max_clicks > 0) { // Avoid divide-by-zero error if nothing has been clicked
$sqrt_max_clicks = sqrt($max_clicks);
$query = "SELECT `tag`, 5 + 35 * SQRT(`clicks`) / $sqrt_max_clicks FROM `tags`;"
// ... (Generate tag markup) ...
}
显然,5
是最小点大小,35
是最大和最小点大小之间的差异。我在这里假设您希望标签列表中显示标签,即使它们的点击计数为零。
发布于 2015-12-13 00:46:17
因此,您可以使用group by
将所有标记记录放在一起。然后,您可以使用if
s来设置字体大小。类似于:
$sql = 'SELECT tag, count(clicks) AS tag_size FROM tags group by tag';
$sth = $dbh->prepare($sql);
$sth->execute();
$result = $sth->fetchAll();
foreach($result as $row) {
$size = $row['tag_size'];
if($size >700 ){
$font_size = 40;
} elseif($size >650 ){
$font_size = 39;
} elseif($size >650 ){
$font_size = 38;
}...
else {
$font_size = 5;
}
https://stackoverflow.com/questions/34246371
复制相似问题