редактируемая таблица матрицы PHP - вставьте проблему с идентификатором TD - PullRequest
0 голосов
/ 09 апреля 2019

В основном у меня есть матричная таблица PHP, где пользователи представлены по осям X и Y.Цель состоит в том, чтобы пользователи могли добавлять комментарии друг к другу.Каждая ячейка td должна быть подключена к user_id, который спрашивает, и user_id, который спрашивается.Проблема в том, что когда таблица обновляется (пользователь удалил ИЛИ пользователь добавил), каждый тд получает новый идентификатор - и я больше не могу привязать комментарий к правой ячейке тд.

Когда пользователь нажимает тд - появляется модалс формой, где добавляется комментарий.Я использую JavaScript для передачи значений from_user_id и to_user_id в скрытые поля форм.Я также передаю идентификатор td, который хранится в базе данных - потому что мне нужно каким-то образом идентифицировать каждую ячейку td, в которую был добавлен комментарий, а затем распечатать, сколько комментариев в каждой ячейке.

В этом примере пользователь B добавляет комментарий к пользователю A. x = ячейка td, где мне нужно напечатать количество комментариев от этого конкретного отправителя (пользователь B) и получателя (пользователь A)

+-----+-------------+-------------+--------------+
|     |     A       |      B      |      C       |
+-----+-------------+-------------+--------------+
| A   |             |             |              |
|     |             |             |              |
| B   |     x       |             |              |
|     |             |             |              |
| C   |             |             |              |
+-----+-------------+-------------+--------------+

Вот как создается таблица:

<table id="tableID1" class="tableC display">
    <thead>
        <tr>
          <th></th>
          <?php
           foreach ($users as $row) {
                echo '<th id="'.$row->user_id.'">'.$row->username.'</th>';
           }
          ?>
       </tr>
    </thead>

<?php
echo "<tbody>";
  $startC = 0;
  $countT = count($users);

  $countComments = count($pageTableComments);

foreach( $users as $data ) {
   echo '<tr>';
   echo '<td id="'.$data->user_id.'">'.$data->username.'</td>';

for($i=0; $i < $countT; $i++) {

    $startC++;

if ( $countComments > 0.5 && $pageTableComments_tbodyTD_idVAR  == $startC) {
    echo "<td id='$pageTableComments_tbodyTD_idVAR' class='selectable'> <a class='label countCommentsLabel'>$countComments</a></td>";
}
else {
    echo "<td id='$startC' class='selectable'></td>";
}

}
}
    echo '</tr>';
    echo '</tbody>';
?>

JS:

var thead_ID = $.makeArray($('td.selectable[id]').map(function() {
  return this.id;
}));

$('#tableID1').on('click', 'td', function(e) {

    var to_id = e.delegateTarget.tHead.rows[0].cells[this.cellIndex];
    var from_id  = this.parentNode.cells[0];
    var tbody_td_id = $(this).attr('id');

    $('modal').modal('show');
    
$.ajax({
     url: window.location.href,
     type: "POST",
     data: { to_id: $(to_id).text(), from_id:$(from_id).text(), tbodyTD_id:thead_ID },

     success: function (data) {
         $('.form_hidden_to_id').html( $(to_id).text() );
         $('.form_hidden_from_id').html( $(from_id).text() );

         document.getElementById('modelFormAddCommentFrom_ID').value = $(from_id).text();
         document.getElementById('modelFormAddCommentTO_ID').value = $(to_id).text();
         document.getElementById('modelFormAddComment_tbody_td_id').value = tbody_td_id;
      },
})

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