#php #html #mysql #sql #html-table
#php #HTML #mysql #sql #html-таблица
Вопрос:
Я запускаю несколько запросов MySQL и основываюсь на таких переменных, как человек, их функция и т.д. она должна выводить данные в виде строк и столбцов в HTML-таблице. Однако при запуске кода получается один большой беспорядок, когда данные не следуют за правильными столбцами. Смотрите изображение ниже для получения дополнительной информации (https://imgur.com/alRkog8). Кажется, я не могу понять, что я делаю не так, поскольку мне кажется, что я правильно разместил все ‘tr’ и ‘td’.
session_start();
if(!isset($_SESSION['user1'])){
header("location:".WEBROOT."index.php");
exit();
}
include_once DOCROOT . 'DBconnect.php';
?>
<html>
<head>
<?php
$title = "Participants";
$file = __FILE__;
include DOCROOT . 'pages/menu.php';
?>
<div id="content">
<div class="widecontentitem" id="lastitem">
<?php
$result = mysqli_query($db_link, 'SELECT institutionID FROM users WHERE users.UserID = '' . $_SESSION['user1'] . ''');
if (!$result) {
die('Invalid query: ' . mysqli_error());
}
$institutionID = "";
while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
$institutionID = $row[0];
}
print "<input type="hidden" id="institution" value="" . $institutionID . ""> ";
$result = mysqli_query($db_link, 'SELECT participants.name, participants.surname, participants.email, participants.special, participants.housingcomments, participants.functionID, participants.infix, participants.committee, participants.dateOfBirth, participants.housing, participants.countryID, participants.participantID FROM participants WHERE participants.institutionID =' . $institutionID);
if (!$result) {
die('Invalid query:2 ' . mysqli_error());
}
print "<table>";
print "<tr><th><b>Function</b></th><th><b>Name</b></th><th><b>Surname</b></th><th><b>Date Of Birth</b></th><th><b>Country</b></th><th><b>Committee</b></th></tr>";
while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
if($row[9]==1){
$row[0] = "(H)" . $row[0];
}
if( $row[5]==4){
$title = "Delegate ";
$result3 = mysqli_query($db_link, 'SELECT delegation FROM delegations WHERE ambassadorID =' . $row[11] );
$num_rows = mysqli_num_rows($result3);
if($num_rows==1){
$title = "Ambassador ";
}
$result2 = mysqli_query($db_link, 'SELECT delegation FROM delegations WHERE delegationID = ' . $row[10] );
while ($row2 = mysqli_fetch_array($result2, MYSQLI_NUM)) {
print "<tr><td>$title </td><td>$row[0] </td><td>$row[1] </td><td>$row[8] </td><td>$row2[0] </td><td>$row[7] </td></tr>";
}
}
if( $row[5]==2){
print "<tr><td>MUN-Director </td><td>$row[0] </td><td>$row[1] </td><td>$row[8] </td><td></td><td></td></tr>";
}
if($row[5]==5){
print "<tr><td>President </td><td>$row[0] </td><td>$row[1] </td><td>$row[8] </td><td></td><td>$row[7] </td></tr>";
}
if($row[5]==6){
print "<tr><td>Deputy President </td><td>$row[0] </td><td>$row[1] </td><td>$row[8] </td><td></td><td>$row[7] </td></tr>";
}
if($row[5]==7){
print "<tr><td>Chair </td><td>$row[0] </td><td>$row[1] </td><td>$row[8] </td><td></td><td>$row[7] </td></tr>";
}
if($row[5]==8){
print "<tr><td>Deputy Chair </td><td>$row[0] </td><td>$row[1] </td><td>$row[8] </td><td></td><td>$row[7] </td></tr>";
}
if($row[4]!=NULL || $row[3]!=NULL){
print "<table>";
if($row[3]!=NULL){
print "<tr><td colspan="6">Comments: </td><td>$row[3] </td></tr>";
}
if($row[4]!=NULL){
print "<tr><td colspan="6">Housing: </td><td>$row[4] </td></tr>";
}
print "</table>";
}
}
print "</table>";
?>
</div>
<?php include '../footer.php';?>
</div>
</body>
</html>
Ответ №1:
По крайней мере, одна проблема, вероятно, связана с вложенными элементами <table> отсюда:
if($row[4]!=NULL || $row[3]!=NULL){
print "<table>";
if($row[3]!=NULL){
Из документа элемента таблицы MDN:
Разрешенное содержимое в этом порядке:
- необязательный
<caption>
элемент,- ноль или более
<colgroup>
элементов,- необязательный
<thead>
элемент,- либо одно из следующих:
- ноль или более
<tbody>
элементов- один или несколько
<tr>
элементов- необязательный
<tfoot>
элемент
Возможно, вы захотите использовать что-то вроде Nu Html для проверки HTML. Один из способов ее использования —
- щелкните правой кнопкой мыши страницу и выберите «Просмотреть источник страницы» или аналогичный, в зависимости от вашего браузера
- выберите все и скопируйте
- Выберите Проверить с помощью:
text input
в валидаторе - вставьте исходный код страницы и нажмите проверить
Комментарии:
1. Удаление дополнительных тегов <table> действительно решило мою проблему. Nu Html тоже указал мне на это. Спасибо за вашу помощь и быстрый ответ!