我正在制作一个脚本,它将使用PHP和MySQL显示员工日程安排。 我正在使用php 5.3.13和MySQL 5.5.24
我想要做的是填写一张表格,该表格将包含日期,如果状态为ACTV,则填写员工开始时间,或者如果员工休假或休假则填写员工开始时间。
代码如下:
<body>
<center>
<?php
include "../../scripts/php/dbcon/dbcon.php";
$schedule_table = "cc_schedule";
$date_query="SELECT DISTINCT DATE(schedule_date) FROM `$schedule_table`";
$date_result= mysql_query($date_query);
$datenum = mysql_numrows($date_result);
?>
<!-- Table Head -->
<center>
<table cellpadding="0" cellspacing="0">
<tr>
<th><center>No.</center></th>
<th><center>Name</center></th>
<th><center>Employee ID</center></th>
<?php
$d =0;
while ($d < $datenum){
$dt = mysql_result($date_result,$d,"DATE(schedule_date)");
$date = date_create($dt);
$dd = $date;
echo "<th><center>". date_format($dd, 'd-M-Y')."</th><center>";
$d++;
}
?>
</tr>
<!-- Table Body -->
<?php
$names_query="SELECT StaffName, ID
from users
WHERE groupname = 'call center'";
$name_result = mysql_query($names_query);
$namenum = mysql_numrows($name_result);
$schedule_query="SELECT *
FROM `$schedule_table`
ORDER BY `schedule_date` ASC,`sstatus` ASC,`start_time` ASC,`employee_id` ASC";
$schedule_result=mysql_query($schedule_query);
$schedule_num = mysql_numrows($schedule_result);
$n = 1;
while ($n < $namenum){
?>
<tr>
<?php
echo"<td><center>".($n)."</td></center>";
echo"<td><center>".mysql_result($name_result,$n,"StaffName")."</td></center>";
echo"<td><center>".mysql_result($name_result,$n,"ID")."</td></center>";
$d=1;
{
$emp_id = mysql_result($name_result,$n,"ID");
$dt = mysql_result($date_result,$d,"DATE(schedule_date)");
$date = date_create($dt);
$dd = date_format($date, 'Y-m-d');
echo $emp_id;
echo DATE($dd);
while ($d < $datenum) {
$schedule_query ="SELECT *
from $schedule_table
WHERE `employee_id` = $emp_id AND `schedule_date`='$dd'";
$schedule_result = mysql_query($schedule_query);
$schedule = mysql_result($schedule_result,0,"start_time");
$status = mysql_result($schedule_result,0,"sstatus");
if ($status =="ACTV"){
'<td class="'.$status.'"><center>'.$schedule.'</td></center>';
}
else {
echo '<td class="'.$status.'"><center>'.$status."</td></center>";
}
}
$d++;
}
?>
</tr>
<?php
$n++;
}
?>
</table>
</center>
</body>
代码不返回任何内容。每次运行时都会返回不同的错误。我怀疑查询出了问题。我只是想不出来..
感谢任何帮助。
谢谢。
穆罕默德。
答案 0 :(得分:0)
Jeremy Smyth,Geek Num 88,和awenkhh
感谢您的评论。
我切换到PDO,我已经获得了我正在寻找的结果。
修复上述问题的新代码是:
<body>
<center>
<?php
include "../../scripts/php/dbcon/dbcon.php";
$schedule_table = "cc_schedule";
$dates= $db->query("SELECT DISTINCT DATE(schedule_date) FROM `$schedule_table`");
$dates_num = $dates->rowCount();
$ids = $db->query("SELECT DISTINCT employee_id FROM `$schedule_table` ORDER BY `employee_id`");
$staffcount = $ids->rowCount();
$records = $db->query("SELECT * FROM `$schedule_table`");
$record_num = $records->rowCount();
?>
<center>
<!--- Table Head -->
<table cellpadding="0" cellspacing="0">
<tr>
<th><center>No.</center></th>
<th><center>Employee Name</center></th>
<th><center>Employee ID</center></th>
<?php
while($row = $dates->fetch()) {
{
$d = $row['DATE(schedule_date)'];
}
?>
<th><center><?php echo date_format(date_create($d), 'd-M-Y'); ?></center></th>
<?php
}
?>
</tr>
<?php
$i=1;
while($row = $ids->fetch()){
$employee_id = $row['employee_id'];
$equery = $db->query("SELECT StaffName FROM users where ID=$employee_id");
while($row = $equery->fetch(PDO::FETCH_ASSOC)) {
$empname = $row['StaffName'];
}
?>
<!--- Table Body --->
<tr class="class<?php echo ($i%2); ?>">
<td width="20"><font face="Arial, Helvetica, sans-serif" size="1"><b><?php echo $i ; ?></b></font></td>
<td width="200"><font face="Arial, Helvetica, sans-serif" size="1"><?php echo $empname ; ?></font></td>
<td width="80"><font face="Arial, Helvetica, sans-serif" size="1"><center><?php echo $employee_id; ?></center></font></td>
<?PHP
$sschedule = $db-> query("SELECT start_time, sstatus FROM $schedule_table WHERE employee_id =$employee_id");
while($row = $sschedule->fetch()) {
{
$sstatus = $row['sstatus'];
$start_time = $row['start_time'];
if ($sstatus=="ACTV"){
$staffSchdule = date_format(date_create($start_time), 'h:i');
}
else{
$staffSchdule = $sstatus;
}
}
?>
<td width="20" class="<?php echo $staffSchdule; ?>"><font face="Arial, Helvetica, sans-serif" size="1"><center><?php echo $staffSchdule; ?></center></font></td>
<?php
}
$i++;
}
?>
</tr>
<td colspan="<?php echo $dates_num + 3 ?>"><font face="Arial, Helvetica, sans-serif" size="1"><b><i>Found a total of <?php echo $record_num; ?> records matching your criteria.</i></b></font></td>
</tr>
</table>
</center>
</body>
最终结果是一个合适的时间表:
谢谢。