简体   繁体   中英

Display json content in php table

I am trying to display json content in php table but I'm getting error every time. I have some syntax error and cant figure out what should i change?

PS. Trying built it with Slim framework

Here is my code:

<div class="data-table-wrapper">
<?php
    $myData = file_get_contents("http://ergast.com/api/f1/current.json");
    $myObject = json_decode($myData);
?>
    <table class="data-table">
        <thead>
            <tr>
                <td>Date</td>
                <td>Time</td>
                <td>Round</td>
                <td>Circuit</td>
                <td>Location</td>
            </tr>
        </thead>
        <?PHP
        foreach($myObject as $key=>$item);
        ?>
        <tr>
            <td><?PHP echo $item->Date; ?></td>
            <td><?PHP echo $item->Time; ?></td>
            <td><?PHP echo $item->Round; ?></td>
            <td><?PHP echo $item->Circuit; ?></td>
            <td><?PHP echo $item->Location; ?></td>
        </tr>
        <?PHP
            }
        ?>
    </table>
</div>

My error is:

Notice: Undefined property: stdClass::$Date in C:\\xampp\\htdocs\\challenge\\app\\view\\challenge.php on line 38

Notice: Undefined property: stdClass::$Time in C:\\xampp\\htdocs\\challenge\\app\\view\\challenge.php on line 39

Notice: Undefined property: stdClass::$Round in C:\\xampp\\htdocs\\challenge\\app\\view\\challenge.php on line 40

Notice: Undefined property: stdClass::$Circuit in C:\\xampp\\htdocs\\challenge\\app\\view\\challenge.php on line 41

I have just looked at your json format in comparison to the code. The path mapping to the json is incorrect. I have rectified that below;

Please review the following:

PHP code :

$myData = file_get_contents("http://ergast.com/api/f1/current.json");
$myObject = json_decode($myData);
$myObjectMap = $myObject->MRData->RaceTable->Races;

For each format :

  <?php foreach($myObjectMap as $key => $item): ?>
    <tr>
      <td><?PHP echo $item->date; ?></td>
      <td><?PHP echo $item->time; ?></td>
      <td><?PHP echo $item->round; ?></td>
      <td><?PHP echo $item->Circuit->circuitId; ?></td>
      <td><?PHP echo $item->Circuit->Location->country; ?></td>
    </tr>
  <?php endforeach; ?>

Full Code:

<html>
<head>
  <title>PHP</title>
</head>
<body>
  <?php
    $myData = file_get_contents("http://ergast.com/api/f1/current.json");
    $myObject = json_decode($myData);
    $myObjectMap = $myObject->MRData->RaceTable->Races;
  ?>
  <table>
    <thead>
      <tr>
        <td>Date</td>
        <td>Time</td>
        <td>Round</td>
        <td>Circuit</td>
        <td>Location</td>
      </tr>
    </thead>
    <tbody>
      <?php foreach($myObjectMap as $key => $item): ?>
        <tr>
          <td><?PHP echo $item->date; ?></td>
          <td><?PHP echo $item->time; ?></td>
          <td><?PHP echo $item->round; ?></td>
          <td><?PHP echo $item->Circuit->circuitId; ?></td>
          <td><?PHP echo $item->Circuit->Location->country; ?></td>
        </tr>
      <?php endforeach; ?>
    </tbody>
  </table>

</body>
</html>

The problem is that decoded array looks differently. Dump your encoded array before the loop to understand the right data structure or use JSON beautify service . Also use the right upper/lowercase to address properties. Updated loop may look like this:

<div class="data-table-wrapper">
<?php
$myData = file_get_contents("http://ergast.com/api/f1/current.json");
$myObject = json_decode($myData);

?>
   <table class="data-table">
   <thead>
    <tr>
     <td>Date</td>
      <td>Time</td>
      <td>Round</td>
      <td>Circuit</td>
      <td>Location</td>
    </tr>
    <?PHP
    foreach($myObject->MRData->RaceTable->Races as $key=>$item){
    ?>
  <tr>
    <td><?PHP echo $item->date; ?></td>
    <td><?PHP echo $item->time; ?></td>
    <td><?PHP echo $item->round; ?></td>
    <td><?PHP echo $item->Circuit->circuitName; ?></td>
    <td><?PHP echo $item->Circuit->Location->locality; ?></td>
  </tr>
 <?PHP
   }
 ?>
   </table>
       </div>
        </div>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM