Разбирайте несколько файлов JSON в таблицу HTML, используя PHP --too много строк

57
5

Я запускаю скрипт python, который возвращает файлы JSON в определенный каталог. Затем я вставляю данные из этих файлов в таблицу HTML. Все работает нормально, за исключением того, что для каждой записи я получаю 3 строки, один с информацией, которая мне нужна, а две другие пусты. Я думаю, что ошибка в моем PHP-коде, но я не могу ее исправить. Любая помощь будет оценена! Я смог исключить показ строк, сделав прописку на td/tr тегах 0, но я хочу исправить это правильно.

<style>

table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}

td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 0px;
}

tr:nth-child(even) {
background-color: #dddddd;
}
</style>

</head>
<body>
<table>
<thead>
<tr>
<th>IP Address</th>
<th>Manufacturer</th>
<th>Model</th>
<th>BIOSFamily</th>
<th>BIOSDate</th>
<th>SerialNumber</th>
<th>More Information</th>
</tr>
</thead>

<tbody>
<?php
error_reporting(0);
$dir = "/Users/Administrator/Desktop/Reserve1";
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
foreach(glob("*.json") as $filename) {
$data = file_get_contents($filename);
$testing = json_decode($data, true);
echo "<tr>";
echo "<td>{$filename }</td>";
foreach($testing as $row) {
echo "<td>{$row['Comments']['Manufacturer']}</td>";
echo "<td>{$row['Comments']['Model']} </td>";
echo "<td>{$row['Comments']['BIOSFamily'] }</td>";
echo "<td>{$row['Comments']['BIOSDate'] }</td>";
echo "<td>{$row['Comments']['SerialNumber']}</td>";
echo "</tr>";
}
}
}
echo "</table>";
}
?>
</html>

спросил(а) 2018-07-19T22:32:00+03:00 2 года, 2 месяца назад
1
Решение
106

Как упоминалось ранее, просто переместите echo "</tr>"; за пределами foreach.

<style>

table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}

td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 0px;
}

tr:nth-child(even) {
background-color: #dddddd;
}
</style>

</head>
<body>
<table>
<thead>
<tr>
<th>IP Address</th>
<th>Manufacturer</th>
<th>Model</th>
<th>BIOSFamily</th>
<th>BIOSDate</th>
<th>SerialNumber</th>
<th>More Information</th>
</tr>
</thead>

<tbody>
<?php
error_reporting(0);
$dir = "/Users/Administrator/Desktop/Reserve1";
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
foreach(glob("*.json") as $filename) {
$data = file_get_contents($filename);
$testing = json_decode($data,true);
echo "<tr>";
echo "<td>{$filename }</td>";
foreach($testing as $row) {
echo "<td>{$row['Comments']['Manufacturer']}</td>";
echo "<td>{$row['Comments']['Model']} </td>";
echo "<td>{$row['Comments']['BIOSFamily'] }</td>";
echo "<td>{$row['Comments']['BIOSDate'] }</td>";
echo "<td>{$row['Comments']['SerialNumber']}</td>";
}
echo "</tr>";
}
}
}
?>
</tbody>
</table>
</body>
</html>

Я надеюсь, что это поможет, иначе напечатайте ваши $testing с помощью var_dump или print_r чтобы посмотреть, правильно ли данные.

ответил(а) 2018-07-19T22:55:00+03:00 2 года, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема