显示JSON文件中的信息

时间:2014-10-21 19:00:57

标签: php json get

我正在研究的这个项目涉及到酒店的一些工作,我正在连接到服务器并获得JSON响应。我使用JSON_Decode$output = json_decode($data, true);

我正在使用的JSON数据如下所示:

{
    "apiVersion": "0.1",
    "data": {
        "roomCount": 105,
        "rooms": [{
            "room_number": "104",
            "services": [{
                "adult": {
                    "enabled": false
                },
                "room_charges": {
                    "enabled": false
                }
            }],
            "status": "OCCUPIED"
        }, {
            "room_number": "105",
            "services": [{
                "adult": {
                    "enabled": true
                },
                "room_charges": {
                    "enabled": false
                }
            }],
            "status": "OCCUPIED"
        }

我创建了一个表单,供用户输入房间号,然后我使用GET方法将该房间号码转到另一个页面display_room_report.php。请参阅我在下面创建的表单。

<div id="form1">
    <form action="display_room_report.php" method="GET" name="reporting" id="reporting"><br />
          <label for="single_room">Enter Room Number</label>
          <input type="text" name="id" id="single_room" size="20" required><br><br>
          <input style="margin-top: 20px" type="submit" name="submit" id="submit" value="Submit">
        </form>
    </div>

在表单中,我使用id作为房间号输入,我希望在新页面上显示与JSON数据中的房间号对应的剩余信息{{1} }。我已经尝试过编码,但是我无法让它工作。我很少使用JSON,所以我不确定我是否正确使用它?我抓住房间号码如下:

display_room_report.php

我想要做的是传递的房间号码,输出房间号码参数,例如<?php if(isset($_GET['id'])){ $id = $_GET['id']; } adult: enabled or disabled。我连接到服务器以获取JSON响应如下:

room charges: enabled or disabled

我可以从JSON数据中获取整个信息列表,如下所示:

try {
    $message = "api\tjson\tget\trooms\n";
    $handle  = fsockopen("192.xxx.xx.xx", 5678);
    fwrite($handle, $message);
}
catch (Exception $e) {
    echo 'ERRORS: We are unable to connect to the server', $e->getMessage(), "\n";
};
if ($handle == TRUE) {
    $data = '';
    while (!feof($handle)) {
        $data .= fread($handle, 8192);
    }
    fclose($handle);
    $output = json_decode($data, true);

但是,我需要获取特定的<?php foreach($output['data']['rooms'] as $info): ?> <tr> <td><?php echo $info['room_number']; ?></td> <?php $services = reset($info['services']); ?> <td><?php echo ($services['room_charges']['enabled'] == 1) ? 'ENABLED' : 'DISABLED'; ?></td> <td><?php echo ($services['adult']['enabled'] == 1) ? 'ENABLED' : 'DISABLED'; ?></td> <td><?php echo $info['status']; ?></td> </tr> </body> <?php endforeach; ?> room_number然后输出该房间号的相应数据。如果用户进入房间104,我只想在页面id上显示房间104的信息

非常感谢您查看此内容。我试着理解我在做什么,如果你需要进一步的解释,请问。

1 个答案:

答案 0 :(得分:1)

<?php foreach($output['data']['rooms'] as $info): ?>
      <?php if($info['room_number'] == $id): ?>
          <tr>
               <td><?php echo $info['room_number']; ?></td>
                   <?php $services = reset($info['services']); ?>
               <td><?php echo ($services['room_charges']['enabled'] == 1) ? 'ENABLED' : 'DISABLED'; ?></td>
               <td><?php echo ($services['adult']['enabled'] == 1) ? 'ENABLED' : 'DISABLED'; ?></td>                
               <td><?php echo $info['status']; ?></td>
          </tr>
      <?php endif; ?>
<?php endforeach; ?>

这应该适用于您现在拥有的代码。

但是,我会查看API文档,看看您是否可以按房间号查找信息。如果可以,那么你可以ajax发布到API并专门为该房间检索数据(这很可能是一个较小的有效负载),然后你可以动态地在页面上显示这些数据,而无需刷新页面。

相关问题