gpt4 book ai didi

PHP MySQL 7 天,每周,周一至周五分页日历?

转载 作者:行者123 更新时间:2023-11-29 02:35:52 24 4
gpt4 key购买 nike

我正在尝试找出设计“7 天日历”的最佳方法,该日历将包含一个 HTML 表格,其中列为“名称、星期日、星期一、星期二、星期三、星期四、星期五、星期六”。 HTML 表格行将填充来 self 的数据库的数据,即。名字会有一个人的名字,星期天会显示那个人在星期天需要做什么,即“刷牙”等等。它与事件日历非常相似,除了我想要完成的不需要每小时查看,只是一个简单的 7 天,周日到周六 View 。

我的数据库当前由“名称、事件详细信息和事件日期”组成。

我的 HTML 表格列由列“名称 - 星期日 - 星期一 - 星期二 - ...”组成

我的逻辑:每次加载页面时,脚本都会查询数据库并查看是否有任何 EventDate 条目等于当前正在查看的一周中的 7 天之一。如果 EventDate 匹配,它将自己列在与该日期对应的 HTML 表格列匹配的行中。单击“上一周”或“下一周”将更改为另一周并且应该重新启动脚本,但这次它将使用不同的日期列表进行检查。

有人愿意分享一些他们可以想出什么来实现这一目标的例子吗?

这是我到目前为止想出的...问题是如果一个人下有多个事件,它会为每个事件创建一个新行,而我正在努力将其列出每个事件在一行中。

<table border='1'>
<tr>
<th>Name</th>
<th>Sunday</th>
<th>Monday</th>
<th>Tuesday</th>
<th>Wednesday</th>
<th>Thursday</th>
<th>Friday</th>
<th>Saturday</th>
</tr>
<?php


function getCurrentWeek()
{
$weekArray = array();

// set the current date
$date = date("m/d/Y"); //'03/08/2011';

$ts = strtotime( $date );

// calculate the number of days since Monday
$dow = date('w', $ts);
$offset = $dow - 0;
if ($offset < 0) $offset = 6;

// calculate timestamp for the Monday
$ts = $ts - $offset*86400;

// loop from Monday till Sunday
for ($i=0; $i<7; $i++, $ts+=86400){
$temp_date = date("Y-m-d", $ts); // Reformat the dates to match the database
array_push( $weekArray, $temp_date );
}

return($weekArray);

}

$currentWeek = getCurrentWeek();

// Loop through the data array
while($row = mysql_fetch_array($result)){

$eventDate= $row['EventDate'];

// Loop through the currentWeek array to match a date from the database from a date in the current week
foreach ($currentWeek as $weekDay){

// If there is a matching date...
if ($eventDate == $weekDay) {
echo "<tr><td>".$row['Name']."</td>";

foreach ($currentWeek as $weekDay2){
if ($eventDate == $weekDay2)
echo "<td>".$row['EventName']."</td>";
else
echo "<td></td>";
}

echo "</tr>";

}
}
}

?>

</table>

最佳答案

要选择一个星期,你可以做类似的事情

set @weekday:= dayofweek(@adate);  
set @StartOfWeek:= date_sub(@adate,INTERVAL @weekday DAY);
set @EndOfWeel:= date_add(@adate,INTERVAL (7- @weekday) DAY);

然后选择我要做的那一周

SELECT * FROM TableWithEvents  
WHERE TableWithEvents.EventDate
BETWEEN date_sub(@adate,interval @weekday day)
AND date_add(@date,INTERVAL (7-@weekday) DAY);

注意使用@adate - @weekday 不会 工作,您必须使用愚蠢的间隔语法使用 date_sub/date_add。它在添加月份时确实工作得很好,它正确地添加了一个月中的天数或者它知道闰年的年份(但我离题了)。

对于分页,您可以使用上面的 SELECT with limit start, end;像这样:

SELECT * FROM sometable WHERE some_where_thingy LIMIT 0,20;

哦,别忘了给 EventDate 字段添加索引。
我建议将名为 id 的自动增量主键添加到包含事件的表中。
这样你就可以唯一地链接到其他表中的特定事件,如下所示:

Table FavEvents:   
- id: integer (autoinc primary)
- Event_id: integer (link to your event)
- FanName: varchar(x) (name of user you loves event or what ever)

然后你可以像这样选择“bill”最喜欢的事件:

SELECT * FROM FavEvents  
INNER JOIN Events ON (FavEvents.Event_id = Event.id)
WHERE FavEvents.FanName = "bill"

我从不使用 PHP,所以在这方面帮不了你,祝你好运。

关于PHP MySQL 7 天,每周,周一至周五分页日历?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5237247/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com