Я сейчас пытаюсь сделать ежемесячный график.
и это моя кодировка «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» на основе «времени».
Поэтому мне нужна идея о том, как я могу организовать это в соответствии со временем.
Как уже сказал Дан, у вас есть ошибка с вашим условием с полем времени
if($_GET['time' == 8])
этот код будет сравнивать строку ‘time’ с числом 8 и возвращать False. Таким образом, ваш код будет искать ключ False в вашем массиве. Хорошее состояние будет:
if($_GET['time'] == 8)
Но вы можете избежать проверки всех значений времени поля с помощью предложения where в вашем SQL-запросе. Вместо этого сделайте:
$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 [‘time’] перед тем, как связать его как параметр, чтобы избежать внедрения SQL.
Это позволит избежать многих «если» для найденного хорошего входа. Ваша база данных быстрее найдет хорошую запись, чем php.
Чтобы увидеть больше для подготовки заявления: http://php.net/manual/fr/mysqli.prepare.php
А для санации вашего параметра:
http://php.net/manual/fr/mysqli.real-escape-string.php
Надеюсь, что это поможет вам.
Разве не так, если заявления выглядят больше как
if($_GET['time'] == 8) {
// do something
}
?