Вот как вы численно сортируете свою таблицу:
1) присвоить предполагаемой таблице идентификатор (в моем случае кода это главная таблица)
2) Вызывайте функцию сортировки каждый раз, когда вы нажимаете на заголовки таблицы (включая номер столбца, первый из которых равен 0, каждый раз, когда вы добавляете больше столбцов, увеличивается число внутри имени функции на единицу, в этом случае sortTable (0), sortTable (1) ), ....
Окончательный результат будет примерно таким (протестируйте этот пример, он работает):
<table id="main-table">
<tr>
<th style="cursor:pointer" onclick="sortTable(0)">colomn 0</th>
<th style="cursor:pointer" onclick="sortTable(1)">colomn 1</th>
<th style="cursor:pointer" onclick="sortTable(2)">colomn 2</th>
<th style="cursor:pointer" onclick="sortTable(3)">colomn 3</th>
<th style="cursor:pointer" onclick="sortTable(4)">colomn 4</th>
</tr>
<tr>
<td><?php echo rand(0,999);?></td>
<td><?php echo rand(0,999);?></td>
<td><?php echo rand(0,999);?></td>
<td><?php echo rand(0,999);?></td>
<td><?php echo rand(0,999);?></td>
</tr>
<tr>
<td><?php echo rand(0,999);?></td>
<td><?php echo rand(0,999);?></td>
<td><?php echo rand(0,999);?></td>
<td><?php echo rand(0,999);?></td>
<td><?php echo rand(0,999);?></td>
</tr>
<tr>
<td><?php echo rand(0,999);?></td>
<td><?php echo rand(0,999);?></td>
<td><?php echo rand(0,999);?></td>
<td><?php echo rand(0,999);?></td>
<td><?php echo rand(0,999);?></td>
</tr>
<tr>
<td><?php echo rand(0,999);?></td>
<td><?php echo rand(0,999);?></td>
<td><?php echo rand(0,999);?></td>
<td><?php echo rand(0,999);?></td>
<td><?php echo rand(0,999);?></td>
</tr>
<tr>
<td><?php echo rand(0,999);?></td>
<td><?php echo rand(0,999);?></td>
<td><?php echo rand(0,999);?></td>
<td><?php echo rand(0,999);?></td>
<td><?php echo rand(0,999);?></td>
</tr>
</table>
<script>
function sortTable(column) {
var table, rows, switching, i, x, y, shouldSwitch;
table = document.getElementById("main-table");
switching = true;
while (switching) {
switching = false;
rows = table.getElementsByTagName("TR");
for (i = 1; i < (rows.length - 1); i++) {
shouldSwitch = false;
x = rows[i].getElementsByTagName("TD")[column];
y = rows[i + 1].getElementsByTagName("TD")[column];
if (Number(x.innerHTML) > Number(y.innerHTML)) {
shouldSwitch = true;
break;
}
}
if (shouldSwitch) {
rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
switching = true;
}
}
}
</script>
И вот что вам нужно сделать, чтобы сгенерировать номер столбца:
$counter = 0;
foreach ($row as $field => $value){
print " <th onclick='sortTable($counter)'>$field</th>";
$counter = $counter+1;
}