PHP MySQL从天错误获取事件?

时间:2018-08-24 07:18:00

标签: php mysqli

我在通过代码获取一个月中的所有日期时遇到问题,我想列出该月中的每一天,然后从数据库中获取事件。我可以在for循环中使用while循环吗?如果我现在在数据库中有两个日期,那么我有3和4个while循环将for循环循环两次。

有人可以告诉我如何解决我需要一个功能的问题吗?请帮忙吗?

下面的图片希望可以帮助您理解我的问题。

我的数据库 database

我得到的结果是错误的。 wrong

这就是我想要的 enter image description here

print('more readable'); print('like this')

2 个答案:

答案 0 :(得分:0)

由于您正在使用具有日期功能的数据库,因此建议您使用它们。

SELECT `id` FROM `events` WHERE DAY(`day`)=24 AND MONTH(`day`)=12 AND YEAR(`day`)=2017

将从id中获取2017年12月24日的所有events

您甚至可以使用ORDER BYGROUP BY使其满足您的需求。

答案 1 :(得分:0)

您正在另一个循环中进行一个循环,如果您在第一个循环中获得3天(同时),那么您还将重复3次(连续3次),这就是为什么要重复得到结果的原因。建议删除一会儿,也许将结果放入数组,然后像这样在外面做第二个循环

$sqldates = array();  
while($row=mysqli_fetch_array($result)){
array_push($sqldates, $row['day']);
} 

  $firstday = '1';
  //get the cal they in selected month 
  $two = cal_days_in_month(CAL_GREGORIAN, 8, 2018); // 31
  //for loop to get all days in month( this makes the while loop run two times i have two dates in my db 3 and 4)
  for ($number = $firstday; $number <= $two; $number++)
  //if makes the nubers from database red.  
  if (in_array($number, $sqldate)) {
    echo"<td width=50 bgcolor='#f44242'>$number</td>";
  } else {
    echo"<td width=50 bgcolor='#1e8e8e'>$number</td>";
  }