Я получил XML-файл, отображаемый PHP, и весь код работает нормально, но моя проблема в том, что внутри тега (экзамен и атрибут есть глава, которая является тем, что выводится на экран) есть более одного тега (например, это то, что меня отображают как экзамен #) и я передаю данные в таблицу, и я хочу, чтобы они отображались следующим образом:
| Глава 1 | Глава 2 |
| - Экзамен 1 --- | - Экзамен 1 --- |
| - Экзамен 2 --- | - Экзамен 2 --- |
| Глава 3 | Глава 4 |
| - Экзамен 1 --- | - Экзамен 1 --- |
Но то, что я получаю, выглядит примерно так: (хотя я знаю почему)
| Глава 1 |
| - Экзамен 1 --- |
| Глава 1 |
| - Экзамен 2 --- |
| Глава 2 |
| - Экзамен 1 --- |
Он продолжает повторять атрибут тега, и я знаю почему, потому что я повторяю атрибут тега, который у меня есть в качестве переменной в данных таблицы. Поэтому вопрос не в том, почему это происходит, а в том, как я могу изменить его так, чтобы он отображался так, как я хочу.
Полагаю, возможно, есть способ удалить атрибут, если их несколько (я знаю, что вы можете удалить его, но я не знаю, как показать его один раз и удалить остальные)
Код, который у меня есть, выглядит примерно так:
В XML
<maintag>
<exam chapter="Chapter 1">
<ex id="1">Exam 1</ex>
<ex id="2">Exam 2</ex>
<ex id="3">Exam 3</ex>
</exam>
<exam chapter="Chapter 2">
<ex id="4">Exam 1</ex>
<ex id="5">Exam 2</ex>
</exam>
<exam chapter="Chapter 3">
<ex id="6">Exam 1</ex>
</exam>
<exam chapter="Chapter 4">
<ex id="7">Exam 1</ex>
<ex id="8">Exam 2</ex>
<ex id="9">Exam 3</ex>
<ex id="10">Exam 4</ex>
</exam>
</maintag>
PHP
<?php
$xml = DOMDocument::load('examdata.xml');
$xpath = new DOMXPath($xml);
$exams = $xpath->query('//exam/ex');
$istyle = 1; //This is to add gray after every other row
echo " <table cellpadding=\"0\" cellspacing=\"3\" border=\"0\" width=\"60%\" align=\"center\">
<tr id=\"center\" bgcolor=\"#999\">
<td>Book</td>
<td>Exam</td>
<td>ID</td>
<td>Student's Exam Status</td>
</tr>
";
foreach($exams as $exams2) {
$chapter = $exams2->parentNode->getAttribute('chapter');
$examid = $exams2->getAttribute('id');
$examname = $exams2->nodeValue;
if ($examid < 5) { //where it says 5 there goes a php variable where it has the queried user's exam number from the database, again this is all finished no need to change this.
$exstatus = "You already took this exam.";
}elseif ($examid == 5) {
$exstatus = "This is your exam (exam link)";
}elseif ($examid > 5) {
$exstatus = "You are not yet on this exam";
}
echo "<tr id=\"center\"";
if ($istyle % 2 == 0)
echo " bgcolor=\"#ccc\"";
echo ">
<td>$chapter</td>
<td>$examname</td>
<td>$examid</td>
<td>$exstatus</td>
</tr>";
$istyle++;
}
echo "
</table>";
?>
Обратите внимание, что структура таблицы отличается от того, как я сказал, что хочу, и я получал ее выше, я просто изменил ее, потому что не мог оставить ее такой, какая она была.
Обратите внимание, что то, что я хочу изменить, это то, где написано главу, я хочу, чтобы оно отображало его один раз и под ним для отображения экзамена 1 и ниже этого экзамена. а рядом с главой поместите следующую главу (в данном случае главу 2) и ниже этого экзамена 1 и ниже этого экзамена 2 и т. д. и после этого создайте еще одну строку таблицы ниже экзамена 2 и поместите две другие главы и ниже, чем остальные экзамены.
Обратите внимание, что экзамены не следуют шаблону, и это отредактированная версия файла, поскольку их сотни, а значения отличаются от того, что вы видите выше.
Приведенный выше код работает, я просто хочу изменить его, чтобы он соответствовал моим требованиям.