2016-06-07 237 views
1

我有这样的SQL查询:在PHP组表行的where子句

<?PHP 
$Select = SQLSRV_QUERY($conn,"select Unit, WorkDate FROM TABLE GROUP BY WorkDate, Unit"); 

    ECHO "<table border='1'width='600'>"; 
    ECHO "<tr>"; 

     ECHO "<TD><CENTER>"; 
      ECHO "Unit"; 
     ECHO "</TD></CENTER>"; 

     ECHO "<TD><CENTER>"; 
      ECHO "WorkDate"; 
     ECHO "</TD></CENTER>"; 

    ECHO "</tr>"; 

    WHILE ($Fetch=SQLSRV_FETCH_ARRAY($Select, SQLSRV_FETCH_ASSOC)) 
    { 
    ECHO "<tr>"; 
     ECHO "<TD><CENTER>"; 
      ECHO $Fetch['Unit']; 
     ECHO "</TD></CENTER>"; 

     ECHO "<TD><CENTER>"; 
      ECHO date_format($Fetch['WorkDate'], 'm/d/Y'); 
     ECHO "</TD></CENTER>"; 

    ECHO "</tr>"; 
    }//end WHILE 

    ECHO "</table>"; 
    ?> 

这个输出表作为这样的:

<table border='1'width='600'> 
 
<tr> 
 

 
\t <TD><CENTER> 
 
\t \t Unit 
 
\t </TD></CENTER> 
 

 
\t <TD><CENTER> 
 
\t \t WorkDate 
 
\t </TD></CENTER> 
 
</tr> 
 

 
<tr> 
 
\t <TD><CENTER> 
 
\t \t Unit1 
 
\t </TD></CENTER> 
 

 
\t <TD><CENTER> 
 
\t \t 06/01/2016 
 
\t </TD></CENTER> 
 
</tr> 
 

 
<tr> 
 
\t <TD><CENTER> 
 
\t \t Unit2 
 
\t </TD></CENTER> 
 

 
\t <TD><CENTER> 
 
\t \t 06/02/2016 
 
\t </TD></CENTER> 
 
</tr> 
 

 
<tr> 
 
\t <TD><CENTER> 
 
\t \t Unit3 
 
\t </TD></CENTER> 
 

 
\t <TD><CENTER> 
 
\t \t 06/03/2016 
 
\t </TD></CENTER> 
 
</tr> 
 

 
<tr> 
 
\t <TD><CENTER> 
 
\t \t Unit4 
 
\t </TD></CENTER> 
 

 
\t <TD><CENTER> 
 
\t \t 06/03/2016 
 
\t </TD></CENTER> 
 
</tr> 
 
</table>

我期待输出该数组放入单独的表中,基于WorkDate,因此它看起来像这样:

<table border='1'width='600'> 
 
    <tr> 
 

 
    \t <TD><CENTER> 
 
    \t \t Unit 
 
    \t </TD></CENTER> 
 

 
    \t <TD><CENTER> 
 
    \t \t WorkDate 
 
    \t </TD></CENTER> 
 
    </tr> 
 

 
    <tr> 
 
    \t <TD><CENTER> 
 
    \t \t Unit1 
 
    \t </TD></CENTER> 
 

 
    \t <TD><CENTER> 
 
    \t \t 06/01/2016 
 
    \t </TD></CENTER> 
 
    </tr> 
 
</table> 
 
<BR> 
 
<table border='1'width='600'> 
 
    
 
     <tr> 
 

 
    \t <TD><CENTER> 
 
    \t \t Unit 
 
    \t </TD></CENTER> 
 

 
    \t <TD><CENTER> 
 
    \t \t WorkDate 
 
    \t </TD></CENTER> 
 
    </tr> 
 
    
 
    <tr> 
 
    \t <TD><CENTER> 
 
    \t \t Unit2 
 
    \t </TD></CENTER> 
 

 
    \t <TD><CENTER> 
 
    \t \t 06/02/2016 
 
    \t </TD></CENTER> 
 
    </tr> 
 
</table> 
 
<BR> 
 
