我正试图创建一个表单,搜索JSON的datetime
值,并返回用户输入的第一个和最后一个日期之间的信息。我不得不承认,我不知道我这样做是否正确,到目前为止我还没能让它发挥作用。
我的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
}
},
因此,我有了这个表单,在这里我为输入的每个文本字段设置值,并使用GET方法将它们带入我的TEST.PHP页面。用户以"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++
并显示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>
中——您的表将有许多列而不是许多行。