繁体   English   中英

如何显示数据库中的实际数据

[英]How to display actual data from DB

我正在执行SQL以显示实际正在由该人员和该老师进行教学的主题。 它应该仅显示主题名称(例如,上午8点在教师个人资料上显示“语言”)。 在数据库中,我有表格-时间表,并且有start_time和end_time数据保存在DATETIME中。 我在互连SQL和PHP然后显示时遇到问题。 我有这个SQL查询:

SELECT lessons.schoolday, lessons.start_time, lessons.end_time, lectors.lectorsurname, studentgroups.class_id, classes.grade, subjects.subjectname 
  FROM lessons INNER JOIN lectors ON lessons.lector_id=lectors.lector_id 
     INNER JOIN studentgroups ON lessons.studentgroup_id=studentgroups.studentgroup_id 
     INNER JOIN classes ON studentgroups.class_id=classes.class_id 
     INNER JOIN subjects ON lessons.subject_id=subjects.subject_id 
    WHERE lessons.start_time <= substring(('".date('Y-m-d H:i:s')."'),11,6)
    AND lessons.end_time >= substring(('".date('Y-m-d H:i:s')."'),11,6) 
    AND lectors.lector_id=:id");

当我更改日期而不是间隔时(fe start_time-> 0000-00-00 08:00:00,end_time-> 0000-00-00 08:45:00),它正在工作。 但是通过这种方式,它只打印Array()。 HTML正在使用Latte模板显示,并且有条件,如果为空数组,则显示message = Teacher当前未在教学,但这也不起作用。

.......

php代码:

     $stmt3 = $db->prepare(" SELECT l.schoolday, l.start_time, l.end_time, t.lectorsurname, sg.class_id, c.grade, s.subjectname 
                                FROM lessons l 
                                INNER JOIN lectors       t  ON l.lector_id=t.lector_id 
                                INNER JOIN studentgroups sg ON l.studentgroup_id=sg.studentgroup_id 
                                INNER JOIN classes       c  ON sg.class_id=c.class_id 
                                INNER JOIN subjects      s  ON l.subject_id=s.subject_id 
                                WHERE l.start_time <= CURTIME() AND l.end_time >= CURTIME() AND t.lector_id=:id
                                ORDER By c.grade, l.schoolday, l.start_time"); 
        $stmt3->bindValue(":id", intval($_GET["id"]));
        $stmt3->execute();
       $data=$stmt3->fetchAll();
       print_r($data);

$tplVars["lesson"] = $stmt3->fetchAll();

和拿铁咖啡模板

    <table>
    . 
    .
    .
    <tr>
        <th> Aktuálne vyučuje: </th>
    </tr>
    {foreach $lesson as $aktual}
     {if !empty($aktual['grade'])}  
    <tr>
      <td>{$aktual['grade']} </td>
    </tr>
     {/if}
     {if ($aktual['grade']) == NULL}
    <tr> <td> <span> Učiteľ momentálne nevyučuje </span></td></tr>
     {/if}
    {/foreach}
</table>

搜索一些示例。 加上一些别名,使其可读性更好。 NOW()还不够吗? 看到这个链接更多的MySQL日期和时间功能

SELECT l.schoolday, l.start_time, l.end_time, t.lectorsurname, sg.class_id, c.grade, s.subjectname 
FROM lessons l 
INNER JOIN lectors       t  ON l.lector_id=t.lector_id 
INNER JOIN studentgroups sg ON l.studentgroup_id=sg.studentgroup_id 
INNER JOIN classes       c  ON sg.class_id=c.class_id 
INNER JOIN subjects      s  ON l.subject_id=s.subject_id 
WHERE l.start_time <= NOW() AND l.end_time >= NOW() AND t.lector_id=:id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM