我想将日历显示为特定月份的数据显示该月的所有数据。
假设我的数据库中有数据为..
Jan=124; Jan=243; Jan=354
Feb=978; Feb=765; Feb=756;
可以是:
Jan,2013
124
243
354
Feb,2013
978
765
756
我已经完成了这段代码:
<?php
$q2="select * from calendar";
$res2=mysql_query($q2);
$row2=mysql_fetch_assoc($res2);
$mnth = array('Jan','Feb');
$j= count($mnth);
for ($i=0; $i<= $j; $i++){
if($row2['month']=='June'){
?><tr><td><?php
echo $row2['month']; ?> , <?php echo $row2['year'];
?></td></tr><tbody><div><?php
include("connection.php");
$q1="select * from calendar";
$res=mysql_query($q1);
while($row=mysql_fetch_assoc($res)){
?><tr><td><?php
echo $row['dates'];
?></td></tr></tbody></div><?php
}
}
}
答案 0 :(得分:2)
每次需要打印HTML标签时,我都会重新考虑打破PHP。它使您的代码难以阅读。
另外,你在循环中进行查询,这是一个坏主意,看起来完全没有问题。
您的循环中还有一个开放的<tbody>
标记,没有关闭</tbody>
标记。
而且,正如@AleksG在评论中提到的那样,您不应该使用mysql_*
函数,因为它们已被弃用。我建议切换到PDO。
所以回答......
假设您的表结构如下所示:
+-------+------+-------+
| month | year | dates |
+-------+------+-------+
| Jan | 2013 | 124 |
| Jan | 2013 | 243 |
| Jan | 2013 | 354 |
| Feb | 2013 | 978 |
| Feb | 2013 | 765 |
| Feb | 2013 | 756 |
+-------+------+-------+
根据您的问题标题,这会将值放入数组中,键是月份和年份,值是数字“日期”字段:
// replace the below line with your mysql connection string
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$result = $dbh->query('
SELECT month, year, dates FROM calendar ORDER BY year, month
');
$mnth = array();
foreach ($result as $row) {
$key = $row['month'] .','. $row['year']; // e.g. 'Jan,2013'
// push the new value. The inner array will be created automatically
$mnth[$key][] = $row['dates'];
}
print_r($mnth);
/* will look like this:
Array(
[Jan,2013] => Array(
[0] => 124,
[1] => 243,
[2] => 354
),
[Feb,2013] => Array(
[0] => 978,
[1] => 765,
[2] => 756
)
) */
但根据您的代码,您似乎希望将其输出为HTML表格。所以这就是你如何做到这一点。查询是相同的,所以这只是替换循环:
echo '<table>';
$current = '';
foreach ($result as $row) {
// check to see if we've switched to a new month/year
$next = $row['month'] .','. $row['year'];
if ($current != $next) {
// if we have moved to a new month/year, print a new header row
echo '<tr><th>'. $next .'</th></tr>';
// and update $current
$current = $next;
}
echo '<tr><td>'. $row['dates'] .'</td></tr>';
}
echo '</table>';