Veritabanı bağlantı şeklinizi belirtmediğiniz için MySQLi olarak varsayıyorum.

EDİT://
<?php

## Burası sınıfları dizide belirtildiği şekilde alması için (STATİK) ##
$siniflar = array(0 => "5A", 1 => "5B", 2 => "5C"); # Bu manual olarak sınıfları yazmak için
## Burası sınıfları dizide  belirtildiği şekilde alması için (STATİK) ##





## Burası sınıfları veritabanından alması için (DİNAMİK) ##
$i = 0;
$sorgu = mysqli_query($baglanti,"SELECT sinif FROM veriler");
while ($sonuc = mysqli_fetch_assoc($sorgu)) {
$siniflar[$i] = $sonuc["sinif"];
$i++
}
$siniflar = array_unique($siniflar);
## Burası sınıfları veritabanından alması için (DİNAMİK) ##







for ($i=0;$i<count($siniflar);$i++) {

echo '
<h1>'.$siniflar[$i].'</h1>
<table>
<thead>
<th>Öğrenci</th>
<th>Genel Not</th>
<th>Ders 1</th>
<th>Ders 2</th>
<th>Ders 3</th>
<th>Ders 4</th>
<th>Ders 5</th>
<th>Ders 6</th>
<th>Ders 7</th>
<th>Ders 8</th>
<th>Ders 9</th>
<th>Ders 10</th>
<th>Ders 11</th>
</thead>
<tbody>
';


$sorgu2 = mysqli_query($baglanti,"SELECT * FROM veriler WHERE sinif='".$cikti["sinif"] ."' ");

while ($cikti2 = mysqli_fetch_assoc($sorgu2)) {

echo '
<td>'.$cikti2["adi"].'</td>
<td>'.$cikti2["genel_not"].' </td>
<td>'.$cikti2["ders1"].' </td>
<td>'.$cikti2["ders2"].' </td>
<td>'.$cikti2["ders3"].' </td>
<td>'.$cikti2["ders4"].' </td>
<td>'.$cikti2["ders5"].' </td>
<td>'.$cikti2["ders6"].' </td>
<td>'.$cikti2["ders7"].' </td>
<td>'.$cikti2["ders8"].' </td>
<td>'.$cikti2["ders9"].' </td>
<td>'.$cikti2["ders10"].' </td>
<td>'.$cikti2["ders11"].' </td>
';
}

echo '</tbody></table>';
}

?>
Not: tablo isminizi bilmediğim için veriler olarak adlandırdım, buraları kendi tablo adınıza göre düzenleyiniz..