Что-то не так с базой данных отображения данных на стороне клиента

Я строю этот CRM и сталкиваюсь с какой-то странной ситуацией, когда пишу запрос для отображения данных таблиц на стороне клиента. Мне трудно понять, как это исправить … Я удалил внешний ключ в другой таблице до того, как столкнулся с этой проблемой, потому что я хотел изменить первичную строку, и теперь я предполагаю, что я заплатил цену, я не знаю, что делать … на стороне клиента, как отображение данных на самом деле не совпадает с тем, что в базе данных … В любом случае, я готов быть съеденным живым … Я NOOB, я учусь трудный путь, и я также пишу PHP как я нуб, так что мой код выглядит нубистски, но он работает для меня, и вот как я это понимаю. Так что если у вас есть какие-либо советы, как это исправить, было бы здорово …

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

сторона базы данных | таблица отправленных сообщений
введите описание изображения здесь

сторона клиента

введите описание изображения здесь

mailmessages.php

 <!--
================================================================
Sent Messages
================================================================
-->
<?php

$perpage=5;
if(isset($_GET['page'])){
$page=$_GET['page'];
}
else{
$page=1;
}$offset=($page-1)*$perpage;
$sqlsent="SELECT * FROM sentmessages INNER JOIN employees ON sentmessages.toEmployee_id=employees.employee_id WHERE username = '$user_check' LIMIT ".$offset.",".$perpage."";
$resultsent=mysqli_query($db,$sqlsent);
?>
<table id="table" class="sortable rwd-table table table-striped table-hover tablesorter " >

<thead style="cursor:pointer;">
<th>ID</th>
<th>Date Sent</th>
<th>To</th>
<th>Subject</th>
<th style='visibility: hidden;'>Message</th>
</thead>

<tbody>
<?php while ($sent = mysqli_fetch_assoc($resultsent)) {?>
<tr>
<td data-th="ID"><?=$sent['id'];?></td>
<td data-th="Date Sent"><?=$sent['time'];?></td>

<?php $toEmployee_idfnln ="SELECT first_name, last_name FROM employees INNER JOIN sentmessages ON employees.employee_id=sentmessages.toEmployee_id WHERE username=employees.username";$resulfnln=mysqli_query($db,$toEmployee_idfnln);$displaynames = $resulfnln->fetch_assoc();?>
<td data-th="To"><?=$displaynames['first_name'];?> <?=$displaynames['last_name'];?></td>

<td data-th="Subject"><?=$sent['subject'];?></td>
<td data-th="Message"><i class="fa fa-eye optionbox" aria-hidden="true"></i> <i class="fa fa-trash optionbox" aria-hidden="true"></i></td>
</tr>
<?php };?>
</tbody>
<tfoot></tfoot></table><div class='col-md-6 pull-left'>
<p>Total :
<?php $sqlsentmsg="SELECT * FROM sentmessages INNER JOIN employees ON sentmessages.toEmployee_id=employees.employee_id WHERE username = '$user_check'"; $resultsentmsg=mysqli_query($db,$sqlsentmsg); $rowcountmsg=mysqli_num_rows($resultsentmsg);echo $rowcountmsg;?>

Sent Messages</p>

</div>

-1

Решение

Итак, я получил свой код на работу. Оказывается, ничего не было по сути неправильно, но запрос. Внешний ключ не был проблемой. Я проверил это путем повторной загрузки исходной схемы и столкнулся с той же проблемой дублирования идентификатора. Согласно документации внешние ключи допускают дубликаты. Я заметил, что в таблице сотрудников генерируется новый идентификатор, который объясняет дубликаты. Это нормальное поведение в зависимости от того, как устроена база данных. Идентификатор ограничения внешнего ключа (который является user.id = employee.id) берет на себя обычный идентификатор строки, который должен отображаться следующим образом 1-2-3-4-5. Это то, что мне нужно было исправить на пользовательском столе.

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

Я должен был написать:

  $toEmployeeidQ = mysqli_query($db,"SELECT * FROM sentmessages INNER JOIN employees ON sentmessages.fromEmployee_id=employees.employee_id WHERE username = '$user_check'");
$rowemployeeid = mysqli_fetch_array($toEmployeeidQ,MYSQLI_ASSOC);
$session_toEmployeeid = $rowemployeeid['toEmployee_id'];

затем передайте переменную в запросе, чтобы получить имена:

 <td data-th="To">
<?php $toEmployee_idfnln = "SELECT first_name, last_name FROM `employees` INNER JOIN sentmessages ON employees.employee_id=sentmessages.toEmployee_id WHERE employees.employee_id='$session_toEmployeeid'";$resulfnln=mysqli_query($db,$toEmployee_idfnln);$displaynames = $resulfnln->fetch_assoc();?>
<?php echo $displaynames['first_name'];?>  <?php echo $displaynames['last_name'];?>

</td>
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector