ขอความช่วยเหลือด่วนครับเกี่ยวกับเรื่องการแสดงข้อมูลที่ไม่ซ้ำกันหน่ะครับ ศึกษาแล้วมันก็ยังติดอยู่เลยเอามาให้พี่ๆเพื่อนๆช่วยครับ
จากภาพครับผมต้องการให้แสดง ID และ NAME ออกมาแค่อย่างละ 1 เท่านั่้นแล้วก็วน IN และ OUT ให้อยู่ในแถวเดียวกัน ในภาพมันออกตามจำนวนเวลาการ IN OUT ครับ ทำอย่างไรดีครับและผมแยกข้อสงสัยของผมออกมา 2 ข้อ คือ
1 ผมวางตำแหน่ง while เพื่อวนแสดงผม ผิด
Code (PHP)
while($result = mysql_fetch_assoc($objQuery)){
<td colspan="2" bgcolor="#66CCFF"><center><?php echo $result[pin];?></center></td>
<td colspan="2" bgcolor="#66CCFF"><center><?php echo $result[name];?></center></td>
}
2. ผมไม่ได้ DISTINCT
ข้อสงสัยของผมทั้งสองข้อผมก็แก้แล้วแต่ก็ยังไม่ได้ ผมมีแนวโน้มว่าผมน่าจะผิดที่ข้อ 2 และลองทำดูแล้วแต่ยังไม่แสดงผลเหมือนเดิม
พี่ๆช่วยผมด้วยครับ _/\_ (โปรเจคนี้เดินช้ามากเลย T.T)
Code (PHP)
<?
$strSQL = "SELECT DISTINCT acc_monitor_log.pin,DATE(acc_monitor_log.time) AS MonitorDate,
IF(MIN(TIME(acc_monitor_log.time)) < '13:00:00',MIN(TIME(acc_monitor_log.time)),'Pending...') AS TimeIn,
MAX(TIME(acc_monitor_log.time)) AS TimeOut,userinfo.name,userinfo.lastname FROM acc_monitor_log,userinfo
WHERE acc_monitor_log.pin = userinfo.badgenumber AND acc_monitor_log.door_id = 6 AND acc_monitor_log.verified NOT LIKE '%200%'AND DATE(acc_monitor_log.time) BETWEEN '".$_GET['time']."' AND '".$_GET['time2']."' AND acc_monitor_log.pin LIKE '".$_GET['person']."'
GROUP BY acc_monitor_log.pin, MonitorDate,userinfo.name,userinfo.lastname ORDER BY acc_monitor_log.pin,MonitorDate";
$month = intval(substr($_GET['time2'],5,7));
$year = intval(substr($_GET['time2'],0,4));
$objQuery = mysql_query($strSQL) or die (mysql_error());
$info = cal_days_in_month( CAL_GREGORIAN , $month , $year ) ;
?>
<table border="1">
<center><b> Date In <font color="#00CC00"><? echo $_GET[time]?></font> to</b>
<b><font color="#00CC00"><? echo $_GET[time2]?></font></b></center>
<tr><td colspan="2" rowspan="2" bgcolor="#3399FF"><center><b><font color="#FFFFFF">ID</font></b></center></td>
<td colspan="2" rowspan="2" bgcolor="#3399FF"><center><b><font color="#FFFFFF">Name/Date</font></b></center></td>
<?
for($i=1;$i<=$info;$i++){
?>
<td colspan="2" bgcolor="#FF0066"><center><?php echo $i?></center></td>
<?
}
?><tr>
<? for($i=1;$i<=$info;$i++)
{
?>
<td bgcolor="#FF6699"><center>In</center></td><td bgcolor="#FF6699"><center>Out</center></td>
<?
} while($result = mysql_fetch_assoc($objQuery)){
?>
<tr>
<td colspan="2" bgcolor="#66CCFF"><center><?php echo $result[pin];?></center></td>
<td colspan="2" bgcolor="#66CCFF"><center><?php echo $result[name];?></center></td>
<?
$date = intval(substr($result['MonitorDate'],8,9));
for($i=1;$i<=$info;$i++){
if($date == $i){
?>
<td><center><?php if($result['TimeIn'] > '08:16:00'){echo "<font color=\"#FF0000\"/><b/>".$result['TimeIn'];}
else{echo "<font color=\"#00CC00\"/><b/>".$result['TimeIn'];}?></center></td>
<td><center><?php if($result['TimeOut'] < '13:00:00'){echo "<font color=\"#FF9900\"/><b/>Pending...";}
else {echo "<font color=\"#00CC00\"/><b/>".$result['TimeOut'];}?></center></td>
<?
}else{
?>
<td colspan="2" bgcolor="#FFCCCC"></td>
<?
}
}
echo $result[late];
//echo count(intval($late));
}
?>
</tr>
</table>
Tag : PHP, MySQL
Date :
2013-08-13 15:02:24
By :
thitikub
View :
630
Reply :
2
ไม่มีใครตอบเลย มีท่านผู้รู้คนไหนช่วยได้มั่งไหมครับ ต้องการแก้ให้เสร็จ คิดไม่ออกจริงๆครับ
Date :
2013-08-13 15:48:36
By :
thitikub
ลองดู group by
https://www.thaicreate.com/tutorial/sql-group-by.html
ครับ
Date :
2013-08-13 18:37:07
By :
iieszz
Load balance : Server 01