【问题标题】:PHP compare dates and highlight samePHP比较日期并突出显示相同
【发布时间】: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


【解决方案1】:

尝试将所有数据库记录添加到数组中:

$runs = array();
$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);

    array_push($runs, $event1);
}

然后在所有天​​后循环并检查日期是否在数组中。

if (in_array($list, $runs)) {
    $show="<p style=\"color:#0f0;\">$list</p>";
} else {
    $show="<p>$list</p>
}

【讨论】:

  • 哇,Webmazz,非常感谢。你解决问题。我工作了 2 天并尝试了更多变体,但没有找到解决方案。谢谢。
  • 还有一个问题。我怎样才能从表格中获得更多信息?我需要提供有关跑步距离的信息 $distance1=$data['distance']; 我尝试再添加一个 ARRAY array_push($dist, $distance1); 或扩展原始 ARRAY array_push($runs, $event1, $distance1); 但它总是只返回第一个距离值,而不是所有跑步距离。
  • 是的,我想在所选日期旁边显示距离。谢谢你帮助我,但是这个代码页面不接受syntax error, unexpected '{'
  • 是的,我发现缺少} :) 但仍然显示相同的语法错误。我尝试array_push($runs, $event1); array_push($runs, $distance1);,但它在所有选定的日子里都给了我相同的价值……link
  • 试试这个:while ($data=mysqli_fetch_array($select1cal)) { $dateid1=$data['date']; $event1=date('Y-m-d', $dateid1); $distance1=$data['distance']; $run = (object) [ 'date' =&gt; $event1, 'distance' =&gt; $distance1 ]; array_push($runs, $run); }
猜你喜欢
  • 2017-11-16
  • 2018-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-13
  • 1970-01-01
相关资源
最近更新 更多