【问题标题】:Creating table based on the data inputs PHP基于数据输入 PHP 创建表
【发布时间】:2011-11-13 10:59:31
【问题描述】:

我有这几行代码。它的功能是它会根据输入的日期创建一个表格。例如,如果今天的日期是星期一,那么它将分为 5 列(星期一、星期二、星期三、星期四、星期五),或者如果今天是星期二 strong>,它将导致 4 列(周二、周三、周四、周五),以此类推。我的问题是我使用的代码太长了。我想问是否可以缩短这个?如果可能的话,你能教我怎么做吗?

这是我的代码:

if ($jd2 == 'Monday')
{
    $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>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>";

【问题讨论】:

    标签: php mysql sql html-table


    【解决方案1】:

    也许这可以给你一个想法:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-21
      • 2019-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-28
      • 1970-01-01
      • 2011-12-20
      相关资源
      最近更新 更多