我在通过代码获取一个月中的所有日期时遇到问题,我想列出该月中的每一天,然后从数据库中获取事件。我可以在for循环中使用while循环吗?如果我现在在数据库中有两个日期,那么我有3和4个while循环将for循环循环两次。
有人可以告诉我如何解决我需要一个功能的问题吗?请帮忙吗?
下面的图片希望可以帮助您理解我的问题。
我的数据库 database
我得到的结果是错误的。 wrong
这就是我想要的 enter image description here
print('more readable'); print('like this')
答案 0 :(得分:0)
由于您正在使用具有日期功能的数据库,因此建议您使用它们。
SELECT `id` FROM `events` WHERE DAY(`day`)=24 AND MONTH(`day`)=12 AND YEAR(`day`)=2017
将从id
中获取2017年12月24日的所有events
。
您甚至可以使用ORDER BY
和GROUP 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>";
}