我正在研究的这个项目涉及到酒店的一些工作,我正在连接到服务器并获得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的信息
非常感谢您查看此内容。我试着理解我在做什么,如果你需要进一步的解释,请问。
答案 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并专门为该房间检索数据(这很可能是一个较小的有效负载),然后你可以动态地在页面上显示这些数据,而无需刷新页面。