数据库显示数据客户端有些问题

问题描述:

我正在构建此CRM,并且在编写查询以显示表数据客户端时遇到了一些奇怪的情况。我很难理解如何解决这个问题......在遇到这个问题之前,我在另一个表中删除了一个外键,因为我想修改第一行,现在我想我会付出代价,我不知道该怎么去做...客户端数据显示如何真的不匹配数据库中的内容...反正我准备好去吃活...我是一个NOOB我正在学习困难的方式,我也写PHP就像我是一个noob,所以我的代码看起来不太好用,但它适用于我,这就是我的理解。所以,如果您有任何提示如何解决这个问题那简直太好了......数据库显示数据客户端有些问题

的问题是:该ID行客户端不会返回一个数据库中,谁是发送邮件的名字to与数据库中的不匹配。我怀疑它是与我从中删除外键的ID ...

数据库端| sentmessages表 enter image description here

客户端

enter image description here

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> 
+0

'$ resultsent'从哪里来? – David

+0

@David:我用它编辑了我的问题。我忘了把它放在那里。抱歉。 –

+0

'“INNER JOIN员工ON sentmessages.employee_id = employees.employee_id”' - 根据数据库中的图像,*是*没有'sentmessages.employee_id',这个查询如何工作? – David

好了,所以我得到了我的代码工作。原来没有什么实质上是错误的,但查询。外键不是问题。我通过重新上传原始模式并碰到相同的重复ID问题来测试这一点。根据文档外键允许重复。我注意到有一个新的id在雇员表中生成,它解释了重复项。根据数据库的设计,这是正常的行为。外键约束id(它是user.id = employees.id)接管了正常的行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>