Tag Clound

nom3r1

Registered
Имам следния код /по-долу/, който се опитвам да го направя за следното нещо:

Таблица articles в нея колона: tags.
Искам да преброя в колона tags, колко е повтарящата се информация, след т'ва тази, която е с най-много повторения да е по-голяма и долу в кода тя да се отличава от другите.

Таговете в колона tags се отделят със запетая:
id(1) тест, тест2, тест2, тест3, тест4, тест4
id(2) тест5, тест2, тест67, тест9

сега искам да изкарам информацията;
<a href='#' size='3'>тест2</a>, <a href='#' size='2'>тест4</a>

Предполагам повечето от вас, знаят точно к'во имам на предвид и как да стане. Мерси!

PHP:
<?php
$tagArray=array();
$query = mysql_query("SELECT COUNT(tags) as tagcount, tags FROM `articles` GROUP BY tags ORDER BY tags DESC LIMIT 100")or die(mysql_error());
while($row = mysql_fetch_array($query)) {
	$tag = $row["tags"];
	$count = $row["tagcount"];
	$tag = str_replace(" ", "", "$tag");
	$tagArray[$tag] = $count;
}
$min=99999999;
$max=0;
foreach($tagArray as $key=>$value){
	if($value > $max) { 
		$max = $value;
	}
	if($value<$min){ 
		$min = $value; 
	}
}
$diff = $max-$min;
$highest = $max;
$middleHigh = 2*ceil($diff/3)+$min;
$middleLow = 1*ceil($diff/3)+$min;
$lowest = $min;
foreach($tagArray as $key =>$value){                     
	echo "<a href='browse_tag.php?search=$key'>";
if($value == $highest) {
	echo "<font size='5'><strong>$key</strong></font>";
} else if(($value<$highest)&&($value>=$middleHigh)) {
	echo "<font size='4'><strong>$key</strong></font>";
} else if(($value<$middleHigh)&&($value>=$middleLow)) {
	echo "<font size='3'><strong>$key</strong></font>";
}  else if(($value<$middleLow)&&($value>=$lowest))   {
	echo "<font size='2'>$key</font>";
}
	echo "</a> ";
}
?>
 
Направо си изкарах нервите докато го напиша:
PHP:
<?php
$tags = "tag1, tag2, tag2, tag2, tag2, tag2, tag2, tag2, tag2, tag2, tag2, tag3, tag3, tag3, tag4, tag4, tag4, tag4, tag4, tag4, tag4";
$tags = explode(", ", $tags);
$tags = array_count_values($tags);

$max = max($tags);
$min = min($tags);

$min_font_size = 12;
$max_font_size = 30;

foreach($tags as $tag_name => $tag_count)
{
	$tag_size_px = round(( (($tag_count-$min)*($max_font_size-$min_font_size))/($max-$min))+ $min_font_size);
	echo '<a href="" style="font-size: '.$tag_size_px.'px;">'.$tag_name.'</a> ';
}
?>
//
 
Не знам дали наистина си си изкарал нервите, но аз направо бях откачил. Мерси! :?:
 

Back
Горе