日历脚本PHP

时间:2011-10-21 16:22:26

标签: php mysql

我正在尝试创建日历应用程序。

我对使用事件回显日期的方法有疑问。

我试过这个:

$nuvarende_maned=date("m");
$sql=("SELECT * FROM kalender WHERE begivenhed_maned='$nuvarende_maned'");
$result=mysql_query($sql);
$count=mysql_num_rows($result);
$row=mysql_fetch_array($result);

echo "<div id='kalender'>";

for($a=1;$a<=date("t");$a++){

$dag_m_begivenhed = $row['begivenhed_dag'];

if($count>=1 && $dag_m_begivenhed == $a){
    echo "<div class='kalender_dag'><a title='$row[begivenhed_overskrift]' href=''>".$a."</a></div>";
} else {
    echo "<div class='kalender_dag'>".$a."</div>";
}
}

echo "</div>";

它正在打印一个带有事件的日期。如果创建一个while()循环,我需要一些方法。但我无法弄清楚放在哪里。 我在for()中尝试了一段时间(),但它不起作用。 我知道我有$ row = mysql_fetch_array($ result);在开始时,这就是为什么我总是只有数据库中的第一个匹配。我这样做是为了看看数据库是否有问题。

1 个答案:

答案 0 :(得分:1)

在进入日历生成循环之前,您必须获取所有日历事件。现在,你只获取查询结果的第一行,然后扔掉其余部分(mysql_fetch_array返回一个ROW作为数组,而不是整个结果集)。

$events = array();

$sql = "SELECT * FROM kalender WHERE begivenhed_maned='$nuvarende_maned'";
$result = mysql_query($sql) or die(mysql_error());

while($row = mysql_fetch_assoc($result)) {
   $events[$row['begivenhed_dag']] = $row;
}

for ($a = ...) {
   if (isset($events[$a])) {
       ... output whatever parts of $events[$a] you want
   }
}

请注意,这不会在一天内处理多个事件。如果您需要该功能,那么您将不得不稍微修改数据库提取循环,因此它将这些多个事件存储在子数组中。