我有一段执行日历的代码。在此日历上必须出现某些名称。但是,在每个日期只显示一个名称,而在数据库中,某些日期最多只能包含20个名称。
此图片应该有助于澄清事情:http://imgur.com/a31pj0s
在此图片中,您可以看到每个日期,其中一些日期有一个名称。如前所述,其中大多数都包含更多名称。
现在,我理解为什么这不起作用,因为它只执行一次,但我怎样才能让它实际工作?请帮帮我:))
除了更易于阅读之外,这里还有指向同一段代码的链接:http://codepad.org/tVSzHDTx
<?php
$j = 2;
$i = 1;
//query the database
$query = mysql_query("SELECT * FROM months");
//fetch the results / convert results into an array
echo '<div class="accordion" id="calendar">';
while($rows = mysql_fetch_array($query)) {
$month = $rows['month'];
$id = $rows['id'];
echo '
<div class="accordion-group">
<div class="accordion-heading" id="month_'.$id.'">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#calendar" href="#monthsid'.$id.'">
'.$month.'
</a>
</div>
<div id="monthsid'.$id.'" class="accordion-body collapse">
<div class="accordion-inner">';
$n = $rows['num_of_days'];
echo '<ul class="list-group" id="'.$id.'" style="margin-bottom: 0;">';
for ($i = 1; $i <= $n; $i++) {
if ($j == 7) {
echo '<li class="list-group-item" id="'.$i.'" style="margin-bottom: 5px;">';
} else {
echo '<li class="list-group-item" id="'.$i.'">';
}
echo '<a data-toggle="modal" href="#myModal" class="add_member" id="'.$month.' '.$i.'">+</a>
<span class="badge">'.$i.'</span>';
if ($i == date("j")) {
echo '<div class="day_segment current_day">';
} else {
echo '<div class="day_segment">';
}
if ($j == 1) {
echo '<i style="color: #aaa;">'.$i.' |</i> Monday';
$j++;
} else if ($j == 2) {
echo '<i style="color: #aaa;">'.$i.' |</i> Tuesday';
$j++;
} else if ($j == 3) {
echo '<i style="color: #aaa;">'.$i.' |</i> Wednesday';
$j++;
} else if ($j == 4) {
echo '<i style="color: #aaa;">'.$i.' |</i> Thursday';
$j++;
} else if ($j == 5) {
echo '<i style="color: #aaa;">'.$i.' |</i> Friday';
$j++;
} else if ($j == 6) {
echo '<i style="color: #aaa;">'.$i.' |</i> Saturday';
$j++;
} else if ($j == 7) {
echo '<i style="color: #aaa;">'.$i.' |</i> Sunday';
$j = 1;
}
echo '</div>';
$posts_query = mysql_query("SELECT * FROM posts WHERE day=$i ");
while ($rows_items = mysql_fetch_array($posts_query)) {
$entry_player = $rows_items['author'];
$entry_comment = $rows_items['comment'];
$entry_day = $rows_items['day'];
$entry_month = $rows_items['month'];
}
for ($k = 1; $k <= 1; $k++) { /* I tried using another for loop, did not work */
if ($id == $entry_month && $i == $entry_day) {
echo '<span class="label label-success" data-toggle="tooltip" rel="tooltip" title="'.$entry_comment.'">'.$entry_player.'</span>';
} else {
echo '<span class="label"></span>';
}
}
echo '</li>';
}
echo '
</ul>
</div>
</div>
</div>
';
} /* End While Loop */
echo '</div></div>';
?>
答案 0 :(得分:2)
如评论中所述,您不应该使用mysql_函数,因为它们已被弃用且不安全。请改用MySQLi或PDO。
要回答您的问题,下面的代码块就是每天只显示一个条目的原因。在while循环中,每次都会覆盖所有四个变量,因此只有最后一个变量将显示在for循环中。 for循环不是必需的。
while ($rows_items = mysql_fetch_array($posts_query)) {
$entry_player = $rows_items['author'];
$entry_comment = $rows_items['comment'];
$entry_day = $rows_items['day'];
$entry_month = $rows_items['month'];
}
for ($k = 1; $k <= 1; $k++) { /* I tried using another for loop, did not work */
if ($id == $entry_month && $i == $entry_day) {
echo '<span class="label label-success" data-toggle="tooltip" rel="tooltip" title="'.$entry_comment.'">'.$entry_player.'</span>';
} else {
echo '<span class="label"></span>';
}
}
尝试将代码更改为以下内容:
while ($rows_items = mysql_fetch_array($posts_query)) {
$entry_player = $rows_items['author'];
$entry_comment = $rows_items['comment'];
$entry_day = $rows_items['day'];
$entry_month = $rows_items['month'];
if ($id == $entry_month && $i == $entry_day) {
echo '<span class="label label-success" data-toggle="tooltip" rel="tooltip" title="'.$entry_comment.'">'.$entry_player.'</span>';
} else {
echo '<span class="label"></span>';
}
}