2013-11-21 3 views
0

В моей таблице courses У меня есть несколько записей, которые имеют одинаковое значение academy_id. Я использую цикл foreach для извлечения всех строк с тем же academy_id. В приведенном ниже примере есть академия, которая имеет два курса. Значения отображаются правильно, но отображаются некоторые ненужные значения. Например, он создает два результата. Возможно ли иметь один комбинированный результат, как показано ниже в разделе 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'] для имени/типа академии, которых нет в наборе результатов запроса. Как вы в настоящее время получаете дисплей, чтобы фактически работать так, как вы показали? Во-вторых, если вы только когда-либо запрашиваете одну академию за раз, зачем вообще выводить информацию о академии внутри цикла? Просто перемещайте отображение информации о академии за пределами цикла и оставляйте содержимое класса в нем - проблема решена. –

+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

, конечно же! Я написал это. ;) хе. Дж/К. Я рад, что смогу помочь. – Fallenreaper

Смежные вопросы