Записи отображаются дважды, если имеется более одной записи - PullRequest
0 голосов
/ 19 января 2019

Я использую CodeIgniter, я отображаю данные из базы данных.

Я отображаю данные в представлении (ожидаемый вывод)

Строка 1

AFGFD ANAND
trdsd@gmail.com

ActivityName   | Activity_startTime | Activity_endTime
cricket        | 05:00.             | 08:00

Строка 2

POIUY ANAND
mnbsd@gmail.com

ActivityName   | Activity_startTime | Activity_endTime
cricket        | 05:00.             | 08:00
Badminton      | 09:00.             | 11:00

Проблема в том, что первая строка отображается идеально, потому что у меня есть только одно действие, но во втором ряду я получаюболее одной записи.

Я получаю вывод для второй строки, например

POIUY ANAND
mnbsd@gmail.com

POIUY ANAND
mnbsd@gmail.com

ActivityName   | Activity_startTime | Activity_endTime
cricket        | 05:00.             | 08:00
ActivityName   | Activity_startTime | Activity_endTime
Badminton      | 09:00.             | 11:00

Как отобразить личную информацию и информацию об активности отдельно?

Я знаюЯ использовал 2 foreach, поэтому я получаю свою продукцию.Я думаю, что у меня есть запрос на изменение модели для отображения личной информации и информации об активности.

просмотр кода

foreach ($SActivity as $sec_data) {
    foreach ($sec_data as $row) { ?>
        <h2><?php echo $row->first_name;?><?php echo $row->last_name;?></h2>
        <p><?php echo $row->email;?></p>
        <table>
            <thead>
                <tr>
                    <th>ActivityName</th>
                    <th>Activity_startTime</th>
                    <th>Activity_endTime</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td><?php echo $row->ActivityName;?></td>
                    <td><?php echo $row->Activity_startTime;?></td>
                    <td><?php echo $row->Activity_endTime;?></td>
                </tr>
            </tbody>
        </table>
<?php }
} 

Я получаю вывод на странице просмотра

Array
(
    [0] => Array
        (
            [0] => stdClass Object
                (
                    [member_id] => 209
                    [customer_id] => 20183
                    [profile_pic] => 5bb76975b6c4a1538746741051018.JPG
                    [first_name] => AFGFD
                    [middle_name] => 
                    [last_name] => ANAND
                    [email] => trdsd@gmail.com
                    [dob] => 24-07-1982
                    [phone] => 0987654321
                    [activity_name_id]=>1
                    [activity_name]=>cricket
                    [activity_startTime]=>05:00
                    [activity_endTime]=>08:00
                )
        )

    [1] => Array
        (
            [0] => stdClass Object
                (
                    [member_id] => 337
                    [customer_id] => 20184
                    [profile_pic] => 5bc7363f4fadf1539782207171018.jpg
                    [first_name] => POIUY
                    [middle_name] => 
                    [last_name] => ANAND
                    [email] => mnbsd@gmail.com
                    [dob] => 17-04-2006
                    [phone] => 0987654314
                    [activity_name_id]=>1
                    [activity_name]=>cricket
                    [activity_startTime]=>05:00
                    [activity_endTime]=>08:00
                )

            [1] => stdClass Object
                (
                    [member_id] => 337
                    [customer_id] => 20184
                    [profile_pic] => 5bc7363f4fadf1539782207171018.jpg
                    [first_name] => POIUY
                    [middle_name] => 
                    [last_name] => ANAND
                    [email] => mnbsd@gmail.com
                    [dob] => 17-04-2006
                    [phone] => 0987654314
                    [activity_name_id]=>2
                    [activity_name]=>Badminton
                    [activity_startTime]=>09:00
                    [activity_endTime]=>11:00
                )

        )

)

контроллер

//getting personal information
$getLoginMemberDetails['getAlldata'] = $this->Member_model->getAlldata();

$allData = [];
foreach ($getLoginMemberDetails['getAlldata'] as $m_id) {
    $allData[] = $this->Member_model->getMemberActivity($m_id->member_id);
}

$getLoginMemberDetails['SActivity'] = $allData;

Модель

public function getSecondaryMemberActivity($gotMemberId)
{
    $getDetails = ['members.member_id' => $gotMemberId];
    $result = $this->db->where($getDetails)
        ->from('members')
        ->join('member_activity', 'members.member_id = member_activity.member_id','LEFT')
        ->join('activity_name', 'activity_name.activity_name_id = member_activity.activity_id','LEFT')
        ->get()
        ->result();

    if($result) {
        return $result;  
    } else  {
        return 0;    
    }
}

Не могли бы вы помочь мне в этом вопросе?

1 Ответ

0 голосов
/ 20 января 2019

Попробуйте этот код по вашему мнению. Я только добавил счетчик, чтобы отслеживать количество действий для каждого пользователя и отслеживать текущую позицию в цикле, чтобы распечатать только один заголовок таблицы и информацию о пользователе для каждого пользователя:

<?php 
foreach ($SActivity as $sec_data) {

    $counter = 0; // COUNTER FOR KNOWING POSITION IN ACTIVITIES LOOP 
    $num_activities = count($sec_data); // TOTAL NUMBER OF ACTIVITIES FOR THIS USER

    foreach ($sec_data as $row) { 
        $counter++; // ADD +1 TO COUNTER FOR EACH ACTIVITY

        // ONLY PRINT OUT THE NAME AND TABLE HEADER IF FIRST ROW 
        if($counter == 1){ ?>

        <h2><?php echo $row->first_name;?><?php echo $row->last_name;?></h2>
        <p><?php echo $row->email;?></p>
        <table>
            <thead>
                <tr>
                    <th>ActivityName</th>
                    <th>Activity_startTime</th>
                    <th>Activity_endTime</th>
                </tr>
            </thead>
            <tbody>

        <?php } ?>      

                <tr>
                    <td><?php echo $row->ActivityName;?></td>
                    <td><?php echo $row->Activity_startTime;?></td>
                    <td><?php echo $row->Activity_endTime;?></td>
                </tr>

        <?php 
        // IF THIS IS THE LAST ACTIVITY OF THIS USER IN THE LOOP: PRINT TABLE END TAG
        if($counter == $num_activities){
            echo '</tbody></table>';
        }
    } 
} 
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...