Результат циклического посещения модуля Codeigniter - PullRequest
0 голосов
/ 10 февраля 2019

Здравствуйте, я следовал учебному пособию, чтобы помочь мне с модулем посещаемости, который я делаю в Codeigniter.

У меня есть события, и в каждом событии вы можете принять участие.

В моих мероприятияхПросмотр файла, я загружаю другой файл просмотра с именем Participance.php.

В файле просмотра событий отображаются все сведения о событии с формой посещаемости, вставленной внизу.

Форма посещаемости вытягивает всепользователи, которые зарегистрированы и имеют 2 переключателя, чтобы отметить, посетил ли пользователь событие или нет.

Это HTML-код, который я получил до сих пор:

<section class="content">
   <div class="row" >
      <div class="col-md-12">
      <h3>Event Attendance</h3>
      <?php echo form_open() ?>
        <div class="table-responsive"> 
            <table class="table table-bordered table-striped dataTable">
                <thead>
                <tr class="">
                    <th>Number</th>
                    <th>User ID</th>
                    <th>Name</th>
                    <th>Attendance</th>
                </tr>
                </thead>
                <tbody id="tbody_events">

                <?php 
                    $emp = $this->db->query("SELECT * FROM `aauth_users`");
                    $result = $emp->result();
                    settype($sl, "integer");

                    foreach($result as $row):
                        $sl++;

                ?>
                <tr>
                    <td><?php echo $sl ?></td>
                    <td><?php echo $row->id ?>
                    <input type="hidden" name="emid[]" value="<?php echo $row->id ?>">
                    </td>
                    <td><?php echo $row->full_name ?></td>
                    <td>
                        <input type="radio" value="1" name="<?php echo $sl?>"> Present
                        <input type="radio" value="0" name="<?php echo $sl?>"> Absent
                    </td>
                </tr>
                    <?php endforeach ?>
                <tr>
                    <td colspan="4">
                    <input type="submit" name="submit" value="Submit Attendance" class="btn btn-success">
                    </td>
                </tr>
                </tbody>
            </table>
        </div>
        <?php echo form_close() ?>
      </div>
    </div>
</section>

PHP-код, который у меня есть

<?php

if (isset($_POST['submit'])) {

    $attid = $this->input->post('emid');
    $date = date("d-m-Y");
    $time = date("h:s:i A");
    $eventid = $events->id;
    $tm = count($attid);
    for($i=0;$i<$tm;$i++) {

        $at = $i+1;
        $attended = $_POST[$at];

        $attr = array(
            "user_id" => $attid[$i],
            "attended" => $attended,
            "attendance_date" => $date,
            "attendance_time" => $time,
            "event_id" => $eventid,
        );

    }

}

?>

Проблема У меня проблема в том, что все работает отлично, и я могу принять участие.Я вижу, как результаты заносятся в базу данных.

Каждый раз, когда я отправляю данные о посещаемости, они дублируют записи о посещаемости.В настоящее время у меня зарегистрировано 3 пользователя.Таким образом, на странице событий внизу таблицы посещаемости отображаются 3 пользователя в каждой строке таблицы.У каждого есть переключатели, чтобы сказать «присутствует» или «отсутствует».Я отправляю форму и в базе данных у меня будет 6 записей.2 от каждого пользователя с указанием их посещаемости, когда мне нужно показать только 1 запись для каждого пользователя.my attendance form

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Я понял, почему я добавляю повторяющиеся результаты в базу данных.

У меня был файл просмотра посещаемости, который я вызывал из другого файла просмотра.Моя функция отправки была в представлении посещаемости, поэтому, поскольку она была в представлении посещаемости, которое также было во вторичном представлении, она выполнялась 2 раза и, следовательно, отправляла дубликат в базу данных.

Спасибо, Францискоза любезную попытку помочь.

0 голосов
/ 10 февраля 2019

Вы открыли форму и закрыли ее, инкапсулируя все входы в ваших таблицах, кроме кнопки отправки, которая одинакова для каждой строки.Вот почему это генерирует дубликаты, потому что когда вы нажимаете «Отправить» в одной строке, он отправляет все входные данные внутри формы (из всех других строк).

Изолировать форму для каждой строки:

<section class="content">
<div class="row" >
  <div class="col-md-12">
  <h3>Event Attendance</h3>
    <div class="table-responsive"> 
        <table class="table table-bordered table-striped dataTable">
            <thead>
            <tr class="">
                <th>Number</th>
                <th>User ID</th>
                <th>Name</th>
                <th>Attendance</th>
            </tr>
            </thead>
            <tbody id="tbody_events">

            <?php 
                $emp = $this->db->query("SELECT * FROM `aauth_users`");
                $result = $emp->result();
                settype($sl, "integer");

                foreach($result as $row):
                    $sl++;

                echo form_open(); // Form opens here for each row
            ?>
            <tr>
                <td><?php echo $sl ?></td>
                <td><?php echo $row->id ?>
                <input type="hidden" name="emid[]" value="<?php echo $row->id ?>">
                </td>
                <td><?php echo $row->full_name ?></td>
                <td>
                    <input type="radio" value="1" name="<?php echo $sl?>"> Present
                    <input type="radio" value="0" name="<?php echo $sl?>"> Absent
                </td>
            </tr>

            <tr>
                <td colspan="4">
                <input type="submit" name="submit" value="Submit Attendance" class="btn btn-success">
                </td>
            </tr>
            echo form_close(); // Form closes here for each row
            <?php endforeach ?>
            </tbody>
        </table>
    </div>
  </div>
</div>

Моя текущая форма посещаемости: my attendance form

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...