Как показать имя из таблицы «Students», которые имеют тот же faculty_id из таблицы «Faculty»? - PullRequest
2 голосов
/ 25 июня 2019

Я застрял в своем коде домашней работы на PHP (CI + Bootstrap), я объясню (упрощенно) его детали:

  1. Есть база данных под названием "университет" со столами "студенты" и "факультет"
  2. В таблице "студентов" есть "faculty_id"
  3. В представлении "faculty_profile" есть список "студентов, обучающихся на этом факультете"

Вот мой код MVC:

Модель

function get_data($table)
    {
        return $this->db->get($table);
    }

Контроллер

public function faculty_profile($id)
    {
        $where = array('faculty_id' => $id);
        $data['faculty'] = $this->db->query("select * from faculty f, students s where f.faculty_id=s.faculty_id and f.faculty_id='$id'")->result();

        $this->load->view('faculty_profile', $data);
    }

Просмотр (упрощенный)

<?php foreach($faculty as $f) { ?>
        <tr>
            <td><?php echo $f->faculty_name?></td>
        </tr>
        <tr>
            <td><?php echo $f->head_of_faculty?></td>
        </tr>
        <tr>
            <td>
                <b>Students enrolled in this faculty</b>
                <?php echo $f->students_name?>
            </td>
        </tr>
    <?php } ?>

(упрощенный) результат ниже (у меня есть 2 ряда, зарегистрированных на одном факультете):

------
Information Technology //faculty_name
Mr. Henry //head_of_faculty
Students enrolled in this faculty
Adam
------
------
Information Technology //faculty_name
Mr. Henry //head_of_faculty
Students enrolled in this faculty
Brian
------

Ниже я хотел, чтобы это было:

------
Information Technology //faculty_name
Mr. Henry //head_of_faculty
Students enrolled in this faculty
Adam
Brian
------

Вопрос в том, где я должен повозиться, чтобы получить желаемый результат?

О, и я попытался поставить 2 foreach, как это:

<?php foreach($faculty as $f) { ?>
        <tr>
            <td><?php echo $f->faculty_name?></td>
        </tr>
        <tr>
            <td><?php echo $f->head_of_faculty?></td>
        </tr>
        <?php foreach($faculty as $f) { ?>
        <tr>
            <td>
                <b>Students enrolled in this faculty</b>
                <?php echo $f->students_name?>
            </td>
        </tr>
        <?php } ?>
    <?php } ?>

А вот и результат:

------
Information Technology //faculty_name
Mr. Henry //head_of_faculty
Students enrolled in this faculty
Adam
Brian
------
------
Information Technology //faculty_name
Mr. Henry //head_of_faculty
Students enrolled in this faculty
Adam
Brian
------

Заранее спасибо, любая помощь всегда будет цениться

1 Ответ

0 голосов
/ 25 июня 2019

Вы упомянули, что представление "faculty_profile" показывает только студента, зачисленного на этот факультет. Это означает, что он покажет только 1 факультет. Так что вам не нужно зацикливаться на $ faculty. Измените код контроллера, как показано ниже.

        $data['faculty'] = $this->db->query("select * from faculty f where f.faculty_id='$id'")->result();
        $data['faculty']['students'] = $this->db->query("select * from students s where s.faculty_id='$id'")->result();
        $this->load->view('faculty_profile', $data);

Измените ваш взгляд, как показано ниже

        <tr>
            <td><?php echo $faculty->faculty_name?></td>
        </tr>
        <tr>
            <td><?php echo $faculty->head_of_faculty?></td>
        </tr>
        <tr><td>Students enrolled in this faculty</td></tr>
        <?php foreach($faculty['students'] as $student ) { ?>
            <tr>
                <td>
                    <?php echo $student->students_name?>
                </td>
            </tr>
        <?php } ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...