gpt4 book ai didi

php - 在 PHP 和 MySQL 中使用日期查询

转载 作者:行者123 更新时间:2023-11-30 23:25:57 26 4
gpt4 key购买 nike

我正在编写一个脚本,该脚本将使用 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>

该代码不返回任何内容。每次运行都会返回不同的错误。我怀疑查询有问题。我只是想不通..

感谢任何帮助。

谢谢。

穆罕默德。

最佳答案

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>

最终的结果是一个合适的时间表: enter image description here

谢谢。

关于php - 在 PHP 和 MySQL 中使用日期查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13352329/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com