【问题标题】:Collect all rows in one year without repeating year收集一年内的所有行而不重复年份
【发布时间】:2019-06-23 17:44:56
【问题描述】:

我想要这个输出:

2018
事件1
事件2

2019
事件3
事件4

我的代码输出:

2018
事件1
2018
事件1
2019
事件3
2019
事件4

如果没有函数GROUP_CONCAT() 和重复年份,我怎么能做到这一点?

我的代码:

while ($myrow = mysqli_fetch_array($result)) {
    $var = $myrow['event_date'];
    echo" 
    " . date("Y", strtotime($var)) . "
    " . date("d.m.Y", strtotime($var)) ." 
    "?> 
    <a class="link" href="article.php?event_id=<?php echo

    $myrow['event_id']; ?>"><code><?php echo $myrow['article_title']; ?></a> 
    <a class="link" href="speaker.php?speaker_id=<?php echo
    $myrow['speaker_id']; ?>"><?php
    echo" 
    ".$myrow['speaker_degree']." 
    ".$myrow['speaker_name']." 
    ".$myrow['speaker_surname']." 
    ".$myrow['speaker_patronymie']." 
    </a></b></p> 
    ";
}

我的查询:

SELECT * 
FROM event_t  
JOIN event_speaker_article_t ON event_t.event_id=event_speaker_article_t.event_id 
JOIN article_t ON event_speaker_article_t.article_id=article_t.article_id 
JOIN speaker_t ON event_speaker_article_t.speaker_id=speaker_t.speaker_id 
ORDER by event_date

【问题讨论】:

  • 将年份存储在变量中。然后,在下一次迭代中,如果年份相同,则不要重复它。如果不相同,请回显并更新变量。

标签: php mysql mysqli


【解决方案1】:

您可以尝试将其放入数组中:

<?php
    // Your query
    $sel = "SELECT * 
    FROM event_t  
    JOIN event_speaker_article_t ON event_t.event_id=event_speaker_article_t.event_id 
    JOIN article_t ON event_speaker_article_t.article_id=article_t.article_id 
    JOIN speaker_t ON event_speaker_article_t.speaker_id=speaker_t.speaker_id 
    ORDER by event_date";

    $result = mysqli_query($con,$sel)

    $arrData = array();
    $Count = 0;
    $OldYear = "";

    while($row = mysqli_fetch_array($result))
    {
        $FullDate = $myrow['event_date']; 
        $Year = date("Y", strtotime($FullDate));
    	
    	if($OldYear == "" || $OldYear != $Year)
    	{
    		$OldYear = $Year;
    		$Count = 0;
    	}
    	
    	$arrData[$Year][$Count]['event_id'] = $row['event_id'];
    	$arrData[$Year][$Count]['article_title'] = $row['article_title'];
    	$arrData[$Year][$Count]['speaker_id'] = $row['speaker_id'];
    	$arrData[$Year][$Count]['speaker_degree'] = $row['speaker_degree'];
    	$arrData[$Year][$Count]['speaker_name'] = $row['speaker_name'];
    	$arrData[$Year][$Count]['speaker_surname'] = $row['speaker_surname'];
    	$arrData[$Year][$Count]['speaker_patronymie'] = $row['speaker_patronymie'];
    	
    	$Count++;
    }
?>

HTML 部分

 <?php
    foreach($arrData as $Year => $year)
    {
    ?>
    	<h4> <?php echo $Year . "<br />"; ?> </h4>

    	<?php
    	for($event = 0; $event < $arrData[$Year].length; $event++)
    	{
    	?>
    		<a class="link" href="article.php?event_id=<?php echo $arrData[$Year][$event]['event_id']; ?>"><?php echo $arrData[$Year][$event]['article_title']; ?></a> 
    		<a class="link" href="speaker.php?speaker_id=<?php echo $arrData[$Year][$event]['speaker_id']; ?>"><?php echo $arrData[$Year][$event]['speaker_degree' ] ."  ". $arrData[$Year][$event]['speaker_name'] ."  ". $arrData[$Year][$event]['speaker_surname'] ."  ". $arrData[$Year][$event]['speaker_patronymie']; ?></a>
    	<?php
    	}
    }
    ?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-10
    • 2021-03-03
    • 2022-10-13
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    相关资源
    最近更新 更多