[英]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.