tablerow — создание таблицы rowspan Переполнение стека

мне нужна помощь с моим кодом .. как у меня вывод, как на картинке ниже, где он будет автоматически вставлять rowspan .. мой текущий код

$result = $cmsDB->query("SELECT * FROM ".$cmsDB->prefix("departments")."");

echo "<br /><br /><table class='table table-bordered table-striped'>
<tr>
<th>Bil</th>
<th>Department</th>
<th>Staff</th>
</tr>";

$count =1 ;

while($row = $cmsDB->fetchArray($result))
{
$deptid=$row['deptid'];
$deptname=$row['deptname'];

echo "<tr><td>".$count++."</td><td>".$deptname."</td><td>";
global $cmsDB;
$result2 = $cmsDB->query("SELECT * FROM ".$cmsDB->prefix("staff")." WHERE deptid=$deptid");

while($row = $cmsDB->fetchArray($result2))
{

$name=$row['name'];
echo "".$name." <br />";

}

}echo "</td></tr></table>";

токовый выход

Желаемый результат

текущий вывод и желаемые результаты

0

Решение

Обратите внимание: по замыслу выполнение двух запросов для этого просто плохая идея. Все еще продолжаю с этим. Все, что вам нужно сделать, это выполнить второй запрос перед созданием блока. Запишите количество полученных данных и используйте их в качестве rowSpan. Достаточно просто.

global $myDB;
$result2 = $myDB->query("SELECT * FROM ".$myDB->prefix("staff")." WHERE deptid=$deptid");

$rowSpan=$result2-num_rows;

echo "<tr>"echo "<td rowspan=" . $rowSpan . ">" . $count++ . "</td>";
echo "<td rowspan=" . $rowSpan . ">".$deptname."</td>";

Второй цикл while должен выводить

<td>$name</td></tr>

Важно закрыть строку таблицы внутри цикла while и начать новую строку таблицы на случай, если вы печатаете второе имя для того же отдела.

1

Другие решения

$result = $cmsDB->query("SELECT * FROM ".$cmsDB->prefix("departments")."");

echo "<br /><br /><table class='table table-bordered table-striped'>
<tr>
<th>Bil</th>
<th>Department</th>
<th>Staff</th>
</tr>";

$count =1 ;

while($row = $cmsDB->fetchArray($result))
{
$deptid=$row['deptid'];
$deptname=$row['deptname'];

global $cmsDB;
$result2 = $cmsDB->query("SELECT * FROM ".$cmsDB->prefix("staff")." WHERE deptid=$deptid");$num_rows = $cmsDB->getRowsNum($result2);$rowSpan=$num_rows;

echo "<tr>";
echo "<td rowspan=" . $rowSpan . ">" . $count++ . "</td>";
echo "<td rowspan=" . $rowSpan . ">".$deptname."</td>";

while($row = $cmsDB->fetchArray($result2))
{

$name=$row['name'];
echo "<td>$name</td></tr>";
}

}echo "</table>";
0

По вопросам рекламы [email protected]