php
  • mysql
  • 2013-01-11 62 views 1 likes 
    1

    我有以下語法,用於在PHP顯示MySQL查詢:顯示PHP/MySQL的列輸出作爲行

    function get_dayssincecapture($db) 
        {  
        $result = $db->query("SELECT DATEDIFF(now(), sarrive)as days,count(loadnumber) as loads from v2loads where adminstatus='captured' group by DATEDIFF(now(), sarrive) "); 
        return $result; 
        } 
        $dayssincecapture = get_dayssincecapture($db); 
    

    顯示語法:

    <table border=1> 
        <tr> 
        <? while($row = $dayssincecapture->fetch(PDO::FETCH_ASSOC)) { ?> 
        <td><? echo $row['days']; ?><br><? echo $row['loads']; ?></td> 
        <? } ?> 
        </tr> 
    </table> 
    

    這將產生下面的屏幕輸出

    enter image description here

    我怎樣才能改變由表語法將days字段作爲行標題並將加載字段作爲我的表的第二行?

    所以我想將是:

    enter image description here

    感謝一如既往,

    +0

    你想一個SQL解決方案或php? – Taryn

    +0

    感謝@bluefeet,舒適無論。謝謝, – Smudger

    回答

    3

    嘗試用:

    <?php 
    $dayssincecapture = get_dayssincecapture($db); 
    $data = array('days' => array(), 'loads' => array()); 
    
    while($row = $dayssincecapture->fetch(PDO::FETCH_ASSOC)) { 
        $data['days'][] = $row['days']; 
        $data['loads'][] = $row['loads']; 
    } 
    ?> 
    
    <table style="border: 1px solid #000"> 
        <tr> 
         <td>Days</td> 
         <?php foreach ($data['days'] as $day) { ?> 
          <td><?php echo $day; ?></td> 
         <?php } ?> 
        </tr> 
        <tr> 
         <td>Loads</td> 
         <?php foreach ($data['loads'] as $load) { ?> 
          <td><?php echo $load; ?></td> 
         <?php } ?> 
        </tr> 
    </table> 
    
    +0

    真棒@hsz,感謝及時回覆。真棒語法,謝謝。 – Smudger

    1

    如果你想在MySQL中執行這種類型的轉變,那麼你將以的數據爲樞軸。 MySQL不具有旋轉功能,但你可以使用聚合函數與CASE聲明覆制此:

    select 
        count(case when DATEDIFF(now(), sarrive) = 1 then loadnumber end) as Day_1, 
        count(case when DATEDIFF(now(), sarrive) = 2 then loadnumber end) as Day_2, 
        count(case when DATEDIFF(now(), sarrive) = 3 then loadnumber end) as Day_3, 
        count(case when DATEDIFF(now(), sarrive) = 4 then loadnumber end) as Day_4, 
        count(case when DATEDIFF(now(), sarrive) = 5 then loadnumber end) as Day_5, 
        count(case when DATEDIFF(now(), sarrive) = 6 then loadnumber end) as Day_6, 
        count(case when DATEDIFF(now(), sarrive) = 7 then loadnumber end) as Day_7 
    from v2loads 
    where adminstatus='captured' 
    

    你也可以這樣寫代碼,一份準備好的聲明的內部動態創建此,因爲值將是未知的。

    1

    你可以試試:

    <?php 
    
    while($row = $dayssincecapture->fetch(PDO::FETCH_ASSOC)) { 
        $days_row .= "<td>" . $row['days'] . "</td>"; 
        $loads_row .= "<td>" . $row['loads'] . "</td>"; 
    } 
    
    ?> 
    <table> 
    
        <tr> 
        <td>Days</td> 
        <?php echo $days_row; ?> 
        </tr> 
        <tr> 
        <td>Loads</td> 
        <?php echo $loads_row; ?> 
        </tr> 
    </table> 
    
    相關問題