我在表格中有一些静态标记。
我试图跟踪静态标签的点击次数,我在其他网站上看到(实际上它确实非常好)流行的标签会发生变化。
表格如下:
push ebp
mov ebp, esp
更多点击次数,"更大"字体大小。但字体大小应该是最大40px,最小5px。
我如何从MySQL和PHP计算点击次数的差异并将其显示在+-----------+--------+
| tag | clicks |
+-----------+--------+
| Falun | 45 |
| Stockholm | 229 |
| Borlänge | 77 |
| ... | ... |
| ... | ... |
+-----------+--------+
?
font-size
然后
SELECT tag, (SELECT COUNT(percentage) FROM tags) AS tag_size FROM tags
非常抱歉伪代码,但我不知道怎么做!
答案 0 :(得分:1)
首先,您需要找到最大点击次数:
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
是最大和最小点数之间的差异。我假设您希望标签出现在标签列表中,即使它们的点击次数为零。
答案 1 :(得分:0)
因此,您可以使用group by
将所有标记记录拉到一起。然后,您可以使用if
来设置字体大小。类似的东西:
$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;
}