开发者

Creating table based on the data inputs PHP

I have this several lines of code. It's function is that it will create a table based on the date that is inputted. Example if the date today is Monday, then it will result into 5 columns (mon, tue, wed, thu, fri) or if today is Tuesday, it will result to 4 columns (tue, wed, thu, fri) and so on and so forth. My problem is that the code i'm using is too long. I want to ask if it could be possible to shorten this? If it is possible, could you taught me how?

Here is my code:

if ($jd2 == 'Monday')
{
    $sql="SELECT
        a.specialist_partner_ID
        ,count(CASE WHEN a.receivedDate between '".$datefrom."' and '".$dateto."' THEN a.job_or开发者_开发问答der_number ELSE null END) As THU
        ,count(CASE WHEN a.receivedDate between DATE_SUB('".$datefrom."', INTERVAL 1 DAY) and  DATE_SUB('".$dateto."', INTERVAL 1 DAY) THEN a.job_order_number ELSE null END) As FRI
        ,count(job_order_number) As Total
        FROM jo_partner a
        WHERE a.receivedDate BETWEEN '".$datefrom."' AND '".$dateto."'
        GROUP BY a.specialist_partner_ID";
}

//echo $sql;

echo "<table width='200'  border='2'>";
echo "<tr>";
echo "<td>MON</td>";
echo "<td>THU</td>";
echo "<td>WED</td>";
echo "<td>THU</td>";
echo "<td>FRI</td>";
echo "<td>total</td>";
echo "</tr>";
}


$query = mysql_query($sql);
while($row = mysql_fetch_array($query))
{
    $MON = $row['MON'];
    $TUE = $row['TUE'];
    $WED = $row['WED'];
    $THU = $row['THU'];
    $FRI = $row['FRI'];
    $Total = $row['Total'];

    if ($jd2 == 'Monday')
    {
        echo "<tr>";
        echo "<td>$MON</td>";
        echo "<td>$TUE</td>";
        echo "<td>$WED</td>";
        echo "<td>$THU</td>";
        echo "<td>$FRI</td>";
        echo "<td>$Total</td>";
        echo "</tr>";
    }
}
echo "</table>";

if ($jd2 == 'Tuesday')
{
    $sql="SELECT
        a.specialist_partner_ID
        ,count(CASE WHEN a.receivedDate between '".$datefrom."' and '".$dateto."' THEN a.job_order_number ELSE null END) As THU
        ,count(CASE WHEN a.receivedDate between DATE_SUB('".$datefrom."', INTERVAL 1 DAY) and  DATE_SUB('".$dateto."', INTERVAL 1 DAY) THEN a.job_order_number ELSE null END) As FRI
        ,count(job_order_number) As Total
        FROM jo_partner a
        WHERE a.receivedDate BETWEEN '".$datefrom."' AND '".$dateto."'
        GROUP BY a.specialist_partner_ID";

    //echo $sql;

    echo "<table width='200'  border='2'>";
    echo "<tr>";
    echo "<td>TUE</td>";
    echo "<td>WED</td>";
    echo "<td>THU</td>";
    echo "<td>FRI</td>";
    echo "<td>total</td>";
    echo "</tr>";
}

$query = mysql_query($sql);
while($row = mysql_fetch_array($query))
{
    $TUE = $row['TUE'];
    $WED = $row['WED'];
    $THU = $row['THU'];
    $FRI = $row['FRI'];
    $Total = $row['Total'];

    if ($jd2 == 'Tueday')
    {
        echo "<tr>";
        echo "<td>$TUE</td>";
        echo "<td>$WED</td>";
        echo "<td>$THU</td>";
        echo "<td>$FRI</td>";
        echo "<td>$Total</td>";
        echo "</tr>";
    }
}
echo "</table>";


if ($jd2 == 'Wednesday')
{
    $sql="SELECT
        a.specialist_partner_ID
        ,count(CASE WHEN a.receivedDate between '".$datefrom."' and '".$dateto."' THEN a.job_order_number ELSE null END) As THU
        ,count(CASE WHEN a.receivedDate between DATE_SUB('".$datefrom."', INTERVAL 1 DAY) and  DATE_SUB('".$dateto."', INTERVAL 1 DAY) THEN a.job_order_number ELSE null END) As FRI
        ,count(job_order_number) As Total
        FROM jo_partner a
        WHERE a.receivedDate BETWEEN '".$datefrom."' AND '".$dateto."'
        GROUP BY a.specialist_partner_ID";

    //echo $sql;

    echo "<table width='200'  border='2'>";
    echo "<tr>";
    echo "<td>WED</td>";
    echo "<td>THU</td>";
    echo "<td>FRI</td>";
    echo "<td>total</td>";
    echo "</tr>";
}


$query = mysql_query($sql);
while($row = mysql_fetch_array($query))
{
    $WED = $row['WED'];
    $THU = $row['THU'];
    $FRI = $row['FRI'];
    $Total = $row['Total'];

    if ($jd2 == 'Wednesday')
    {
        echo "<tr>";
        echo "<td>$WED</td>";
        echo "<td>$THU</td>";
        echo "<td>$FRI</td>";
        echo "<td>$Total</td>";
        echo "</tr>";
    }
}
echo "</table>";


Maybe this can give you an idea:

<?php

//to make testing easier
$jd2 = isset($_GET['jd2'])?$_GET['jd2']:'Monday';

//array with abbr
$days = array(
    'Monday' => 'MON',
    'Tuesday' => 'TUE',
    'Wednesday' => 'WED',
    'Thursday' => 'THU',
    'Friday' => 'FRI');

//this will hold the tr content
$tr_content = '';
foreach(array_reverse($days,true) as $day => $abbr){
    $tr_content = "<td>$day</td>".$tr_content;
    if($jd2 == $day) break;
}
echo "<table border=1><tr>$tr_content</tr></table>";

//create a few links to try
foreach($days as $day => $i){
    echo "<a href='?jd2=$day'>$day</a><br>";
}

?>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