<?php
$kolumny = [
'znak_stali',
'stan_obróbki_cieplnej',
'oznaczenie_wlasnosci',
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
];
$wyniki = [
[
'id' => 1,
'znak_stali' => '16M',
'stan_obróbki_cieplnej' => 'N',
'oznaczenie_wlasnosci' => 'R1/10000',
'a' => null,
'b' => null,
'c' => null,
'd' => null,
'e' => null,
'f' => null,
'g' => null,
'h' => null,
],
[
'id' => 2,
'znak_stali' => '16M',
'stan_obróbki_cieplnej' => 'N',
'oznaczenie_wlasnosci' => 'R1/10000',
'a' => null,
'b' => null,
'c' => null,
'd' => null,
'e' => null,
'f' => null,
'g' => null,
'h' => null,
],
[
'id' => 3,
'znak_stali' => '16M',
'stan_obróbki_cieplnej' => 'N',
'oznaczenie_wlasnosci' => 'R1/100000',
'a' => null,
'b' => null,
'c' => null,
'd' => null,
'e' => null,
'f' => null,
'g' => 32,
'h' => null,
],
[
'id' => 4,
'znak_stali' => '16M',
'stan_obróbki_cieplnej' => 'N',
'oznaczenie_wlasnosci' => 'R1/10000',
'a' => 978,
'b' => 432,
'c' => 31,
'd' => 78,
'e' => 645,
'f' => 97,
'g' => 564,
'h' => 31,
],
];
$toPrint = [
'oznaczenie_wlasnosci',
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
];
$resultsNumber = count($wyniki);
$firstRecord = array_pop($wyniki);
?>
<!DOCTYPE html>
<html lang="en-PL"><head></head><body>
<table id="table2">
<thead>
<tr>
<td class="topic" colspan="4"></td>
<td class="topic" colspan="25">Granica pełazania</td>
</tr>
<tr>
<?php foreach ($kolumny as $row): ?>
<td class="topic"><?= $row ?></td>
<?php endforeach; ?>
</tr>
</thead>
<tbody>
<tr>
<td class='col' rowspan='<?= $resultsNumber ?>'><?= $firstRecord['znak_stali'] ?></td>
<td class='colsother' rowspan='<?= $resultsNumber ?>'>
<a href='./../system/info.php?stal=<?= $firstRecord['znak_stali'] ?>'><?= $firstRecord['stan_obróbki_cieplnej'] ?></a>
</td>
<?php foreach($firstRecord as $key => $value): ?>
<?php if(in_array($key, $toPrint)): ?>
<td class='cols'><?= $value ?></td>
<?php endif ?>
<?php endforeach; ?>
</tr>
<?php foreach($wyniki as $row): ?>
<tr>
<?php foreach($row as $key => $value): ?>
<?php if(in_array($key, $toPrint)): ?>
<td class='cols'><?= $value ?></td>
<?php endif ?>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</body>
</html>
Trochę przekombinowane. Lepiej byłoby robić tego rowspana za pomoca JSa porównując wartości.
Błędy w twoim kodzie:
- zła składnia HTML,
- brak znaczników tr,
- HTML z PHP, przez co składnia nieczytelna
- nazwy kolumn w tabeli SQL to nie labelki do tabeli w html
- używanie znaczników do stylowania
- używanie id do stylowania