Tag cloud
Bedankt, deze werkt helemaal goed!
tutorial. Daar staat ook een voorbeeld met jouw code.
Maar omdat we hier de discussie aangeslingerd hebben, ook hier de code.
Ik gebruik jouw query die in dit topic staat, ik zet op dezelfde manier de $aTags-array, $laagste en $hoogste en ik loop op bijna dezelfde manier door de resultaten van de query: ik gebruik daar andere data van de query, wat logisch is. Vanaf daar is alles hetzelfde als in mijn eerdere code.
In bovengenoemde tutorial leg ik stap-voor-stap uit wat er gebeurt.
Op zich is jouw code gewoon te combineren met mijn berekening. Ik heb het allemaal uitgebreid uitgelegd in een Maar omdat we hier de discussie aangeslingerd hebben, ook hier de code.
Ik gebruik jouw query die in dit topic staat, ik zet op dezelfde manier de $aTags-array, $laagste en $hoogste en ik loop op bijna dezelfde manier door de resultaten van de query: ik gebruik daar andere data van de query, wat logisch is. Vanaf daar is alles hetzelfde als in mijn eerdere code.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
// Query om de tags en het gebruik op te halen
$sql = "SELECT
tag,
COUNT(tag) AS aantal
FROM
tags
GROUP BY
tag
ORDER BY
tag ASC";
$res = mysql_query($sql);
$aTags = array(); // Array om de tags in op te slaan
$laagste = null; // Var met het laagste aantal kliks
$hoogste = 0; // Var met het hoogste aantal kliks
if($res !== false) {
while($row = mysql_fetch_assoc($res)) {
// Laagste bepalen
if($laagste == NULL) $laagste = $row['aantal'];
else if($laagste > $row['aantal']) $laagste = $row['aantal'];
// Hoogste bepalen
if($row['aantal'] > $hoogste) $hoogste = $row['aantal'];
// Toevoegen aan de array
$aTags[] = array('tag' => $row['tag'], 'aantal' => $row['aantal']);
}
}
// Array door elkaar gooien
shuffle($aTags);
$aStap = array(); // Lege array om de stappen in te bewaren
$maxStappen = 5; // Er zijn dus 5 CSS-classes
$stappen = floor(($hoogste-$laagste) / $maxStappen); // Uitrekenen hoeveel er tussen stappen zit
for($i=1;$i<=$maxStappen;$i++) $aStap[$i] = $i*$stappen+$laagste; // En de array vullen met het begin van de stap
echo '<div class="tagcloud">'.PHP_EOL;
foreach($aTags as $tag) {
$style = 'tag'.$maxStappen; // standaard de grootste
for($i=1;$i<=$maxStappen;$i++) {
if($tag['aantal'] <= $aStap[$i]) {
$style = 'tag'.$i;
break;
}
}
echo '<a href="#" class="'.$style.'">'.$tag['tag'].'</a>'.PHP_EOL;
}
echo '</div>'.PHP_EOL;
?>
// Query om de tags en het gebruik op te halen
$sql = "SELECT
tag,
COUNT(tag) AS aantal
FROM
tags
GROUP BY
tag
ORDER BY
tag ASC";
$res = mysql_query($sql);
$aTags = array(); // Array om de tags in op te slaan
$laagste = null; // Var met het laagste aantal kliks
$hoogste = 0; // Var met het hoogste aantal kliks
if($res !== false) {
while($row = mysql_fetch_assoc($res)) {
// Laagste bepalen
if($laagste == NULL) $laagste = $row['aantal'];
else if($laagste > $row['aantal']) $laagste = $row['aantal'];
// Hoogste bepalen
if($row['aantal'] > $hoogste) $hoogste = $row['aantal'];
// Toevoegen aan de array
$aTags[] = array('tag' => $row['tag'], 'aantal' => $row['aantal']);
}
}
// Array door elkaar gooien
shuffle($aTags);
$aStap = array(); // Lege array om de stappen in te bewaren
$maxStappen = 5; // Er zijn dus 5 CSS-classes
$stappen = floor(($hoogste-$laagste) / $maxStappen); // Uitrekenen hoeveel er tussen stappen zit
for($i=1;$i<=$maxStappen;$i++) $aStap[$i] = $i*$stappen+$laagste; // En de array vullen met het begin van de stap
echo '<div class="tagcloud">'.PHP_EOL;
foreach($aTags as $tag) {
$style = 'tag'.$maxStappen; // standaard de grootste
for($i=1;$i<=$maxStappen;$i++) {
if($tag['aantal'] <= $aStap[$i]) {
$style = 'tag'.$i;
break;
}
}
echo '<a href="#" class="'.$style.'">'.$tag['tag'].'</a>'.PHP_EOL;
}
echo '</div>'.PHP_EOL;
?>
In bovengenoemde tutorial leg ik stap-voor-stap uit wat er gebeurt.