php - 收集一年内的所有行,不重复年份

标签 php mysql mysqli

我想要这样的输出:

2018
event1
event2

2019
event3
event4

我的代码的输出:

2018
event1
2018
event1
2019
event3
2019
event4

如果没有函数 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
    // 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
    	}
    }
    ?>

关于php - 收集一年内的所有行,不重复年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56726399/

相关文章:

PHP 上传 14MB 文件失败

PHP - 错误的字母循环

mysql - 如何在 MySQL 中搜索 JSON 数据?

php - 将大表格发布到 php 文件

javascript - 不使用 sessionStorage 或任何 HTML5 功能的选项卡特定 cookie

mysql - 查询具有多个选项的集合

mysql - 修改 MySQL 查询以与 PostgreSQL 一起使用

php - 从数据库表中选择所有 - 但在其中一列上使用函数

php - 使用 mysqli 和 PHP 将数百条记录插入 mysql 数据库

php - 带有登录 ID 的反斜杠或正斜杠阻止在 php 中成功获取数据?