2014-10-21 2 views
0

Этот проект, над которым я работаю, включает некоторую работу в отеле, где я подключаюсь к серверу и получаю ответ JSON. Я использую JSON_Decode как таковой, $output = json_decode($data, true);Отображение информации из файла JSON

И данные в формате 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, на новой странице, display_room_report.php. Я пробовал кодировать это, но я не могу заставить его работать. Я редко использую JSON, поэтому я не уверен, правильно ли я делаю это? Я захватывая в номере комнаты следующим образом:

<?php 
if(isset($_GET['id'])){ 
    $id = $_GET['id']; 
} 

То, что я хотел бы сделать это за номер комнаты, который передается через, вывод, что параметры числа номеров, такие как adult: enabled or disabled и 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); 

я могу захватить весь перечень информации из данных JSON следующим образом:

<?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; ?> 

Однако, мне нужно, чтобы захватить конкретный номер id room_number, затем выводят соответствующие данные номера номера. Если пользователь входит в комнату 104, я хотел бы только отображать информацию для комнаты 104, на странице display_room_report.php

Большое спасибо за проверку этого. Я пытался понять, что я делаю, если вам нужны дополнительные объяснения, пожалуйста, спросите.

ответ

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 и получить данные специально для этой комнаты (что, скорее всего, будет меньшей полезной нагрузкой), тогда вы можете динамически отображать эти данные на странице без обновления страницы.

+1

Спасибо @Jacob! Я должен был это увидеть сам, но я ожидал, что это будет более сложным, чем это. Это будет работать и сейчас, я также ценю ваш совет по API. – ValleyDigital

Смежные вопросы