iBlog random » array http://blog.zurka.us Just another WordPress weblog Tue, 28 May 2013 20:28:47 +0000 en-US hourly 1 http://wordpress.org/?v=3.6 Create an array for a tag cloud in PHP http://blog.zurka.us/create-array-tag-cloud-php/ http://blog.zurka.us/create-array-tag-cloud-php/#comments Fri, 10 Oct 2008 18:22:35 +0000 nasal http://blog.zurka.us/?p=579

Everyone tells us how to create a tag cloud with an array.. but how to actually create the array with the data that we fetch from our database?

This is how I do it. The table we are working in is “pictures” and the field with the tags is “tags“. The tags are separated with a space (for example: sunset beautiful evening).

$query = mysql_query('select * from pictures where tags != "" group by tags');

while ($fetch = mysql_fetch_assoc($query)) {
	$ex = explode(" ", $fetch['tags']);
	$c = count($ex);
	for ($i = 0; $i < $c; $i++) {
		$tags[] .= $ex[$i];
	}
}

What I do is fetch the data from all the fields named “tags” that are not empty. Then I separate the tags with the explode() function and I get an array. I count this array and I add every member of this array to my $tags array, which is the array that will include all the tags and which I’m going to use.

Then the usual code comes into play:

$c = array_count_values($tags); //count the array

$max_size = 32; //max size of the font in pixels
$min_size = 11; //min size of the font

$max_qty = max(array_values($c));
$min_qty = min(array_values($c));

$spread = $max_qty - $min_qty;
if ($spread == 0) {
	$spread = 1;
}

$step = ($max_size - $min_size) / ($spread);

foreach ($c as $key => $value) {
	$size = round($min_size + (($value - $min_qty) * $step)) . 'px';
	$title = $value . ' pictures with the tag ' . $key;
echo '<span style="font-size: ' . $size . '" title="' . $title . '">' . $key . '</span> ';
}

This is it, all you need is a field in the table with the name tags and then you save your tags there, separated with a blank space.

If you have any questions feel free to ask, if you think I don’t know how to write in english please tell me and I will try harder :D If you think this code sucks and have a better one please post it in the comments!

]]>
http://blog.zurka.us/create-array-tag-cloud-php/feed/ 0