2012-07-20 108 views
0

我想显示用户提供的日期范围内来自数据库的每个日期的记录。 即,如果用户指定2012年7月2日至2012年7月4日。 然后 输出必须是这个在范围之间的每个日期的显示记录

date:2012-july-02 
name | intime | outtime |Teamtype 

date:2012-july-03 
name | intime | outtime |Teamtype 

so on.. 

SQL:

$s="SELECT InDate,mstEmp.cardnofrom mstEmp left join dailyattendance ON (InDate BETWEEN '$from' AND '$to') AND(dailyattendance.HolderName = mstEmp.empname) where teamtype='$chk'"; 
$objDB->SetQuery($s); 
$r = $objDB->GetQueryReference(); 

$sql= SELECT mstEmp.empname, 
     mstEmp.cardno, 
     InDate, 
     dailyattendance.InTime, 
     dailyattendance.OutTime, 
     mstEmp.teamtype    
FROM mstEmp 
LEFT JOIN dailyattendance  
ON (InDate BETWEEN '$from' AND '$to') AND (dailyattendance.HolderName =mstEmp.empname) 
WHERE mstEmp.teamtype = '$chk' 
ORDER BY InDate DESC 
$res = $objDB->GetQueryReference(); 

我想什么是

<!-- language: lang-php --> 

    while($rw=mysql_fetch_array($r)) 
    { 

    while($row=mysql_fetch_array($res)) 
    { 
     list($name, $crd,$indate,$in,$out,$t) = $row; 
     if($rw[1]!=$crd && $row[2]=='') 
     { 
      $d1='NULL'; 
      $d2='NULL'; 
     } 
     else 
     { 
     $d1 = date("g:i A", $in); 
     $d2 = date("g:i A" ,$out); 
     $d3 = date("d-m-Y (D)", $in); 
     $bg = ''; 
     if(date('D', $in) == 'Sun' || date('D', $in) == 'Sat') 
     $bg = 'bgcolor=#EEEEEE'; 
     else 
     $bg = 'bgcolor= #ECE5B6'; 
     if ($ddate != $row[2]) 
     { 
      echo "<tr $bg><td colspan=4>Date: ".$d3."</td></tr>"; 
      $ddate = $row[2]; 
     } 
     } 

     echo "<tr>"; 
     echo "<td align=left width='35%'>".trim($name)."</td>"; 
     echo "<td align=center width='20%' >".$d1."</td>"; 
     echo "<td align=center width='23%' >".$d2."</td>"; 
     echo "<td align=center width='16%'>".$t."</td>"; 
     echo "</tr>"; 
    } 
    echo "</table><br>"; 
    echo "</form>"; 
    } 

mysql_free_result($res); 
mysql_free_result($r); 
+1

什么是问题? – Leri 2012-07-20 09:04:56

+0

即时获得的记录,但记录的空值.ie如果该员工缺席entir erange只有那么他的领域显示为空,并没有其他员工记录如果空任何日期不显示 – Lissa 2012-07-20 09:07:27

+0

if($ rw [1]!= $ crd && $ row [2] =='')这是错误的错误,它应该是“if($ row [1]!= $ crd && $ row [2] =='')”。 – 2012-07-20 09:08:52

回答

0

看起来你筛选天应该是属于在WHERE insted的的ON

SELECT 
mstEmp.empname, 
mstEmp.cardno, 
InDate, 
dailyattendance.InTime, 
dailyattendance.OutTime, 
mstEmp.teamtype 
FROM mstEmp 
LEFT JOIN dailyattendance 
    ON (dailyattendance.HolderName = mstEmp.empname) 
WHERE 
    mstEmp.teamtype = '$chk' AND 
    InDate BETWEEN '$from' AND '$to' 
ORDER BY 
    InDate DESC 
+0

它不显示空值 – Lissa 2012-07-20 09:24:29

相关问题