Вот хороший способ сгенерировать строки показанного вами дисплея.
Сначала используйте этот запрос:
SELECT name, role FROM teams ORDER BY role DESC;
Он генерирует строки в том порядке, в котором вы хотите, сначала для калитсменов.
Затем используйте этот php-код для генерации вашего дисплея.
<?php
$sql="SELECT name, role FROM teams ORDER BY role DESC";
$result=mysqli_query($conn,$sql) or die(mysqli_error());
while($row=mysqli_fetch_assoc($result)){
$role = $row["role"];
$name = $row["name"];
$wicketkeeper = $role == "WicketKeeper" ? $name : "";
$allrounder = $role == "AllRounder" ? $name : "";
?>
<tr>
<td><?php echo $wicketkeeper ?></td>
<td><?php echo $allrounder ?></td>
<td></td>
<td></td>
</tr>
<?php } ?>
Это отображает строки в наборе результатов из вашего запроса, помещая имена в столбцы в соответствии с их ролями.
В общем случае эта задача называется поворотом таблицы.
Pro tip 1 Старайтесь избегать SELECT *
в запросах. Вместо этого дайте названия столбцов, которые вам нужны. Это облегчит чтение чужого кода и может ускорить выполнение ваших запросов.
Pro tip 2 Каждый раз, когда вы ловите себя на повторном использовании одного и того же запроса, когда он варьируется только предложением WHERE
, попробуйте использовать один запрос. Это может ускорить работу вашего приложения.