我有一张桌子“exercise_results”。人们在开始时投入他们的结果,然后在两个月之后将他们的结果放在他们的结果中,看看他们有多少改进。它们的开始集的exercise_type_id为“1”,而结束集的exercise_type_id为“2”。
我需要一种方法将其显示在一个看起来像这样的HTML表中:
一个foreach循环,但这是单行。我在将两行合并为一行时遇到了麻烦。我想这可能就像某种MySQL加入一样简单?我们通过person_unique_id识别每个人。
以下是我的字段:
id | person_unique_id | person_name | exercise_type_id | mile_running_time | bench_press_weight_lbs | squat_weight_lbs | date_of_exercise_performed
示例行:
1 | J123 | John Smith | 1 | 8 | 200 | 300 | 2010-03-20
2 | J123 | John Smith | 2 | 7 | 250 | 400 | 2010-05-20
3 | X584 | Jane Doe | 1 | 10 | 100 | 200 | 2010-03-20
4 | X584 | Jane Doe | 2 | 8 | 150 | 220 | 2010-05-20
我尝试了一些解决方案,但我迷路了。任何帮助都会很棒。谢谢!
编辑:
在回应下面的评论时,我希望得到一些数据:
array 0 =>
array
'Exercise' =>
array
'person_unique_id' => string 'J123'
'person_name' => string 'John Smith'
'begin_mile_running_time' => string '8'
'end_mile_running_time' => string '7'
1 =>
array
'Exercise' =>
array
'person_unique_id' => string 'X584'
'person_name' => string 'Jane Doe'
'begin_mile_running_time' => string '10'
'end_mile_running_time' => string '8'
答案 0 :(得分:17)
您可以使用 GROUP_CONCAT()获取两行结果,如下所示:
SELECT person_unique_id, person_name,
group_concat( mile_running_time ) AS miles,
group_concat( bench_press_weight_lbs ) AS bench,
GROUP_CONCAT( squat_weight_lbs ) AS squat
FROM exercise_result
GROUP BY person_unique_id
您的结果将如下:
J123 | John Smith | 8,7 | 200,250 | 300,400
X584 | Jane Doe | 10,8 | 100,150 | 200,220
然后你可以使用php explode和结果字段来获得每种类型的结果。
答案 1 :(得分:0)
$query = mysql_query("select ...your data");
while ($row = mysql_fetch_assoc ($query) ) {
if ($row['exercise_type_id']==1)
$exe1[]=$row;
else
$exe2[]=$row;
}
print_r($exe1);
print_r($exe2);
从我的理解
编辑:
试试这个
$query = mysql_query("select ...your data");
while ($row = mysql_fetch_assoc ($query) ) {
$rows[]=array('Exercise'=>$row);
}
print_r($rows);
答案 2 :(得分:0)
提取整个表格,或者对您感兴趣的行,对人员ID进行排序,将每行的人员ID与下一行进行比较,以查看是否有结果可以打印HTML表格中的所有列。如果没有,跳到下一个并将字段留空(或其他一些解决方案,可能会忽略那些没有填写这两个字段的人?)。
我的PHP技能有限,所以没有代码示例。
答案 3 :(得分:0)