2011-09-09 17 views
0

私はこのコードをいくつか持っています。それは、入力された日付に基づいてテーブルを作成するという機能です。例日付は今日は月曜日であれば、それは5列(月、火曜、結婚、木、金)になりますか今日は火曜日であれば、それは4列(火曜、結婚になり、 thu、fri)などがあります。私の問題は、私が使用しているコードが長すぎることです。私はこれを短縮することが可能かどうか尋ねたいと思いますか?それが可能なら、どうやって教えてくれましたか?ここデータ入力に基づいてテーブルを作成する

は私のコードです:

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

答えて

0

たぶんこれはあなたのアイデアを与えることができます:

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

?> 
関連する問題