vediamo...

Codice PHP:
$q "SELECT * FROM valutazioni WHERE Valutazione_classe='$classe' AND Valutazione_data_voto between '$data_iniziale' and '$data_finale'";
$query mysql_query($q) or die(mysql_error());

/*$num = mysql_num_rows($query);
for($i=0;$i<$num;$i++){;
$data=mysql_result($query,$i, "Valutazione_data_voto between '$data_iniziale' and '$data_finale'");
[...] altre variabili da estrapolare*/

echo '<tr>';
$data_iniziale ''
while(
$row mysql_fetch_array($query)) 

  if(
$row['Valutazione_data_voto']!=$data_iniziale
  {     
    echo 
'<tr><td>'.$row['Valutazione_data_voto'].'</td></tr>'
  } else {     
    echo 
'<tr>'
    echo 
'<td>'.$row['Valutazione_data_voto'].'</td>';
    echo 
'</tr>'
  } 
    
$data_iniziale $row['Valutazione_data_voto']; 
}
echo 
'</tr>'
prova in questo modo se può andare bene.
Piccolo consiglio: quando utilizzi una funzione che da un output a schermo (es. ECHO) usa i doppi apici solo se all'interno di ciò che vuoi scrivere c'è anche una variabile:
Codice PHP:
$prova 'ciao';
echo 
"oggi ho detto $prova"// Restituirà: "oggi ho detto ciao"
echo 'oggi ho detto $prova'// Restituirà: "oggi ho detto $prova"