我目前正在尝试按月制定时间表。
这是我的编码' 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>
现在的问题是我无法显示&#39; c_name&#39;和&#39; l_name&#39;基于&#39; time&#39;。 所以我需要知道如何根据时间安排它。
答案 0 :(得分:2)
就像已经说Dan一样,你的条件与时间字段
有误if($_GET['time' == 8])
此代码将字符串'time'与数字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);
?>
在将它绑定为避免SQL注入的参数之前,你会好好清理你的$ _GET ['time']。
这将避免有很多“如果”找到好的条目。您的数据库将比php更快地找到好的条目。
有关准备声明的更多信息,请参见:http://php.net/manual/fr/mysqli.prepare.php
为了对你的参数进行sanatize: http://php.net/manual/fr/mysqli.real-escape-string.php
希望这会对你有所帮助。
答案 1 :(得分:0)
那些if语句不应该更像
if($_GET['time'] == 8) {
// do something
}