我在while循环中有一个嵌套的foreach循环。我从myqsl文本字段中提取与范围匹配的日期。唯一的问题是我在提取文本字段后无法按日期排序。如果我将相同的日期(在本例中为02.01.2013)分成两个不同的文本字段,它将在输出中显示为:
TOUR 1
01.01.2013
-> 02.01.2013
-> 03.01.2013
04.01.2013
TOUR 2
-> 02.01.2013
-> 03.01.2013
我无法弄清楚循环后如何按日期($天)分组。我知道解决方案是为此创建一个数组,但如何?
这是我的代码:
$sql = "SELECT accommodation, start FROM circuits_".$_POST['year']."
WHERE start >='".$first."' AND start <= '".$last."'
ORDER BY start";
$rows = $db->query($sql);
while ($record = $db->fetch($rows)) {
$data_acc = explode(';',$record['accommodation'], -1);
foreach($data_acc as $row_acc) {
list($day,$name,$sgl,$dbl) = explode('|',$row_acc);
感谢名单
答案 0 :(得分:0)
我觉得你在找这样的东西?
(将ORDER BY
替换为GROUP BY
)
$sql = "SELECT accommodation, start FROM circuits_".$_POST['year']."
WHERE start >='".$first."' AND start <= '".$last."'
GROUP BY start";
$rows = $db->query($sql);
while ($record = $db->fetch($rows)) {
//do whatever..
}
答案 1 :(得分:0)
如果在将数据存储到数据库之前将数据拆分为字段,那么您的开发将不那么复杂。
在不更改当前架构的情况下,您可以使用uksort()对阵列进行后处理。使用uksort将允许您在比较它们之前解析日期。或者,您可以将每个日期转换为ISO-8601,然后将其存储在列表中并使用更简单的ksort()。