Non sono riuscito a farlo funzionare ho cercato di modificare lo script fatto da te perchè mi dava errori con alcuni tag non chiusi e la parte dopo l'ultimo else non veniva inserita nel div con l'id dell anno ma all esterno
Codice PHP:
else {   
// se l'anno è uguale al precedente stampa solo i dati   
echo "<h2>{$row['titolo']}</h2>              
<h3>
{$row['sottotitolo']}</h3>              
<p>
{$row['descrizione']}</p> ";} 
nel modo in cui l'ho scritto mi inserisce solo il primo record all interno del div mentre gli altri sempre esternamente Schermata 2014-11-03 alle 18.59.45.jpg
i cambiamenti fatti
Codice PHP:
$id ""// id del tab (serve per confrontare ogni record
$first true// variabile booleana per gestione primo tab
while($row mysql_fetch_array($result)){    // verifica che l'anno sia diverso dal precedente    
if($row['anno'] !== $id) {       
 
// verifica se siamo nel primo tab        
if($first === true) {            
// se si             
// scrive la classe active nel css           
 
$id $row['anno'];            
echo 
"<div role='tabpanel' class='tab-pane active' id='$id'>            
<h2>
{$row['titolo']}</h2>                      
<h3>
{$row['sottotitolo']}</h3>                       
<p>
{$row['descrizione']}</p></div>";            
$first false// setta la variabile a false       
 
}       
 else {            
// se no            
// scrive le classi successive            
$id $row['anno'];            
echo 
"<div role='tabpanel' class='tab-pane' id='$id'>            
<h2>
{$row['titolo']}</h2>                       
<h3>
{$row['sottotitolo']}</h3>                       
<p>
{$row['descrizione']}</p></div>";        
}    
}    else {        
// se l'anno è uguale al precedente stampa solo i dati       
 
echo "<h2>{$row['titolo']}</h2>                  
 <h3>
{$row['sottotitolo']}</h3>                   
<p>
{$row['descrizione']}</p> ";   
 }

non riesco ad uscirne