繁体   English   中英

打印带有一些MySQL记录的数组

[英]Printing an array with some MySQL records

不确定主题是否适合该问题。

我有一个表,其中包含一些带有年份信息的数据,如下所示。

table mydata
+----+------------+----------+
| id | year       | some_data|
+----+------------+----------+
|  1 | 2011       | x        |
|  2 | 2012       | y        |
|  2 | 2009       | x        |
|  2 | 2007       | z        |
|  1 | 2009       | b        |
|  3 | 2011       | a        |
|  2 | 2007       | n        |
|  3 | 2006       | h        |
|  2 | 2007       | t        |
+----+------------+----------+

这是我的问题。 我正在尝试从具有年份信息的mydata表中获取某些ID的数据。 但是,我需要显示某些年份的记录,例如过去的6年和现在的未来6年。

例如;

id = 2

+----+------------+----------+
| id | year       | some_data|
+----+------------+----------+
|  2 | 2007       | z        |
|  2 | 2007       | n        |
|  2 | 2009       | x        |
|  2 | 2012       | y        |
+----+------------+----------+

我需要在HTML表结构中显示类似的数据:

+------------+----------+
| year       | some_data|
+------------+----------+
| 2006       |          |
| 2007       | z        |
|            | n        |
|            | t        |
| 2008       |          |
| 2009       | x        |
| 2010       |          |
| 2011       |          |
| 2012       | y        |
| 2013       |          |
| 2014       |          |
| 2015       |          |
| 2016       |          |
| 2017       |          |
| 2018       |          |
+------------+----------+

我不知道在哪一年中有重复的记录,在哪一年中没有。 因此,我总是尝试使用不止一个查询或大量for循环的解决方案。 而且不能按我的期望工作。

有想法吗?

从数据库中获取排序的数据,然后通过循环您希望输出的年份来用PHP构造输出表。

例如,使用PDO对象$dbh

$qry = $dbh->prepare('
  SELECT   year, some_data
  FROM     mydata
  WHERE    year BETWEEN :start AND :end
  ORDER BY year
');

$qry->bindParam(':start', $range_start);
$qry->bindParam(':end'  , $range_end  );

$current_year = intval(date('Y'));
$range_start  = $current_year - 6;
$range_end    = $current_year + 6;

if ($qry->execute()) {

  $row = $qry->fetch();

  echo '<table><tr><th scope="col">year</th><th scope="col">some_data</th></tr>';
  for ($y = $range_start; $y <= $range_end; $y++) {
    echo "<tr><th scope=\"row\">$y</th><td><ul>";
    while ($row && $row['year'] == $y) {
      echo '<li>' . htmlentities($row['some_data']) . '</li>';
      $row = $qry->fetch();
    }
    echo "</ul></td></tr>";
  }
  echo '</table>';

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM