Ja bym to zrobił trochę inaczej przy lekkim użyciu js:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<?php
try {
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
} catch (PDOException $e) {
echo 'Błąd: ' . $e->getMessage(); }
$stmt = $pdo->query("SELECT k.id_klienta as k_id_klienta, b.id_budowy as b_id_budowy, k.nazwa_f_pelna as k_nazwa_f_pelna, k.nazwa_f_skrot as k_nazwa_f_skrot, k.miasto as k_miasto, k.ulica as k_ulica, k.nrdomu as k_nrdomu, k.kod as k_kod,
b.nazwa_bud_pelna as b_nazwa_bud_pelna, b.nazwa_bud_skrot as b_nazwa_bud_skrot, b.miasto as b_miasto, b.ulica as b_ulica, b.nrbudynku as b_nrbudynku, b.kod as b_kod
FROM klienci k
LEFT JOIN budowy b ON k.id_klienta=b.id_klienta");
$data = [];
foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
$data[$row['k_id_klienta']]['klient'] = [
'id_klienta' => $row['k_id_klienta'],
'nazwa_f_pelna' => $row['k_nazwa_f_pelna'],
'nazwa_f_skrot' => $row['k_nazwa_f_skrot'],
'miasto' => $row['k_miasto'],
'ulica' => $row['k_ulica'],
'nrdomu' => $row['k_nrdomu'],
'kod' => $row['k_kod'],
];
if ($row['b_id_budowy']) {
$data[$row['k_id_klienta']]['budowy_klienta'][$row['b_id_budowy']] = [
'id_budowy' => $row['b_id_budowy'],
'nazwa_bud_pelna' => $row['b_nazwa_bud_pelna'],
'nazwa_bud_skrot' => $row['b_nazwa_bud_skrot'],
'miasto' => $row['b_miasto'],
'ulica' => $row['b_ulica'],
'nrbudynku' => $row['b_nrbudynku'],
'kod' => $row['b_kod'],
];
}
}
?>
<table>
<thead>
<tr>
<th>Nazwa firmy</th>
<th>Nazwa firmy skrot</th>
<th>Miasto</th>
<th>Ulica</th>
<th>Nr.</th>
<th>Kod pocztowy</th>
<th></th>
</tr>
</thead>
<tbody>
<?php foreach ($data as $row) : ?>
<tr>
<td>
<?php echo $row['klient']['nazwa_f_pelna'] ?></td>
<td>
<?php echo $row['klient']['nazwa_f_skrot'] ?></td>
<td>
<?php echo $row['klient']['miasto'] ?></td>
<td>
<?php echo $row['klient']['ulica'] ?></td>
<td>
<?php echo $row['klient']['nrdomu'] ?></td>
<td>
<?php echo $row['klient']['kod'] ?></td>
<?php if (!empty($row['budowy_klienta'])): ?> <td><a href='' class='pokaz-budowy-klienta' data-id-klienta='
<?php echo $row['klient']['id_klienta']; ?>'>Pokaz budowy klienta</a></td>
<?php else: ?>
<td><span>-</span></td>
<?php endif; ?>
</tr>
<tr data-id-klienta="
<?php echo $row['klient']['id_klienta']; ?>" style="display:none;">
<td colspan="100%">
<table>
<thead>
<tr>
<th>Nazwa budowy</th>
<th>Nazwa budowy skrot</th>
<th>Miasto</th>
<th>Ulica</th>
<th>Nr.</th>
<th>Kod pocztowy</th>
</tr>
</thead>
<tbody>
<?php foreach ($row['budowy_klienta'] as $budowyKlienta): ?>
<tr>
<td>
<?php echo $budowyKlienta['nazwa_bud_pelna']; ?></td>
<td>
<?php echo $budowyKlienta['nazwa_bud_skrot']; ?></td>
<td>
<?php echo $budowyKlienta['miasto']; ?></td>
<td>
<?php echo $budowyKlienta['ulica']; ?></td>
<td>
<?php echo $budowyKlienta['nrbudynku']; ?></td>
<td>
<?php echo $budowyKlienta['kod']; ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<script>
$('.pokaz-budowy-klienta').on('click', function (e) {
e.preventDefault();
var idBudowy = $(this).attr('data-id-klienta');
$('table tr[data-id-klienta="' + idBudowy + '"]').toggle();
});
</script>