2015-12-12 76 views
1

我有幾個靜態標籤在表中。更改熱門標籤的字體大小

我試圖跟蹤靜態標籤上的點擊,並且我在其他網站上看到(其實很好),流行標籤更改的是大小。

看一看這張圖片: enter image description here 這張圖片顯示了預期的輸出。

表看起來是這樣的:

+-----------+--------+ 
| tag | clicks | 
+-----------+--------+ 
| Falun  | 45  | 
| Stockholm | 229 | 
| Borlänge | 77  | 
| ...  | ... | 
| ...  | ... | 
+-----------+--------+ 

更多的點擊, 「做大」 的字體大小。但字體大小應該是最大40px,最小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> 
} 

僞代碼非常抱歉,但我不知道如何做到這一點!

+0

什麼是數據庫結構?什麼是「百分比」? – chris85

+0

對於僞代碼,我很抱歉,百分比應該代表「字體大小」。表格結構是'tag'和'clicks' – Adam

+0

那麼你在計算什麼? 'SELECT COUNT(percentage)FROM tags' – chris85

回答

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; 
} 
+0

隨着點擊數增加,這將失敗。很快,即使是最不受歡迎的標籤也可能有700多次點擊。我感覺OP希望相對標籤點擊的百分比而不是任意數字。IE最受歡迎的標籤是100%。這樣,每個標籤可以呈現爲40px(最大字體大小)的x百分比。 – Moob

+0

如果只有2個標籤,而其中一個具有'1'點擊,另一個具有'1000',我認爲'1000'應該是40px,並且'1'點擊5像素,因爲它非常不受歡迎。取決於OP的意圖,儘管;我會等待更新。 – chris85

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的區別在最大點和最小點之間。我假設您希望標籤出現在標籤列表中,即使它們的點擊次數爲零。