I have database table schedule
with id
, date
, time
, cabinet
columns.
Also I have table cabinets
with id
, cabinetNumber
, title
columns.
I should generate table, but it should look like queue table.
cabinet 8,9,10,11,12,13,14,15,16
102 - - - + - - + - -
103 - + - - - - + - -
if time is busy it will be +
, if free -
.
I need modify my mysql query. And should be possible to change date (usege datepicker and Ajax) and change table rows values depend of date. But if date does not exist, query will be empty and table will be without rows. How can i fixed it?
MySQL query :
$q = $_GET['date'];
$query = mysql_query("SELECT date,cabinet,
SUM(IF(ROUND(`time`)=8,1,0)) as h8,
SUM(IF(ROUND(`time`)=9,1,0)) as h9,
SUM(IF(ROUND(`time`)=10,1,0)) as h10,
SUM(IF(ROUND(`time`)=11,1,0)) as h11,
SUM(IF(ROUND(`time`)=12,1,0)) as h12,
SUM(IF(ROUND(`time`)=13,1,0)) as h13,
SUM(IF(ROUND(`time`)=14,1,0)) as h14,
SUM(IF(ROUND(`time`)=15,1,0)) as h15
FROM `schedule` WHERE date = '".$q."'
GROUP BY cabinet") or die(mysql_error());
?>
table :
<table class="table table-hover">
<tr class=".info"><td>Cab</td><td >8:00</td><td >9:00</td><td >10:00</td><td >11:00</td><td >12:00</td><td >13:00</td><td >14:00</td><td >15:00</td></tr>
<!-- -->
<?php while($data=mysql_fetch_array($query)) :?>
<tr>
<?php $cabinet = $data['cabinet']; ?>
<td><?=$cabinet ?></td>
<?php for($j=8; $j<=15; $j++) : ?>
<?php
$busy = $data['h'.$j];
?>
<?php if($busy>0 && $data['date']===$q ): ?>
<td class="busy"></td>
<?php else: ?>
<td class="free">
<form action="1.php" method="post">
<input type="hidden" name="time" value="<?= $j;?>" />
<input type="hidden" name="cabinet" value="<?= $cabinet;?>" />
<input type="submit" style="free" value="" name="sub"/>
</form>
</td>
<?php endif?>
<?php endfor ?>
</tr>
<?php endwhile ?>
</table>
And jQuery / Ajax:
<script>
$(function() {
$( "#datepicker" ).datepicker({ dateFormat: 'yy-mm-dd' });
});
$( ".date" ).on('change', function(){
var date = $('#datepicker').val();
$.ajax({
type:'get',
url:'table.php',
data : {
'date' : date
},
success: function(data) {
$('#result').html(data);
}
});
});
</script>
I had solwe my problem. I added new query query2
from cabinets table.
<?php $query2 = mysql_query("select cabinetNum from cabinets") ?>
<table class="table table-hover">
<tr class=".info"><td>Cab</td><td >8:00</td><td >9:00</td><td >10:00</td><td >11:00</td><td >12:00</td><td >13:00</td><td >14:00</td><td >15:00</td></tr>
<!-- -->
<?php while($data2=mysql_fetch_array($query2)): ?>
<?php $data=mysql_fetch_array($query) ?>
<tr>
<?php $cabinet = $data2['cabinetNum']; ?>
<td><?=$cabinet ?></td>
<?php for($j=8; $j<=15; $j++) : ?>
<?php
$busy = $data['h'.$j];
?>
<?php if($busy>0 ): ?>
<td class="busy"></td>
<?php else: ?>
<td class="free">
<form action="1.php" method="post">
<input type="hidden" name="time" value="<?=$j?>" />
<input type="hidden" name="cabinet" value="<?=$cabinet?>" />
<input type="hidden" name="date" value="<?=$q?>" />
<input type="submit" class="free" value="" name="sub"/>
</form>
</td>
<?php endif?>
<?php endfor ?>
</tr>
<?php endwhile ?>
</table>