Автоматическое заполнение таблицы из файла json

#php #json #html

#php #json #HTML

Вопрос:

У меня есть базовая таблица, которая считывает данные из файла json для заполнения строк, это заполнение обновляется сторонним приложением, и мне нужно будет автоматически добавлять новые строки, без необходимости просмотра обновлять страницу. В основном я ищу учебные пособия или что-то подобное о том, как это сделать. Заранее спасибо за любой совет!

 $strJsonFileContents = file_get_contents("./includes/dispatch.json");
$mdt = json_decode($strJsonFileContents, true);
?>
<div id="callboard">
    <div align="center">
            Call ID: <input type="text" id="AlertId" class="mdt" size="10" readonly  />
            Type: <input type="text" id="AlertType" class="mdt" size="10" readonly  />
            Location: <input type="text" id="AlertLocation" class="mdt" size="25" readonly  />
            Status: <input type="text" id="AlertStatus" class="mdt" size="10" readonly  />
            Units: <input type="text" id="AlertUnits" class="mdt" size="20" readonly  /><hr><span id='ct' ></span><hr>
    </div>
<hr>
    <h3>Active Calls</h3>
    <table id="mdt-table">
    <tr onclick="javascript:showRow(this);">
    <th>Call ID</th>
    <th>Type</th>
    <th>Caller</th>
    <th>Location</th>
    <th>Details</th>
    <th>Status</th>
    <th colspan="2">Units</th>
    <th>Other Info</th></tr>
    <?php
    $arrlength = count($mdt);
    for ($x = 0; $x < $arrlength; $x  )
            {
            if ($mdt[$x][AlertType]=='10-13')
                    {
                    echo "<tr class="blinking" onclick="javascript:showRow(this);">";
                    }
            else { echo "<tr onclick="javascript:showRow(this);">";
                    }
            echo "<td name="AlertId">". $mdt[$x][AlertID]; echo "</td>";
            echo "<td name="AlertType">". $mdt[$x][AlertType]; echo "</td>";
            echo "<td name="AlertCaller">". $mdt[$x][AlertCaller]; echo "</td>";
            echo "<td name="AlertLocation">". $mdt[$x][AlertLocation]; echo "</td>";
            echo "<td name="AlertMessage">". $mdt[$x][AlertMessage]; echo "</td>";
            echo "<td name="AlertStatus">". $mdt[$x][AlertStatus]; echo "</td>";
            echo "<td name="AlertUnits" colspan="2">". $mdt[$x][AlertUnits]; echo "</td>";
            echo "<td name="AlertOther">". $mdt[$x][AlertOther]; echo "</td>";
            echo "</tr>";
            }
?>
    </table>
  

Комментарии:

1. у кого-нибудь есть предложения?

2. Вы должны добавить код javascript (ajax) на свою страницу и получить данные и обновить таблицу с их помощью.

Ответ №1:

Когда вы получаете данные JSON, в частности строку, вы можете использовать функцию PHP json_decode($raw_json_string) , которая вернет ассоциативный массив (если объект js) или просто обычный массив (массив js)

если вы хотите получить данные JSON для javascript, вы можете использовать функцию php

json_encode($array); это вернет строку, готовую к использованию в Javascript в качестве объектной переменной.

итак, если вы хотите использовать объект JSON в PHP….

php:

`

 $raw_json_string = {data: 2, data2:"hello world", data3:[1,2,3,4],};
$array = json_decode($raw_json_string);

$array['data'] == 2; // true

$array['data2'] == "hello world"; // true 

$array['data3'] == [1,2,3,4]; // true`
  

затем вы можете использовать этот массив и перебирать его для создания строк вашей HTML-таблицы.

надеюсь, это поможет.

Комментарии:

1. Спасибо! Я уже это делаю. Мой вопрос в том, что когда удаленный источник добавляет новую запись в файл json, таблица html (php) автоматически обновляется новой строкой без какой-либо помощи пользователя.

2.ОК. какой бы HTML-код вы ни печатали php при загрузке страницы, это все, что php может сделать для вас, поскольку это серверная часть — в основном PHP печатает один раз. Вам нужно будет включить Javascript на страницу, чтобы динамически добавлять строки из данных, полученных с помощью AJAX. Jquery позволит вам добавить элемент в таблицу и упростит это вместо ванильного javascript. w3schools.com/jquery/jquery_dom_add.asp w3schools.com/js/js_htmldom_nodes.asp

3. да, я понял эту часть. Ценю отзывы о jquery / ajax. Я углублюсь в это.