我只得到一个奇怪的行而不是2个普通行

时间:2019-11-18 11:21:41

标签: php mysql arrays select

问题是我得到一个奇怪的公告,而不是2个正常的公告(如在我的数据库中)。

现在怎么样(截图):

https://prnt.sc/q5q8ju

代码:

<?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
                }
                ?>

3 个答案:

答案 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; 
}