ช่วยหน่อยครับ....อยากให้แถวเวลาเข้าออกอยู่บรรทัดเดียวกัน เหลือแค่นี้ก็เสร็จแล้วครับ
โค๊ด joinตาราง
Code (PHP)
<?
$sql = "select job.*,empp.* from job,empp WHERE job.emp_id = empp.emp_id";
$Result = mysql_query( $sql ) or die ("Error Query [".$sql."]");
//mysql_query("set NAMES'TIS620'");
?>
<table width="595" border="1" align="center" cellpadding="0" cellspacing="1">
<tr>
<td width="123" bgcolor="#999999" class="style45"><div align="center" class="style18">วันที่</div></td>
<td width="259" bgcolor="#999999" class="style45"><div align="center" class="style18">ชื่อ-นามสกุล</div></td>
<td width="150" bgcolor="#999999" class="style45"><div align="center" class="style18">เวลาเข้า</div></td>
<td width="126" bgcolor="#999999" class="style45"><div align="center" class="style18">เวลาออก</div></td>
</tr>
<?
while($rs = mysql_fetch_array($Result))
{
$date = date('d-m-Y', strtotime($rs["dday"]));
$DateStamp=$date;
?>
<tr >
<td><div align="center" class="style20"> <?=$DateStamp?> </div></td>
<td><div align="center" class="style20"> <?=$rs["emp_name"];?> <?=$rs["emp_surname"];?></div></td>
<td><div align="center" class="style20"><?=$rs["timeins"];?></div></td>
<td><div align="center" class="style20"><?=$rs["timeouts"];?></div></td>
</tr>
<?
}
?>
</table>
ฐานข้อมูล
-- phpMyAdmin SQL Dump
-- version 2.10.3
-- http://www.phpmyadmin.net
--
-- โฮสต์: localhost
-- เวลาในการสร้าง:
-- รุ่นของเซิร์ฟเวอร์: 5.0.51
-- รุ่นของ PHP: 5.2.6
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- ฐานข้อมูล: `db491202064131`
--
-- --------------------------------------------------------
--
-- โครงสร้างตาราง `job`
--
CREATE TABLE `job` (
`id` int(4) NOT NULL auto_increment,
`dday` date NOT NULL default '0000-00-00',
`timeins` varchar(15) NOT NULL,
`timeouts` varchar(15) NOT NULL,
`emp_id` int(4) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=tis620 AUTO_INCREMENT=191 ;
--
-- dump ตาราง `job`
--
INSERT INTO `job` VALUES (187, '2013-07-18', '10:21:16', '', 1000);
INSERT INTO `job` VALUES (188, '2013-07-18', '', '10:21:20', 1000);
INSERT INTO `job` VALUES (189, '2013-07-18', '10:54:36', '', 5000);
INSERT INTO `job` VALUES (190, '2013-07-18', '', '10:54:44', 5000);
Tag : PHP, MySQL
ประวัติการแก้ไข 2013-07-18 13:50:21
Date :
2013-07-15 14:46:10
By :
rukthao
View :
2053
Reply :
16
แถวเดียวหรือ Column เดียวกัน
Date :
2013-07-15 14:50:02
By :
Krungsri
ให้อยู่ใน Column เดียวกันครับ....
ช่วยหน่อยครับ....อ้างอิงตารางในเวบข้างบน
อัพขึ้นไม่เป็น
ประวัติการแก้ไข 2013-07-16 11:04:25
Date :
2013-07-15 16:19:27
By :
rukthao
ช่วยหน่อยครับ
Date :
2013-07-18 14:51:33
By :
rukthao
ลองสร้างเงื่อนไขตรง column เวลาอะครับเช็คจาก วันที่ ถ้าวันที่เดียวกันก็ให้ rowspan เข้าด้วยกันแล้วจัด valign=top น่าจะได้แล้วนะครับ
Date :
2013-07-18 14:59:09
By :
Manussawin
ใช้ group by dday ครับ
Date :
2013-07-18 15:05:48
By :
Dragons_first
ถ้าใช้group by dday เวลาออก ไม่แสดงครับ
ถ้าวันที่เดียวกันก็ให้ rowspan เขียนยังไงครับ.....นึกไม่ออกครับ
ประวัติการแก้ไข 2013-07-18 16:21:30
Date :
2013-07-18 16:20:05
By :
rukthao
ไม่มีใครช่วยเลย...
Date :
2013-07-19 10:17:18
By :
rukthao
ลองใส่เงื่อนไขดูครับ
Code (PHP)
<table width="595" border="1" align="center" cellpadding="0" cellspacing="1">
<tr>
<td width="123" bgcolor="#999999" class="style45"><div align="center" class="style18">วันที่</div></td>
<td width="259" bgcolor="#999999" class="style45"><div align="center" class="style18">ชื่อ-นามสกุล</div></td>
<td colspan="2" bgcolor="#999999" class="style45"><div align="center" class="style18">เวลาเข้า-เวลาออก</div> <div align="center" class="style18"></div></td>
</tr>
<?php
while($rs = mysql_fetch_array($Result))
{
$date = date('d-m-Y', strtotime($rs["dday"]));
$DateStamp=$date;
?>
<tr >
<td><div align="center" class="style20"> <?php echo $DateStamp?> </div></td>
<td><div align="center" class="style20"> </div></td>
<?php
if($DateStamp==$date)
{?><td colspan="2" width="500"><div align="center" class="style20"><?php echo $rs["timeins"]."-". $rs["timeouts"];?></div></td><?php }
?>
</tr>
<?php
}
?>
</table>
ประวัติการแก้ไข 2013-07-19 11:01:11 2013-07-19 11:02:19 2013-07-19 11:24:13 2013-07-19 11:27:26
Date :
2013-07-19 11:00:29
By :
nutzaaclub
ขอบคุณ คุณNut-zaaนะครับ แต่มันไม่มามีแต่ชื่อโชว์อย่างเดียวคับ
Date :
2013-07-19 11:23:12
By :
rukthao
งั้นลองเปลื่ยน sql ครับ
Code (PHP)
SELECT dday,emp_id,CONCAT( `timeins`, '-', `timeouts`) date from job
Date :
2013-07-19 11:25:02
By :
nutzaaclub
มันขึ้น
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\new\frm_job.php on line 121
แบบนี้เลยครับ
ประวัติการแก้ไข 2013-07-19 13:31:12
Date :
2013-07-19 13:30:19
By :
rukthao
ผมลองเอาของคุณ นายต้นกล้ามาลองทำดู...ก็ได้ผลแต่ ตัวเวลามันจะวน จากเวลาออก มาเป็นเวลาเข้าของคนต่อไป
ของผมตั้งแต่03-10ไม่มีเพราะจะอยู่ในinclde มันเกี่ยวกันไหมครับ
Code (PHP)
<?
include "connect.php";
mysql_connect($host,$user,$pw) or die("ติดต่อ Host ไม่ได้");
mysql_select_db($dbname) or die("ติดต่อฐานข้อมูลไม่ได้");
mysql_query("SET character_set_results=tis620");
mysql_query("SET character_set_client='tis620'");
mysql_query("SET character_set_connection='tis620'");
mysql_query("collation_connection = tis620_thai_ci");
mysql_query("collation_database = tis620_thai_ci");
mysql_query("collation_server = tis620_thai_ci");
$sql = "select * from person" ;
$sqlquery=mysql_db_query($dbname, $sql);
$total = mysql_num_rows($sqlquery);
$Query = mysql_query($sql );
$totalp = mysql_num_rows($Query);
?><br><br><br><br>
<table width="883" border="0" cellpadding="1" cellspacing="0">
<tr style="BORDER-BOTTOM: #999999 1px solid; BORDER-LEFT: #999999 1px solid; BORDER-TOP: #999999 1px solid; BORDER-RIGHT: #999999 1px solid" border="0" cellspacing="0" cellpadding="5">
<td height="28" valign="top" bgcolor="#F7F7F7" style="BORDER-BOTTOM: #999999 1px solid; BORDER-LEFT: #999999 1px solid; BORDER-TOP: #999999 1px solid; BORDER-RIGHT: #999999 1px solid " border="0" cellspacing="0" cellpadding="1"><table width="922" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="131" bgcolor="#999999" class="style45"><div align="center" class="style18">วันที่</div></td>
<td width="243" bgcolor="#999999" class="style45"><div align="center" class="style18">ชื่อ-นามสกุล</div></td>
<td width="147" bgcolor="#999999" class="style45"><div align="center" class="style18">เวลาเข้า</div></td>
<td width="122" bgcolor="#999999" class="style45"><div align="center" class="style18">เวลาออก</div></td>
</tr>
<?
$i=1;
while($objResult = mysql_fetch_array($Query))
{
$DateStamp=$objResult["dddd"];
$NamePerson=$objResult["name"];
$TimeIn=$objResult["tttt"];
?>
<tr>
<? if($DateStamp==$d1){?>
<td><div align="center" class="style20"> <?=$DateStamp?> </div></td>
<td><div align="center" class="style20"> <?=$NamePerson?></div></td>
<td><div align="center" class="style20"><?=$t1?></div></td>
<td><div align="center" class="style20"><?=$TimeIn?></div></td>
<?
}else{} ?>
</tr>
<?
$d1=$DateStamp;
$t1=$TimeIn;
}
?>
ส่วนฐานข้อมูล
-- phpMyAdmin SQL Dump
-- version 2.10.3
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Jul 22, 2012 at 03:14 PM
-- Server version: 5.0.51
-- PHP Version: 5.2.6
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Database: `db_badminton`
--
-- --------------------------------------------------------
--
-- Table structure for table `person`
--
CREATE TABLE `person` (
`id` int(4) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`dddd` date NOT NULL,
`tttt` time NOT NULL,
`card` varchar(13) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=tis620 AUTO_INCREMENT=3 ;
--
-- Dumping data for table `person`
--
INSERT INTO `person` VALUES (1, 'กล้า', '2012-07-15', '08:00:00', '5000000000007');
INSERT INTO `person` VALUES (2, 'กล้า', '2012-07-15', '17:00:00', '5000000000007');
INSERT INTO `person` VALUES (3, 'กล้า', '2012-07-16', '08:00:00', '5000000000007');
INSERT INTO `person` VALUES (4, 'กล้า', '2012-07-16', '17:00:00', '5000000000007');
ประวัติการแก้ไข 2013-07-19 15:59:39 2013-07-19 16:02:14
Date :
2013-07-19 15:58:23
By :
rukthao
Code (PHP)
while($row = mysql_fetch_assoc($qry)){
//ถ้าแสกนซ้ำ จะเก็บแค่ครั้งแรกที่สแกน
//พนักงานมาทำงาน กลัวแสกนไม่ติดเลยสแกน 2 ครั้ง 08:14:59, 08:16:01 ปรากฏว่าครั้งที่ 2 สาย ดังนั้นควรเก็บครั้งแรก
//พนักงานออกงาน 16:00 ซึ่งออกก่อนเวลา เลยกลับมาแสกนอีกทีตอน 17:30 ดังนั้นควรเก็บครั้งแรก
if(!isset($allReportData[$row['myDate']][$row['id_card']][$row['type']])){
$arrName[$row['id_card']] = $row['name'];
$allReportData[$row['myDate']][$row['id_card']][$row['type']] = $row['myTime'];
//การเรียงลำดับจะอิงตาม ORDER by และเงื่อนไขที่ใช้ WHERE ต้องตรวจสอบผลลัพธ์โดยการ print_r() ดูว่าได้ตามที่คาดไว้หรือไม่
}
}
เก็บข้อมูลไว้ในอาร์เรย์ก่อน แล้วค่อยวนลูปแสดงอีกทีครับ
Code (PHP)
foreach($allReportData as $date=>$arr){
foreach($arr as $idCard=>$data){
$timeIn = isset($data['I']) ? $data['I'] : '00:00:00';
$timeOut = isset($data['O']) ? $data['O'] : '00:00:00';
echo "<tr><td>". $date ."</td><td>". $arrName[$idCard] ."</td><td>". $timeIn ."</td><td>". $timeOut ."</td></tr>";
}
}
ข้อมูลอาจจะไม่ตรงกัน แต่วิธีการน่าจะใช้ได้ครับ
Date :
2013-07-20 12:12:14
By :
{Cyberman}
ฟอร์มมันคล้ายๆ ของผมเลยแฮะ
แต่ฐานข้อมูลไม่เหมือนกัน
Date :
2013-07-20 16:33:50
By :
compiak
ขอยืมมาใช้ก่อนครับ คุณ OMG_PIAK
ผมทำไมค่อยเป็น ต้องขอโทษด้วย
แต่ขอบคุณทุกท่านที่ช่วยเหลือครับw
Date :
2013-07-25 13:37:26
By :
rukthao
Code (SQL)
SELECT id, dday, timeins, GROUP_CONCAT(timeouts) as timeouts FROM job GROUP BY dday, emp_id
Date :
2013-07-25 14:52:24
By :
ไวยวิทย์
Load balance : Server 00