匹配查询后在表中打印结果

时间:2016-12-01 11:45:11

标签: php

我正在尝试使用填充了db。

的信息的两个标题创建表

我必须检查用户是否在一个月中的特定日期的表中有记录。

如果用户在表中有记录(checked_user),那么我应该在日期列和用户行中打印“是”如果用户没有该日期的条目我应该打印“否”。

一个标题将包含所选月份的天数,而另一个标题将打印用户名。

我在数据库中有两个表(users和checked_users)。

用户表包含用户数据,而checked_users包含是否检查用户的具体日期。

然后我有标签

表用户:

UposlenikID |UposlenikImePrezime | UposlenikStatus

  1           User1                     0
  2           User2                     0
  3           User3                     0

表checked_user:

Id | UposlenikID  | Vrijeme            | Command

1      4           2016-11-30 14:28:02  Odjava

2     10           2016-11-30 14:30:54  Odjava

3      3           2016-12-01 09:17:00  Prijava

4      4           2016-12-01 09:17:03  Prijava

12  4   2016-12-01 09:17:18     Odjava

首先,我创建Query以从表中获取所有用户

$users = "SELECT UposlenikID, UposlenikImePrezime FROM uposlenici WHERE UposlenikStatus = 0";

$q = $conn->query($users);

然后我创建表:

$date = '2016-11-01';
$end = '2016-11-' . date('t', strtotime($date)); //get end date of month

<table border="1">
   <thead>
      <tr>
         <th></th>
         <th>
             <?php 
               while(strtotime($date) <= strtotime($end)) {
                $day_num = date('d', strtotime($date));
                $day_name = date('l', strtotime($date));
                $day_month = date('m', strtotime($date));
                $date = date("Y-m-d", strtotime("+1 day",       strtotime($date)));
                echo "<td>$day_name <br/> $day_num | $day_month</td>";
                } ?>
        </th>
      </tr>
    </thead>
    <tbody>
      <?php 
        $i=1;
        while($r=$q->fetch()) {  
       ?>
       <tr>
           <td>
               <?php  echo $i++;  ?>
           </td>
           <td>
              <?=$r['UposlenikImePrezime']; ?>
           </td>    
           <td>

           </td>

       </tr>
     <?php } ?>
  </tbody>

输出表应如下表所示 enter image description here

1 个答案:

答案 0 :(得分:0)

使用SQL查询(Case&amp; Join),

 SELECT user.UposlenikID , user.UposlenikImePrezime,checked_user.Vrijeme,
 CASE WHEN user.UposlenikID=checked_user.UposlenikID  THEN 'yes'
            ELSE 'No' END AS is_checked
 FROM user 
 LEFT OUTER JOIN checked_user
  ON (user.UposlenikID=checked_user.UposlenikID) ;

获取查询结果如下

UposlenikID : UposlenikImePrezime : Vrijeme               : is_checked

1           | user1               | NULL                   | No
2           | user2               | NULL                   | No
3           | user3               | 2016-12-01 09:17:00    | Yes

然后使用php将结果格式化为表。