2013-11-21 33 views
0

在我的表courses中,我有几个条目共享相同的​​值。我正在使用foreach循环来检索具有相同​​的所有行。在下面的例子中,有一个学院有两门课程。这些值显示正确,但显示了一些不必要的值。例如,它创建了两个结果。是否有可能在wanted result to display部分有如下所示的组合结果?对于每个循环显示来自mysql表的值

PHP

$academy_id = 123 

$db_select = $db_con->prepare(" 
SELECT ca.course_name, 
     ca.course_start_date, 
     ca.course_end_date 
FROM courses_by_academy ca 
WHERE ca.academy_id = :academy_id 
"); 
$final_result = ''; 
if (!$db_select) return false; 
    if (!$db_select->execute(array(':academy_id' => $academy_id))) return false; 
    $results = $db_select->fetchAll(\PDO::FETCH_ASSOC); 
    if (empty($results)) return false; 
    foreach ($results as $value){ 
    $final_result .= "<b>Academy Name: </b>".$value['name']."</br><b>Academy Type: </b>".$value['type']."</br><b>Status: </b>".$value['status']."</br>"; 
    $final_result .= "<b>Course Name: </b>".$value['course_name']."</br><b>Start Date: </b>".$value['course_start_date']."</br><b>End Date: </b>".$value['course_end_date']."</br>"; 
    } 
} 

表值

+----+------------+----------------------+---------------+------------+ 
| id | academy_id |  course_name  | start_date | end_date | 
+----+------------+----------------------+---------------+------------+ 
| 1 |  123 | Biology - Basic  | 2013-11-30 | 2013-12-25 | 
| 2 |  123 | Biology - Nutrition | 2014-01-15 | 2014-01-25 | 
+----+------------+----------------------+---------------+------------+ 

当前结果显示

Academy Name: North Valley Schools 
Academy Type: Post-Secondary 
Status: INACTIVE 
ID: 123 
Course Name: Biology - Basic 
Start date: 2013-11-30 
End date: 2013-12-25 

Academy Name: North Valley Schools 
Academy Type: Post-Secondary 
Status: INACTIVE 
ID: 123 
Course Name: Biology - Nutrition 
Start date: 2014-01-15 
End date: 2014-01 

诚征Result-联合

Academy Name: North Valley Schools 
Academy Type: Post-Secondary 
Status: INACTIVE 
ID: 123 
Course Name: Biology - Basic 
Start date: 2013-11-30 
End date: 2013-12-25 
Course Name: Biology - Nutrition 
Start date: 2014-01-15 
End date: 2014-01-25 
+1

您显示查询结果集中不存在的列'$ value ['name']'和'$ value ['type'] for academy name/type。您目前如何让显示屏实际按照您所显示的方式工作?其次,如果你一次只查询一个学院,为什么要输出循环内的学院信息呢?只需将循环学院信息显示在循环之外,并将特定于班级的内容留在循环中即可解决问题。 –

+0

@MarkBryant好点。它如何看起来像循环外的学院信息?我的头脑无法把握这个概念 –

回答

1

你的循环:

foreach ($results as $value){ 
    $final_result .= "<b>Academy Name: </b>".$value['name']."</br><b>Academy Type: </b>".$value['type']."</br><b>Status: </b>".$value['status']."</br>"; 
    $final_result .= "<b>Course Name: </b>".$value['course_name']."</br><b>Start Date: </b>".$value['course_start_date']."</br><b>End Date: </b>".$value['course_end_date']."</br>"; 
} 

,而不是做:

$first = true; 
foreach ($results as $value){ 
    if($first){ 
     $first = false; 
     $final_result .= "<b>Academy Name: </b>".$value['name']."</br><b>Academy Type: </b>".$value['type']."</br><b>Status: </b>".$value['status']."</br>"; 
    } 
    $final_result .= "<b>Course Name: </b>".$value['course_name']."</br><b>Start Date: </b>".$value['course_start_date']."</br><b>End Date: </b>".$value['course_end_date']."</br>"; 
} 

它只会执行一次学院的信息。 :)

+0

这是完美的! –

+0

当然是!我写的。 ;)嘿。 J/K。我很高兴我能帮上忙。 – Fallenreaper