Php 按月份和年份列出的数据库结果

Php 按月份和年份列出的数据库结果,php,mysql,database,joomla,Php,Mysql,Database,Joomla,我有一个Joomla 3.1站点,它将显示关于所做贡献的报告。报告应按月份和年份分为几组。我有一个从数据库中提取数据的代码,但不能使它每个月都放在一个单独的中,每年都放在一个父中,然后再放在它的月份中。怎么做的?这是我的密码 <?php $db = JFactory::getDbo(); $query = $db->getQuery(true); $query->select(array($db->quoteName('contribution_date'), $db

我有一个Joomla 3.1站点,它将显示关于所做贡献的报告。报告应按月份和年份分为几组。我有一个从数据库中提取数据的代码,但不能使它每个月都放在一个单独的
中,每年都放在一个父
中,然后再放在它的月份中。怎么做的?这是我的密码

<?php 
$db = JFactory::getDbo();
$query = $db->getQuery(true);

$query->select(array($db->quoteName('contribution_date'), $db->quoteName('contribution_amount'), $db->quoteName('source')));
$query->from($db->quoteName('contribution'));

$db->setQuery($query);

$results = $db->loadObjectList();
?>

<table class='financial-reports'><th>aaa</th><th>bbb</th><th>ccc</th>
<?php
foreach ( $results as $result) {
   echo '<tr>' . '<td class="fin-rep-date">' . JFactory::getDate($result->contribution_date)->format('d M, Y') . '</td>' . 
                 '<td class="fin-rep-sum">' . $result->contribution_amount . ' ' .'руб.' . '</td>' . 
                 '<td class="fin-rep-source">' . $result->source . '</td>' . '</tr>';
}
?>
</table>

aaabbccc

我认为最简单的方法是将结果转换为多维数组,如下所示:

foreach ($results as $result) {
    $resultsArray[JFactory::getDate($result->contribution_date)->format('Y')][JFactory::getDate($result->contribution_date)->format('M')][] = $result;
}
然后你可以这样使用它:

<?php foreach ($resultsArray as $year) : ?>
   <div>
      <?php foreach ($year as $month) : ?>
        <div>
           <?php foreach ($month as $item) : ?> 
             <div>YOUR OUTPUT <?php echo $item->contribution_date; ?></div>
           <?php endforeach; ?>
        </div>
     <?php endforeach; ?>
   </div>
<?php endforeach; ?>

你的产出

我认为最简单的方法是将结果转换为多维数组,如下所示:

foreach ($results as $result) {
    $resultsArray[JFactory::getDate($result->contribution_date)->format('Y')][JFactory::getDate($result->contribution_date)->format('M')][] = $result;
}
然后你可以这样使用它:

<?php foreach ($resultsArray as $year) : ?>
   <div>
      <?php foreach ($year as $month) : ?>
        <div>
           <?php foreach ($month as $item) : ?> 
             <div>YOUR OUTPUT <?php echo $item->contribution_date; ?></div>
           <?php endforeach; ?>
        </div>
     <?php endforeach; ?>
   </div>
<?php endforeach; ?>

你的产出

我认为最简单的方法是将结果转换为多维数组,如下所示:

foreach ($results as $result) {
    $resultsArray[JFactory::getDate($result->contribution_date)->format('Y')][JFactory::getDate($result->contribution_date)->format('M')][] = $result;
}
然后你可以这样使用它:

<?php foreach ($resultsArray as $year) : ?>
   <div>
      <?php foreach ($year as $month) : ?>
        <div>
           <?php foreach ($month as $item) : ?> 
             <div>YOUR OUTPUT <?php echo $item->contribution_date; ?></div>
           <?php endforeach; ?>
        </div>
     <?php endforeach; ?>
   </div>
<?php endforeach; ?>

你的产出

我认为最简单的方法是将结果转换为多维数组,如下所示:

foreach ($results as $result) {
    $resultsArray[JFactory::getDate($result->contribution_date)->format('Y')][JFactory::getDate($result->contribution_date)->format('M')][] = $result;
}
然后你可以这样使用它:

<?php foreach ($resultsArray as $year) : ?>
   <div>
      <?php foreach ($year as $month) : ?>
        <div>
           <?php foreach ($month as $item) : ?> 
             <div>YOUR OUTPUT <?php echo $item->contribution_date; ?></div>
           <?php endforeach; ?>
        </div>
     <?php endforeach; ?>
   </div>
<?php endforeach; ?>

你的产出

I Garik,检查我的解决方案,我希望它有帮助。I Garik,检查我的解决方案,我希望它有帮助。I Garik,检查我的解决方案,我希望它有帮助。感谢您的回答,我恐怕我不擅长php,我输入了您的代码,但除了您的输出字符串之外,没有任何结果。我无法理解代码在做什么。谢谢,我已经编辑了代码,所以现在应该可以工作了。其想法是将结果放入数组(例如$resultsArray[2013][11]),这样您就可以访问forech中的所有数据。假设您将每个结果旋转为年份(您将按年份、2012年、2013年对结果进行分组),然后按月旋转所有结果,然后按结果旋转。谢谢di3sel。一个完美的答案。请你也告诉我如何更改结果顺序好吗。现在它从一个月的第一天到最后一天,我需要的是反之亦然。我无法将日期格式恢复到原来的($result->receive_date)->format('dm,Y')感谢您的回答,我恐怕不擅长php,我输入了您的代码,但除了您的输出字符串之外,没有任何结果。我无法理解代码在做什么。谢谢,我已经编辑了代码,所以现在应该可以工作了。其想法是将结果放入数组(例如$resultsArray[2013][11]),这样您就可以访问forech中的所有数据。假设您将每个结果旋转为年份(您将按年份、2012年、2013年对结果进行分组),然后按月旋转所有结果,然后按结果旋转。谢谢di3sel。一个完美的答案。请你也告诉我如何更改结果顺序好吗。现在它从一个月的第一天到最后一天,我需要的是反之亦然。我无法将日期格式恢复到原来的($result->receive_date)->format('dm,Y')感谢您的回答,我恐怕不擅长php,我输入了您的代码,但除了您的输出字符串之外,没有任何结果。我无法理解代码在做什么。谢谢,我已经编辑了代码,所以现在应该可以工作了。其想法是将结果放入数组(例如$resultsArray[2013][11]),这样您就可以访问forech中的所有数据。假设您将每个结果旋转为年份(您将按年份、2012年、2013年对结果进行分组),然后按月旋转所有结果,然后按结果旋转。谢谢di3sel。一个完美的答案。请你也告诉我如何更改结果顺序好吗。现在它从一个月的第一天到最后一天,我需要的是反之亦然。我无法将日期格式恢复到原来的($result->receive_date)->format('dm,Y')感谢您的回答,我恐怕不擅长php,我输入了您的代码,但除了您的输出字符串之外,没有任何结果。我无法理解代码在做什么。谢谢,我已经编辑了代码,所以现在应该可以工作了。其想法是将结果放入数组(例如$resultsArray[2013][11]),这样您就可以访问forech中的所有数据。假设您将每个结果旋转为年份(您将按年份、2012年、2013年对结果进行分组),然后按月旋转所有结果,然后按结果旋转。谢谢di3sel。一个完美的答案。请你也告诉我如何更改结果顺序好吗。现在它从一个月的第一天到最后一天,我需要的是反之亦然。我无法将日期格式恢复到原来的($result->receive_date)->格式('dm,Y'))