вывод данных .json файла в php файл в html таблице - PullRequest
0 голосов
/ 03 ноября 2019

ребята, я хотел бы решить эту проблему. Я застрял на ней 2 дня, поэтому я хочу указать в таблице 2 значение того, кто говорит: rank: 9074838, и того, которое находится в топ-1, значение: 33. У меня есть .json. файл с именем: greenz_lewis.json, который выглядит следующим образом

      {
        "accountId": "6df47486-86d6-4b4b-a5e7-4c6b1b8c9322",
        "user": "greenz_lewis",
        "stats": {
                 "p2": {
                      "score": {
                          "label": "Score",
                          "category": "General",
                          "rank": 9074838,
                          },
                       "top1": {
                          "label": "Wins",
                          "value": "33",
                            }
                    }
             }

, и у меня есть PHP-файл, который выглядит следующим образом

<?php
  session_start();
  if ( $_SESSION['logged_in'] != 1 ) {
        $_SESSION['message'] = "You must log in before viewing your profile page!";
        header("location: error.php");    
    }
    else {
        // Makes it easier to read
        $username = $_SESSION['username'];
   }

?>
<!DOCTYPE HTML>
<html>
   <head>
       <script type="text/javascript"src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"> </script>
  </head>
  <body class="is-preload">
      <section id="main" class="wrapper">
          <div class="inner">
              <table id="stats1">
                    <th>solo wins</th>                  
                    <th>duos wins</th>
                    <th>squad wins</th>
                    <th>total killz</th>
            </table>
  <script>
            $(document).ready(function(){ 

                $.ajax({
                    url:'userstats/<?=$_SESSION['username'] ?>.json',
                    dataType:"json",
                    success:function(data){
                        $(data.stats).each(function(index,value){
                            var record="<tr><td>"+(top1)+
                                "</td><td>"+top1.label+"</td><td>"+
                                 top1.value+"</td>"
                                "</td></tr>";
                                $("table").append(record);
                                });
                            }
                        });
                });
        </script>
    </div>
    </section>
            <script src="assets/js/jquery.min.js"></script>
            <script src="assets/js/jquery.scrollex.min.js"></script>
            <script src="assets/js/jquery.scrolly.min.js"></script>
            <script src="assets/js/browser.min.js"></script>
            <script src="assets/js/breakpoints.min.js"></script>
            <script src="assets/js/util.js"></script>
            <script src="assets/js/main.js"></script>
    </body>
</html>

, поэтому он не работает, я пробовал как 5 разныхпути это самый близкий

1 Ответ

1 голос
/ 03 ноября 2019

Я заметил некоторые проблемы с вашим файлом JSON. У вас есть лишние запятые и пропущенная скобка.

Вот версия без проблем со структурой.

{
    "accountId": "6df47486-86d6-4b4b-a5e7-4c6b1b8c9322",
    "user": "greenz_lewis",
    "stats": {
        "p2": {
            "score": {
                "label": "Score",
                "category": "General",
                "rank": 9074838
            },
            "top1": {
                "label": "Wins",
                "value": "33"
            }
        }
    }
}

Тогда я бы посоветовал сделать маленькие шаги.

Получить содержимоефайла

Сначала получите содержимое файла (независимо от его расширения). Вы можете достичь этой цели, используя, например, функцию file_get_contents .

<?php

$content = file_get_contents("file.json");

var_dump($content);

даст

string(258) "{
    "accountId": "6df47486-86d6-4b4b-a5e7-4c6b1b8c9322",
    "user": "greenz_lewis",
    "stats": {
        "p2": {
            "score": {
                "label": "Score",
                "category": "General",
                "rank": 9074838
            },
            "top1": {
                "label": "Wins",
                "value": "33"
            }
        }
    }
}
"

Разбор содержимого файла JSON

Затем разберите string в массив. Вы можете использовать json_decode функцию для этого.

<?php

$decoded = json_decode($content, true);

var_dump($decoded);

даст

array(3) {
  ["accountId"]=>
  string(36) "6df47486-86d6-4b4b-a5e7-4c6b1b8c9322"
  ["user"]=>
  string(12) "greenz_lewis"
  ["stats"]=>
  array(1) {
    ["p2"]=>
    array(2) {
      ["score"]=>
      array(3) {
        ["label"]=>
        string(5) "Score"
        ["category"]=>
        string(7) "General"
        ["rank"]=>
        int(9074838)
      }
      ["top1"]=>
      array(2) {
        ["label"]=>
        string(4) "Wins"
        ["value"]=>
        string(2) "33"
      }
    }
  }
}

Создать элементы таблицы

Далее,давайте создадим элементы таблицы.

<tr>
<td><?= $decoded['stats']['p2']['score']['rank']; ?></td>
<td><?= $decoded['stats']['p2']['top1']['value']; ?></td>
</tr>

даст

<tr>
<td>9074838</td>
<td>33</td>
</tr>

Соберите все

<?php

$content = file_get_contents('foo.json');

if (! $content) {
    // File doesn't exists
}

$decoded = json_decode($content, true);
if (! $decoded) {
    // Unable to parse JSON
}

?>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Player</title>
  </head>
  <body>
    <table>
      <tr>
        <th>Rank</th>
        <th>Value</th>
      </tr>
      <tr>
        <td><?= $decoded['stats']['p2']['score']['rank']; ?></td>
        <td><?= $decoded['stats']['p2']['top1']['value']; ?></td>
      </tr>
    <table>
  </body>
</html>

даст

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Player</title>
  </head>
  <body>
    <table>
      <tr>
        <th>Rank</th>
        <th>Value</th>
      </tr>
      <tr>
        <td>9074838</td>
        <td>33</td>
      </tr>
    <table>
  </body>
</html>

result

Я даю вам радость обрабатывать ошибки перенаправления и обработки в случае, если файл не существует или происходит сбой декодирования JSON.

Проблемы

Будьте осторожны с тем, как вы пишете свою таблицу. В таблице, которую вы начали, есть четыре столбца, но вы хотите добавить два значения.

Вы используете Ajax, но вам это не нужно. Работа по извлечению содержимого файла может быть выполнена на стороне сервера.

Опять же, будьте осторожны с тем, как вы структурируете свой файл JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...