จะเอาค่าที่ได้จากการวนลูป เทียบกับค่าที่อยู่ในฐานข้อมูล ได้ยังไง
ผมวนลูปดึงเอาเฉพาะวันเสาร์ขึ้นมา แล้วต้องการเปรียบเทียบกับข้อมูลที่อยู่ใน DB
ถ้า วันที่ในลูป = วันที่ใน DB ให้แสดงรหัสพนักงานออกมาแสดงในตาราง
ตอนนี้ถ้าข้อมูลมันไม่ตรงกัน หรือใน DB ไม่มีเรคคอร์ดให้เปรียบเทียบ ในตารางแสดงผลมันจะเป็นช่องทึบๆ
คืออยากให้มันแสดงผลเป็นคำว่า ว่าง แทน ช่วยแนะนำหน่อยครับ
อันนี้เป็น code ครับ
<?
include "function.inc.php";
include "conn.php";
$strStartDate = date("Y")."-01-01";
$strEndDate = date("Y-m-d");
$yearnow = date ("Y")+543;
$intWorkDay = 0;
$intHoliday = 0;
$intPublicHoliday = 0;
$intTotalDay = ((strtotime($strEndDate) - strtotime($strStartDate))/ ( 60 * 60 * 24 )) + 1;
echo"<center>";
echo"<table width=\"450\" cellpadding=\"1\" cellspacing=\"1\" border=\"0\" style='background:#8B658B;' >";
echo"<td align=\"center\"><b><font color=\"FFFFFF\">แถว 1</font></b></td>";
echo"<td align=\"center\"><b><font color=\"FFFFFF\">แถว 2</font></b></td>";
while (strtotime($strStartDate) <= strtotime($strEndDate)) {
$DayOfWeek = date("w", strtotime($strStartDate));
if($DayOfWeek ==6) // 0 = Sunday, 6 = Saturday;
{
$intHoliday++;
echo"<tr height=\"22\" bgcolor=\"#FFFFFF\">";
echo"<td align=\"center\">$strStartDate</td>";
$sql_chk_call="Select tb_oncall.*,users.U_username,users.U_name,users.U_surname from tb_oncall INNER JOIN users ON tb_oncall.call_user=users.U_username WHERE tb_oncall.U_province=30 order by call_id asc";
mysql_query("SET NAMES tis620");
$rs_call=mysql_query($sql_chk_call);
while ($result=mysql_fetch_array($rs_call))
{
if($strStartDate==$result['call_date'])
{
if($result['call_user'] == "" )
{
echo"<td align=\"center\">ว่าง</td>";
}else {
echo"<td align=\"center\">".$result['call_user']."</td>";
}
}
}
}
$strStartDate = date ("Y-m-d", strtotime("+1 day", strtotime($strStartDate)));
}
echo"</table>";
echo"</center>";
echo"</form>";
?>
อันนี้ในฐานข้อมูล
ถ้า วันที่ในลูป = วันที่ใน DB ให้แสดงรหัสพนักงานออกมาแสดงในตาราง
ตอนนี้ถ้าข้อมูลมันไม่ตรงกัน หรือใน DB ไม่มีเรคคอร์ดให้เปรียบเทียบ ในตารางแสดงผลมันจะเป็นช่องทึบๆ
คืออยากให้มันแสดงผลเป็นคำว่า ว่าง แทน ช่วยแนะนำหน่อยครับ
อันนี้เป็น code ครับ
<?
include "function.inc.php";
include "conn.php";
$strStartDate = date("Y")."-01-01";
$strEndDate = date("Y-m-d");
$yearnow = date ("Y")+543;
$intWorkDay = 0;
$intHoliday = 0;
$intPublicHoliday = 0;
$intTotalDay = ((strtotime($strEndDate) - strtotime($strStartDate))/ ( 60 * 60 * 24 )) + 1;
echo"<center>";
echo"<table width=\"450\" cellpadding=\"1\" cellspacing=\"1\" border=\"0\" style='background:#8B658B;' >";
echo"<td align=\"center\"><b><font color=\"FFFFFF\">แถว 1</font></b></td>";
echo"<td align=\"center\"><b><font color=\"FFFFFF\">แถว 2</font></b></td>";
while (strtotime($strStartDate) <= strtotime($strEndDate)) {
$DayOfWeek = date("w", strtotime($strStartDate));
if($DayOfWeek ==6) // 0 = Sunday, 6 = Saturday;
{
$intHoliday++;
echo"<tr height=\"22\" bgcolor=\"#FFFFFF\">";
echo"<td align=\"center\">$strStartDate</td>";
$sql_chk_call="Select tb_oncall.*,users.U_username,users.U_name,users.U_surname from tb_oncall INNER JOIN users ON tb_oncall.call_user=users.U_username WHERE tb_oncall.U_province=30 order by call_id asc";
mysql_query("SET NAMES tis620");
$rs_call=mysql_query($sql_chk_call);
while ($result=mysql_fetch_array($rs_call))
{
if($strStartDate==$result['call_date'])
{
if($result['call_user'] == "" )
{
echo"<td align=\"center\">ว่าง</td>";
}else {
echo"<td align=\"center\">".$result['call_user']."</td>";
}
}
}
}
$strStartDate = date ("Y-m-d", strtotime("+1 day", strtotime($strStartDate)));
}
echo"</table>";
echo"</center>";
echo"</form>";
?>
อันนี้ในฐานข้อมูล
call_id | call_date | call_user | U_province |
---|
3 | 2012-01-14 | 1618 | 30 |
4 | 2012-01-21 | 3278 | 30 |
5 | 2012-01-28 | 1609 | 30 |
ดูแล้วงง ... มีตัวช่วยให้แบบนี้นะครับ
SQL ีคำสั่งหาวันในสัปดาห์ด้วยคำสั่งนี้
DAYOFWEEK(create_date)
ผลลัพท์จะได้เป็น 1=วันอาทิตย์ ดังนั้นวันที่ต้องการคือวันเสาร์จะได้
SELECT * FROM table WHERE DAYOFWEEK(create_date)=7
คือ query เฉพาะวันเสาร์ ครับ
เงื่อนไข
- เอาเฉพาะวันเสาร์ ตั้งแต่เสาร์แรกของปี จนถึงเสาร์ปัจจุบัน
- ถ้ามีการบันทึกวันลงฐานข้อมูลแล้ว user ที่มี U_province เหมือนกันจะไม่สามารถลงซ้ำได้