PHP where子句中的组表行

时间:2016-06-07 21:23:02

标签: php

我有这个SQL查询:

foo

这样输出一个表:

<?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>";
    ?>

我希望根据WorkDate将数组输出到单独的表中,所以它看起来像这样:

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

	<TD><CENTER>
		Unit
	</TD></CENTER>

	<TD><CENTER>
		WorkDate
	</TD></CENTER>
</tr>

<tr>
	<TD><CENTER>
		Unit1
	</TD></CENTER>

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

<tr>
	<TD><CENTER>
		Unit2
	</TD></CENTER>

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

<tr>
	<TD><CENTER>
		Unit3
	</TD></CENTER>

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

<tr>
	<TD><CENTER>
		Unit4
	</TD></CENTER>

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

我知道我需要进行分组,但我不知道如何将其放入while语句中

2 个答案:

答案 0 :(得分:1)

试试这个:

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

$lastdate = $Fetch['WorkDate'];

答案 1 :(得分:0)

谢谢,Tom / 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>";
?>