基本上,我有一个PHP矩阵表,其中用户在X和Y轴上表示。目的是使用户能够互相添加评论。每个td单元必须连接到要询问的user_id和被询问的user_id。问题在于,当更新表(删除用户或添加用户)时,每个td都会获得新的ID-而我无法再在正确的td单元格上添加注释。
当用户单击td时-出现一个带有添加注释的表单的模式。我使用javascript将from_user_id和to_user_id值传递到表单隐藏字段中。我还传递了存储在数据库中的td的ID-因为我需要以某种方式标识已添加注释的每个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;
},
})
});