PHP  »  Articoli  »  Soluzioni in PHP 

Tag cloud in PHP

di: Claudio Garau     10 Aprile 2009

L'applicazione per il tag cloud

Si passi ora alla fase relativa allo sviluppo dell'applicazione, la prima operazione da compiere sarà quella relativa alla definizione di una piccola classe che si occuperà delle operazioni di connessione al DBMS, di selezione del database, di chiusura della connessione e dell'istanza della classe stessa, come nell'esempio seguente:

<?php
class MySQL
{ 
  function MySQL() 
  { 
   # parametri per la connessione
    $this->host_name = "localhost";
    $this->user_name = "username";
    $this->password = "password";
    $this->data_name = "tag_cloud";
    
   # connessione a MySQL
    $this->link = @mysql_connect(
    $this->host_name, 
    $this->user_name, 
    $this->password) 
    or die (mysql_error());

   # selezione del database      
    @mysql_select_db($this->data_name) or die (mysql_error()); 
  }
}
function Close(){

# chiusura della connessione  
@mysql_close();
 }

# istanza della classe
$data = new MySQL(); 
?>

Ora si passi alla definizione di una funzione in grado di restituire i valori massimi e minimi relativi ai tag e di utilizzarli per restituire in output i diversi tag sulla base dei valori ricavati attraverso una semplice interrogazione

<?php
function mostra_tag_cloud() {

# intervallo delle dimensioni per i font
$dimensione_minima = 10;
$dimensione_massima = 25;

# creazione di un array con i valori dei records
$query = @mysql_query("SELECT * FROM tag_cloud GROUP BY nome_tag ORDER BY contatore_tag DESC") or die (mysql_error());
while($r = @mysql_fetch_object($query)) {
    $v[$r->nome_tag] = $r->contatore_tag;  
  } 
Close();

# ordinamento dell'array
@ksort($v); 

# differenza tra le occorrenze minime e massime
$valore_minimo = @min(@array_values($v));
$valore_massimo = @max(@array_values($v));
$differenza = $valore_massimo - $valore_minimo;

# controllo per evitare eventuali errori derivanti da divisioni per 0
if($differenza == 0) {$differenza = 1; }
$box  = '';
$tags = @array();
# calcolo delle dimensioni dei font
foreach ($v as $val => $i) {
 $dimensione = $dimensione_minima + ($i - $valore_minimo) * ($dimensione_massima - $dimensione_minima) / $differenza; 

# stampa del link associato ai tags
 $tags[] = '<a style="font-size: '.@floor($dimensione).'px'.'" class="tag" href="tag.php?tag='.$val.'" title="\''.$val.'">'
 .@htmlspecialchars(@stripslashes($val)). '</a>';
}

# valore di ritorno
$box  = @join("\n", $tags) ."\n";
return $box;
}
?>

Infine, per produrre in output la tag cloud sarà sufficiente richiamare la funzione appena definita in una pagina PHP che includa il foglio di stile, il file della classe per il database e quello contenente la funzione stessa:

<div id="box">
<?php 
@require 'config.php';
@include 'function.php';
echo @mostra_tag_cloud(); 
?>
</div>

Se tutto è andato per il meglio si dovrebbe ottenere un output simile a quello rappresentato nella figura seguente:

Figura 1: La Tag cloud

Tag cloud

I tag saranno naturalmente collegati ad una pagina per l'estrazione delle risorse ad essi correlati (tag.php nell'esempio), la creazione di questa pagina sarà però argomento per un prossimo tutorial.

Guide PHP

Guida Yii Framework

Come creare applicazioni Web in modo semplice e veloce con il...

Guida Zend Framework

Diventate professionisti dello sviluppo Web. Zend Framework è lo...

Guida Applicazioni Facebook con PHP

Come realizzare un'applicazione per Facebook. Dalle basi della...

Altre guide

Newsletter @PHP

Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso PHP per Webmaster

11 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti