Se a qualcuno può interessare, ho fatto così... sarà ampiamente migliorabile ma funziona! Bye

Codice PHP:
  //il metodo recupera le date del corso e restituisce nel formato
  // "da giorno/mese a giorno/mese" se le date sono in sequenza
  // "giorno/mese-giorno/mese" se le date non sono in sequenza
  
private function GetDateCorsoProgrammato(){
    
$query "SELECT DATE_FORMAT(data_inizio, '%d/%m/%Y') as data_calendario FROM calendario_corsi
              WHERE id_corso_programmato='"
.$this->id_corso_programmato."'
              ORDER BY data_inizio
              "
;
              
    
$result $this->mysqli->query($query);
    
    
// se la query restituisce un solo risultato
    // restituisco solo giorno/mese
    
if($result->num_rows==1){
      
$data $result->fetch_object();
      
      
$explode_data explode("/"$data->data_inizio);
      
$giorno $explode_data[0];
      
$mese $explode_data[1];
      
$anno $explode_data[2];
      
      
$this->dati['date'] = $giorno."/".$mese;
      
$this->dati['anno'] = $anno;
      
    }
    
//se le righe restituite sono più di una
    
elseif($result->num_rows>1){
      while (
$data $result->fetch_object()){
        
//inserisco i risultati in un array
        
$date[] = $data->data_calendario;
      }
      
      
//conto il numero di elementi dell'array
      
$count count($date);
      
      
//imposto la variabile che dovrà indicare se le date sono in sequenza
      
$sequenza 1
      
      
//per ogni elemento dell'array di date controllo le date a coppie
      //per verificare se sono in sequenza
      
for ($i=0$i<$count$i++){
        
//se il numero totale è pari
        
if($count %2==0){
          
$data1 $date[$i];
          
$data2 $date[$i+1];
        }
        
//altrimenti all'ultimo giro del ciclo 
        //confronto la penultima data e l'ultima
        
else{
          if(
$i == $count-1){
            
$data1 $date[$count 2];
            
$data2 $date[$count-1];
          }
          else{
            
$data1 $date[$i];
            
$data2 $date[$i+1];
          }
        }         
            
        
$controllo $this->ControllaSequenzaData($data1$data2);
        
        
//se controllo restituisce zero le date non sono in sequenza
        
if($controllo==0){
          
$sequenza 0;
        }
      }
          
      
//se le date non sono in sequenza le elenco con un trattino          
      
if($sequenza==0){
        for(
$i=0$i<$count$i++){
          
$giorni_corso .= ($i==$count-1) ? substr($date[$i], 05): substr($date[$i], 05)."-";
          
$anno substr($date[0], 64);
        }
      }
      
// altrimenti le restituisco nel formato da a
      
else {
        
$giorni_corso "dal ".substr($date[0], 5)." al ".substr($date[$count-1], 05);
        
$anno substr($date[0], 64);
      }
      
      
$this->dati['date'] = $giorni_corso;
      
$this->dati['anno'] = $anno;
    }
      
  }
  
  
//il metodo controlla che la data2 sia un giorno successivo a data1
  // le date passate come parametro devono essere nel formato gg/mese/anno
  
private function ControllaSequenzaData($data1$data2){
    
    
//esplodo le stringhe per dividere giorno, mese, anno
    
$explode_data1 explode("/"$data1);
    
$giorno_data1 $explode_data1[0];
    
$mese_data1 $explode_data1[1];
    
$anno_data1 $explode_data1[2];
    
    
$explode_data2 explode("/"$data2);
    
$giorno_data2 $explode_data2[0];
    
$mese_data2 $explode_data2[1];
    
$anno_data2 $explode_data2[2];
     
    
//traformo le date in timestamp
    
$timestamp_data1 mktime(000$mese_data1$giorno_data1$anno_data1);
    
$timestamp_data2 mktime(000$mese_data2$giorno_data2$anno_data2);
      
    
//se la data 2 è uguale alla prima è i secondi di un giorno restituisco 1
    
if($timestamp_data2 == ($timestamp_data1 86400)){
      return 
1;
    }
    else{
      return 
0;
    }
  }