问题是我得到一个奇怪的公告,而不是2个正常的公告(如在我的数据库中)。
现在怎么样(截图):
代码:
<?PHP $query = "SELECT * FROM `thbs_announcements` ORDER BY `anno_date` DESC";
$result1 = mysqli_query($db, $query);
$anno = mysqli_fetch_array($result1, MYSQLI_ASSOC);
if(mysqli_num_rows($result1) > 0)
{
while($anno = $result1->fetch_assoc());
{
if($anno['anno_important'] == 1)
{
?><div class="card"><h2 style="margin-bottom: 5px;"><?php echo $anno['anno_text'];?> <span class="badge badge-danger">IMPORTANT</span></h2></div><?php
}
if($anno['anno_important'] != 1)
{
$today = date("Y-m-d");
$dateDiffa = dateDiffInDays($today, $anno['anno_date']);
if($dateDiffa < 7 || $dateDiffa > -7)
{
?><div class="card"><h2 style="margin-bottom: 5px;"><?php echo $anno['anno_text'];?> <span class="badge badge-primary">NEW</span></h2></div><?php
}
else
{
?><div class="card"><h2 style="margin-bottom: 5px;"><?php echo $anno['anno_text'];?></h2></div><?php
}
}
}
}
else
{
?><div class="card"><h2 style="margin-bottom: 5px;">No announcements here.</h2></div><?php
}
?>
答案 0 :(得分:2)
您正在呼叫
$anno = mysqli_fetch_array($result1, MYSQLI_ASSOC);
在循环之前,因此这将有效地丢弃第一行。您只需删除此行即可。
答案 1 :(得分:1)
我希望这会成功
<?PHP $query = "SELECT * FROM `thbs_announcements` ORDER BY `anno_date` DESC";
$result1 = mysqli_query($db, $query);
if(mysqli_num_rows($result1) > 0)
{
while($anno = mysqli_fetch_assoc($result1))
{
if($anno['anno_important'] == 1)
{
?><div class="card"><h2 style="margin-bottom: 5px;"><?php echo $anno['anno_text'];?> <span class="badge badge-danger">IMPORTANT</span></h2></div><?php
}
if($anno['anno_important'] != 1)
{
$today = date("Y-m-d");
$dateDiffa = dateDiffInDays($today, $anno['anno_date']);
if($dateDiffa < 7 || $dateDiffa > -7)
{
?><div class="card"><h2 style="margin-bottom: 5px;"><?php echo $anno['anno_text'];?> <span class="badge badge-primary">NEW</span></h2></div><?php
}
else
{
?><div class="card"><h2 style="margin-bottom: 5px;"><?php echo $anno['anno_text'];?></h2></div><?php
}
}
}
}
else
{
?><div class="card"><h2 style="margin-bottom: 5px;">No announcements here.</h2></div><?php
}
?>
答案 2 :(得分:0)
现在是另一个问题,但是使用相同的代码:
<?PHP $query = "SELECT * FROM `thbs_announcements` ORDER BY `anno_id` DESC";
$result1 = mysqli_query($db, $query);
if(mysqli_num_rows($result1) > 0)
{
while($anno = mysqli_fetch_assoc($result1))
{
if($anno['anno_important'] == 1)
{
?><div class="card col-sm-12"><h2 style="margin-bottom: 5px;"><?php echo $anno['anno_text'];?> <span class="badge badge-danger">IMPORTANT</span></h2></div><br><?php
}
if($anno['anno_important'] != 1)
{
$today = date("Y-m-d");
$dateDiffa = dateDiffInDays($today, $anno['anno_date']);
if($dateDiffa < 7 || $dateDiffa > -7)
{
?><div class="card"><h2 style="margin-bottom: 5px;"><?php echo $anno['anno_text'];?> <span class="badge badge-primary">NEW</span></h2></div><br><?php
}
else
{
?><div class="card"><h2 style="margin-bottom: 5px;"><?php echo $anno['anno_text'];?></h2></div><br><?php
}
}
}
}
else
{
?><div class="card"><h2 style="margin-bottom: 5px;">No announcements here.</h2></div><?php
}
?>
即使日期差超过7天,我仍然会在公告中收到新消息。
函数代码(dateDiffInDays):
function dateDiffInDays($date1, $date2)
{
$diff = strtotime($date2) - strtotime($date1);
return round($diff / 86400)+1;
}