<table border='1'width='600'> 
 
    
 
     <tr> 
 

 
    \t <TD><CENTER> 
 
    \t \t Unit 
 
    \t </TD></CENTER> 
 

 
    \t <TD><CENTER> 
 
    \t \t WorkDate 
 
    \t </TD></CENTER> 
 
    </tr> 
 
    
 
    <tr> 
 
    \t <TD><CENTER> 
 
    \t \t Unit3 
 
    \t </TD></CENTER> 
 

 
    \t <TD><CENTER> 
 
    \t \t 06/03/2016 
 
    \t </TD></CENTER> 
 
    </tr> 
 

 
    <tr> 
 
    \t <TD><CENTER> 
 
    \t \t Unit4 
 
    \t </TD></CENTER> 
 

 
    \t <TD><CENTER> 
 
    \t \t 06/03/2016 
 
    \t </TD></CENTER> 
 
    </tr> 
 
    </table>

我知道我需要做一组,但我不知道如何把在一个while语句

回答

1

试试这个:

if ($Fetch['WorkDate']!=$lastdate){ 
    ECHO "</tr>"; 
    ECHO "</table>"; 
    ECHO "<BR/>"; 
    ECHO "<table border='1'width='600'>"; 
    ECHO "<tr>"; 
} 

$lastdate = $Fetch['WorkDate']; 
0

谢谢,汤姆/ AstroCB! 以下是我用于此答案的最终代码:

<?PHP 

//get the records 
$Select = SQLSRV_QUERY($conn,"select Unit, WorkDate FROM TABLE GROUP BY Unit, WorkDate"); 

//Start the table outside of while statement 
ECHO "<CENTER>"; 
ECHO "<TABLE border='1'>"; 
ECHO "<TR>"; 
ECHO "<TD><CENTER>"; 

WHILE ($Fetch=SQLSRV_FETCH_ARRAY($Select, SQLSRV_FETCH_ASSOC)){ 

    //Set up the entry date for comparison to $LastDate 
    $EntryDate = date_format($Fetch['WorkDate'], 'm/d/Y'); 

     //If statement decides if a new table is displayed based on if the current displayed date matches the last date in $LastDate 
     IF($EntryDate!=$LastDate){ 


ECHO "</TABLE>"; 
ECHO "</CENTER>"; 
ECHO "<BR>"; 
ECHO "<CENTER>"; 
ECHO "<TABLE border='1'>"; 

ECHO "<TR>"; 
ECHO "<TD><CENTER>"; 
    ECHO "Unit"; 
    ECHO "<BR>"; 
ECHO "</TD></CENTER>"; 

ECHO "<TD><CENTER>"; 
    ECHO "Work Date"; 
    ECHO "<BR>"; 
ECHO "</TD></CENTER>"; 
ECHO "</TR>"; 


ECHO "<TR>"; 
ECHO "<TD><CENTER>"; 
    ECHO $Fetch['Unit']; 
    ECHO "<BR>"; 
ECHO "</TD></CENTER>"; 

ECHO "<TD><CENTER>"; 
    ECHO $EntryDate; 
    ECHO "<BR>"; 
ECHO "</TD></CENTER>"; 
ECHO "</TR>"; 

     }ELSE{ 

ECHO "<TR>"; 
ECHO "<TD><CENTER>"; 
    ECHO $Fetch['Unit']; 
    ECHO "<BR>"; 
ECHO "</TD></CENTER>"; 

ECHO "<TD><CENTER>"; 
    ECHO $EntryDate; 
    ECHO "<BR>"; 
ECHO "</TD></CENTER>"; 
ECHO "</TR>"; 

     }//ends if/else 

//this variable, outside the if/else will keep track of the last entry date for comparison in the if/else  
$LastDate = $EntryDate; 

}//end WHILE 

//You also need to close off the table, outside the while statement 
ECHO "</TABLE>"; 
ECHO "</TD></CENTER>"; 
ECHO "</TR>"; 
ECHO "</TABLE>"; 
ECHO "</CENTER>"; 
?> 
+0

您应该开始以小写形式编写代码..即echo,if,else – Tom