2017-05-30 64 views
-2

我目前正在尝试执行月度时间表。如何根据时间创建时间表

So here is my table named 'timetable' ,这是我的编码'table.php'

<table class="table table-striped table-bordered table-hover" id="dataTables-example"> 
           <thead> 
            <tr> 
             <th>Date</th> 
             <th>8.00AM</th> 
             <th>9.00AM</th> 
             <th>10.00AM</th> 
             <th>11.00AM</th> 
             <th>12.00PM</th> 
             <th>1.00PM</th> 
             <th>2.00PM</th> 
             <th>3.00PM</th> 

            </tr> 
           </thead> 
           <tbody> 

            <tr class="odd gradeX"> 
            <?php 
             $datequery="SELECT date FROM day "; 
             $resultdate = mysqli_query($con,$datequery); 
             while($row = mysqli_fetch_assoc($resultdate)) { 
            ?> 
             <td><?php echo$row['date'] ;?></td> 
             <?php 
             $query="SELECT c_name,l_name,time FROM timetable 
             "; 
             $result = mysqli_query($con,$query); 
             while($col = mysqli_fetch_assoc($result)) { 
             ?> 
             <?php 
              if($_GET['time'==8]){?> 
               <td><?php echo $col["c_name"]; echo "<br>"; $col["l_name"];?></td> 
             <?php }?> 
             <?php 
              if($_GET['time'==9]){?> 
               <td><?php echo $col["c_name"]; echo "<br>"; $col["l_name"];?></td> 
             <?php }?> 
             <?php 
              if($_GET['time'==10]){?> 
               <td><?php echo $col["c_name"]; echo "<br>"; $col["l_name"];?></td> 
             <?php }?> 
             <?php 
              if($_GET['time'==11]){?> 
               <td><?php echo $col["c_name"]; echo "<br>"; $col["l_name"];?></td> 
             <?php }?> 
             <?php 
              if($_GET['time'==12]){?> 
               <td><?php echo $col["c_name"]; echo "<br>"; $col["l_name"];?></td> 
             <?php }?> 
             <?php 
              if($_GET['time'==13]){?> 
               <td><?php echo $col["c_name"]; echo "<br>"; $col["l_name"];?></td> 
             <?php }?> 
              <?php 
              if($_GET['time'==14]){?> 
               <td><?php echo $col["c_name"]; echo "<br>"; $col["l_name"];?></td> 
             <?php }?> 
             <?php 
              if($_GET['time'==15]){?> 
               <td><?php echo $col["c_name"]; echo "<br>"; $col["l_name"];?></td> 
             <?php }?> 
             <?php }?> 

            </tr> 

            <?php }?> 
           </tbody> 
          </table> 

现在的问题是,我无法显示 'c_name' 基于 '时间' 'l_name'。 所以我需要一个想法,我该如何根据时间安排它。

回答

0

应该if语句看起来更像

if($_GET['time'] == 8) { 
    // do something 
} 

不是那些?

2

就像已经说丹,你有一个错误与时间字段

if($_GET['time' == 8]) 

该代码将比较字符串“时间”与8号和返回False您的病情。所以你的代码将在你的数组中搜索关键的False。良好的条件是:

if($_GET['time'] == 8) 

但是你可以避免检查你的SQL查询中的“where”子句的所有字段值的时间。相反使:

$query="SELECT c_name,l_name,time FROM timetable"; 

你可以做这样的事情:

<?php 
$query = mysqli_prepare($con, "SELECT c_name,l_name FROM timetable WHERE time = ?;"); 
//Here you 'replace' the '?' caracter by the value of the variable $_GET['time'] 
mysqli_stmt_bind_param($query, "d", $_GET['time']); 
mysqli_stmt_execute($query); 
mysqli_stmt_bind_result($query, $c_name, $l_name); 
//here we fetch all returned rows by the sql query and display a line for each of them 
while(mysqli_stmt_fetch($query)){ 
    echo "<td> ".$c_name." <br> ".$l_name."</td>"; 
} 
mysqli_stmt_close($query); 
?> 

良好做法是你净化你的$ _GET [“时间”]结合其作为避免SQL注入参数之前。

这将避免有很多“如果”找到好的条目。你的数据库会比php更快地找到好的入口。

为了看到更多的准备声明:http://php.net/manual/fr/mysqli.prepare.php

并为您的sanatize参数: http://php.net/manual/fr/mysqli.real-escape-string.php

希望这会帮助你。

+0

我知道这条线上的“d”是什么意思? - > mysqli_stmt_bind_param($ query,“d”,$ _GET ['time']); – YAY95

+0

当然,这是一个用于定义值类型的参数,这里是一个'double'。例如's'将用于'string'。更多信息 [here](http://php.net/manual/en/mysqli-stmt.bind-param.php) – Dorolox