1

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>

これにより、以下の画面出力が生成されます

ここに画像の説明を入力

日フィールドを行見出しとして取得し、負荷フィールドをテーブルの 2 番目の行として取得するために、テーブル構文で変更するにはどうすればよいですか?

だから私が欲しいものは次のようになります:

ここに画像の説明を入力

いつもありがとう、

4

3 に答える 3

5

Try with:

<?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>
于 2013-01-11T11:19:49.267 に答える
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>
于 2013-01-11T11:38:01.883 に答える
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' 

値が不明であるため、このコードを準備済みステートメント内に記述して動的に作成することもできます。

于 2013-01-11T11:24:01.433 に答える