【发布时间】:2018-06-21 19:43:02
【问题描述】:
我想打印一个月中的几天并突出显示与我的 MySQL 表中的日期相同的日子。
表格中有几行跑步(跑步日期、距离、速度...),我想突出显示我跑步时的月份。
我的代码:
$user="1";
$dbmonth="201806";
$month = date('m');
$year = date('Y');
$days = date('t');
for($d=1; $d<=$days; $d++)
{
$time=mktime(12, 0, 0, $month, $d, $year);
if (date('m', $time)==$month)
$list=date('Y-m-d', $time);
$select1cal = mysqli_query($conn, "SELECT * FROM runs WHERE user=$user AND dbmonth=$dbmonth ORDER BY date");
while($data=mysqli_fetch_array($select1cal)) {
$dateid1=$data['date'];
$event1=date('Y-m-d', $dateid1);
if ($list == $event1) {$show="<p style=\"color:#0f0;\">$list</p>";} else {$show="<p>$list</p>";}
}
echo $show;
}
此代码打印一个月的所有日期(2018-06-01 到 2018-06-30),但突出显示的只有一个日期。如何突出显示表格中的所有日期?例如,我的表中有 4 行日期介于 2018-06-01 和 2018-06-30 之间。
这是我的代码的输出:
<p>2018-06-01</p>
<p>2018-06-02</p>
<p>2018-06-03</p>
<p>2018-06-04</p>
<p>2018-06-05</p>
<p>2018-06-06</p>
<p>2018-06-07</p>
<p>2018-06-08</p>
<p>2018-06-09</p>
<p>2018-06-10</p>
<p>2018-06-11</p>
<p>2018-06-12</p>
<p style="color:#0f0;">2018-06-13</p>
<p>2018-06-14</p>
<p>2018-06-15</p>
<p>2018-06-16</p>
<p>2018-06-17</p>
<p>2018-06-18</p>
<p>2018-06-19</p>
<p>2018-06-20</p>
<p>2018-06-21</p>
<p>2018-06-22</p>
<p>2018-06-23</p>
<p>2018-06-24</p>
<p>2018-06-25</p>
<p>2018-06-26</p>
<p>2018-06-27</p>
<p>2018-06-28</p>
<p>2018-06-29</p>
<p>2018-06-30</p>
【问题讨论】:
-
您的 while 循环只遍历数据一次 - 在您的第二次 for 循环迭代中,mysqli_fetch_array 会立即返回 false。您必须先重置记录指针,才能以这种方式再次循环相同的数据库结果。但是您实际上应该首先将这些数据预先放入一个数组中。
标签: php date string-comparison