Я пытаюсь создать форму, которая ищет значение datetime
и времени JSON, и возвращает информацию между первой и последней датой ввода пользователем. Должен признаться, я не знаю, правильно ли я делаю это, и до сих пор мне не удалось заставить его работать.
Мои данные JSON выглядят следующим образом:
{ "apiVersion": "0.1", "data": { "offset": 0, "limit": 50, "count": 50, "total": 1008, "reports": [ { "type": "STB_EVENT_TIMED", "data": { "datetime": "2014-11-04T08:25:07-08:00", "originator": "6007", "roomNumber": "1474", "eventItem": "Watched movie 31008", "duration": "P0Y0M0DT0H0M45.000S" } }, { "type": "ROOM_CHARGE", "data": { "datetime": "2014-11-04T08:25:07-08:00", "originator": "6006", "roomNumber": "204", "chargeItem": "Premium Services", "chargeAmountCents": 495 } },
Таким образом, у меня есть эта форма, где я устанавливаю значения для каждого введенного текстового поля и вводя их на мою страницу TEST.PHP с использованием метода GET. Пользователь вводит номер комнаты и первую и последнюю дату в формате «2014-11-04».
if(isset($_GET['submit_search'])){ $room_number = $_GET['id']; $first_date = $_GET['first_date']; $last_date = $_GET['last_date']; }
В моем PHP-скрипте, где я форматировал данные, я пытался создать цикл for, который принимает $i= $first_date; $i<=$last_date; i++
$i= $first_date; $i<=$last_date; i++
$i= $first_date; $i<=$last_date; i++
и отображать каждую позицию из JSON, которая находится между датами набора пользователей.
Вот фрагмент моего кода, который у меня есть, где я пытаюсь вывести эту информацию:
<?php $matchFound = false; ?> <?php foreach($output1['data']['reports'] as $reporting): ?> <?php if($reporting['type'] == "ROOM_CHARGE" && $reporting['data']['roomNumber'] == $room_number): ?> <?php for ($i=$first_date; $i<=$last_date; $i++): ?> <tr> <td><?php echo 'Room Charge'; ?></td> <td><?php echo substr($reporting['data']['datetime'], -26, 10) ?></td> <td><?php echo substr($reporting['data']['datetime'], -14, 8) ?></td> <td><?php echo ($reporting['data']['roomNumber']) ?> </td> <td><?php echo ($reporting['data']['originator']) ?> </td> <td><?php echo ($reporting['data']['chargeItem']) ?></td> <td><?php echo number_format(($reporting['data']['chargeAmountCents'])/100, 2, '.', ',') ?></td> <td>-</td> </tr> <?php endfor; ?> <?php elseif($reporting['type'] == "STB_EVENT_TIMED" && $reporting['data']['roomNumber'] == $room_number): ?> <?php for ($i=$first_date; $i<=$last_date; $i++): ?> <tr> <td><?php echo 'Event'; ?></td> <td><?php echo substr($reporting['data']['datetime'], -26, 10) ?></td> <td><?php echo substr($reporting['data']['datetime'], -14, 8) ?></td> <td><?php echo ($reporting['data']['roomNumber'])?> </td> <td><?php echo ($reporting['data']['originator']) ?> </td> <td><?php echo ($reporting['data']['eventItem']) ?></td> <td>-</td> <td><?php echo substr($reporting['data']['duration'], -10, 2) ?>:<?php echo substr($reporting['data']['duration'], -7, 2) ?>:<?php echo substr($reporting['data']['duration'], -4, 2) ?></td> </tr> <?php endfor; ?> <?php endif; ?> <?php endforeach; ?>
Я зацикливаюсь на for loop
. Я не уверен, что так оно и должно быть написано? Кто-нибудь есть идея, если это будет работать нормально? Если есть другой способ, который я могу достичь этого, пожалуйста, укажите мне в правильном направлении. Я бы очень хотел это выяснить.
Кажется, вы пропустили строку с endfor
для соответствия <?php for ($i=$first_date; $i=$last_date; $i++): ?>
Вторая возможная проблема в вашем коде – это цикл for ($i=$first_date; $i=$last_date; $i++)
– как вы вводите даты на веб-странице? (Я вижу, что вы используете $ _GET). Вы уверены, что они будут двумя номерами, такими как 20141031 и 20141107? Если это так, цикл будет давать вам несуществующие даты, такие как 20141099, и расчет цены может быть неправильным.
Третьей возможной проблемой является установка цикла for ($i=$first_date; $i=$last_date; $i++)
внутри <TR> .. </TR>
– у вас будет много столбцов вместо многих строк для вашей таблицы ,