表名 - 收据表
数据如下表所示。
coupondate customer
02-04-2015 A
02-05-2015 A
02-06-2015 A
02-07-2015 A
02-08-2015 A
02-09-2015 A
05-04-2015 B
05-05-2015 B
05-06-2015 B
05-07-2015 B
05-08-2015 B
05-09-2015 B
在上表中客户A出现于2015年4月2日至2015年9月2日,所以我需要在02-04至02-09期间在客户A上显示p。
在上表中,客户B出现于2015年4月5日至2015年9月5日,所以我需要在05-04至05-09期间在客户B上显示p,就像明智一样......
预期输出
Days 02-04 03-04 04-04 05-04 06-04 07-04 08-04 09-04 10-04 11-04 12-04 13-04 14-04 -15-04.....like wise upto 02-09
A P P P P P P P P P P P .......like wise upto 15-09
B P P P P P P P like wis....upto 05-09
下面是我的代码......
<?php
if($_POST && isset($_POST['Submit']))
{
if($_POST['fromdate']!='' && $_POST['todate']!='')
{
$fromdate = $_POST['fromdate'];
$todate = $_POST['todate'];
$cityname = $_SESSION['Auth']['city'];
$formdate_r = DateTime::createFromFormat('d-m-Y', $fromdate);
$todate_r = DateTime::createFromFormat('d-m-Y', $todate);
$formdate_sql = $formdate_r->format("Y-m-d");
$todate_sql = $todate_r->format("Y-m-d");
$data = $database->getRows("SELECT RE.* FROM receipt_entry RE LEFT JOIN city_master CM ON RE.city_name = CM.id WHERE CM.cityname = :cityname
AND str_to_date(RE.coupondate,'%d-%m-%Y') BETWEEN :fromdate AND :todate ORDER BY STR_TO_DATE(RE.coupondate,'%d-%m-%Y') ASC",
array(':fromdate'=>$formdate_sql,':todate'=>$todate_sql,':cityname'=>$cityname));
}
}
?>
<?php
$startdate = $_POST['fromdate'];
$enddate = $_POST['todate'];
$start = date('d', strtotime($startdate));
$end=date('d', strtotime($enddate));
?>
<?php for ($x = $start; $x <= $end; $x++) { ?>
<th width="58%"><?php echo $x; ?></th>
<?php } ?>
以下代码用于检查优惠券的天数..
此代码工作正常,但仅在匹配日期显示单个P,但我需要在所有日期显示p ..
<?php if (is_array($data)) { foreach($data as $row) { ?>
<?php if($row['coupondate'] == $x) { ?>
<td>P</td>
<?php } else { ?>
<td>--</td>
<?php } ?>
<?php } }?>
答案 0 :(得分:0)
您的匹配if($row['coupondate'] == $x)
其中$row['coupondate']
是dd-mm-YYYY
字符串,而$x
是一个数字。所以试试:
if(date('d', strtotime($row['coupondate']) == $x)
@ honza-haering的评论也很有意义。