2016-04-04 14 views
-2

データベースからスキャンの詳細を選択するMySQLクエリがあります。これらの詳細はレポートに表示されます。 1ページに2つの列(ほぼ2つの表)でレポートを表示し、必要なスペースを確保することが求められました。私は現在、テーブルヘッダを表示してやっている何MySqlとPHP - whileループで次の行を取得します

$report .= "> 
        <table cellspacing='0' class='at_report'> 
         <thead> 
          <tr><th colspan='8'>Area ".$row['area_name']."</th></tr> 
         </thead> 
         <tr> 
          <td class='simple_header' style='width:7%;'><div class='nosplit'>No.</div></td> 
          <td class='simple_header' style='width:8%;'><div class='nosplit'>Barcode</div></td> 
          <td class='simple_header' style='width:40%;'><div class='nosplit'>Product</div></td> 
          <td class='simple_header' style='width:5%;'><div class='nosplit'>Qty</div></td> 
          <td class='simple_header' style='width:7%;'><div class='nosplit'>Cost Value</div></td> 
          <td class='simple_header' style='width:16%;'><div class='nosplit'>Created By</div></td> 
          <td class='simple_header' style='width:10%;'><div class='nosplit'>Time</div></td> 
          <td class='simple_header' style='width:7%;'><div class='nosplit'>No.</div></td> 
          <td class='simple_header' style='width:8%;'><div class='nosplit'>Barcode</div></td> 
          <td class='simple_header' style='width:40%;'><div class='nosplit'>Product</div></td> 
          <td class='simple_header' style='width:5%;'><div class='nosplit'>Qty</div></td> 
          <td class='simple_header' style='width:7%;'><div class='nosplit'>Cost Value</div></td> 
          <td class='simple_header' style='width:16%;'><div class='nosplit'>Created By</div></td> 
          <td class='simple_header' style='width:10%;'><div class='nosplit'>Time</div></td> 
         </tr> 
         "; 

をそれから私は、データベースから結果をフェッチ:

while ($srow = $scan_res->fetch(PDO::FETCH_ASSOC)) 

は、その後、私はテーブルに結果を表示する:

$report .= "<tr ".$row_style."> 
           <td><div class='nosplit'>".$n."</div></td> 
           <td><div class='nosplit'>".$srow['barcode']."</div></td> 
           <td><div class='nosplit'>".$product_nd_short."</div></td> 
           <td style='text-align:center;'><div class='nosplit'>".$rounded_qty."</div></td> 
           <td style='text-align:center;'><div class='nosplit'>".$cur_symbol.$cn.$mcost_estimated."</div></td> 
           <td style='text-align:center;'><div class='nosplit'>".((strlen($srow['stocktake_staff_name'])>16)? substr($srow['stocktake_staff_name'], 0, 16)."..." : $srow['stocktake_staff_name'])."</div></td> 
           <td style='text-align:center;'><div class='nosplit'>".$dt->format('H:i:s')."</div></td></tr>"; 

私の質問は、whileループで次の結果セットに行く方法ですテーブルに結果のセットを含む別の列を追加できますか?私はこれを試しました:

$report .= "<tr ".$row_style."> 
           <td><div class='nosplit'>".$n."</div></td> 
           <td><div class='nosplit'>".$srow['barcode']."</div></td> 
           <td><div class='nosplit'>".$product_nd_short."</div></td> 
           <td style='text-align:center;'><div class='nosplit'>".$rounded_qty."</div></td> 
           <td style='text-align:center;'><div class='nosplit'>".$cur_symbol.$cn.$mcost_estimated."</div></td> 
           <td style='text-align:center;'><div class='nosplit'>".((strlen($srow['stocktake_staff_name'])>16)? substr($srow['stocktake_staff_name'], 0, 16)."..." : $srow['stocktake_staff_name'])."</div></td> 
           <td style='text-align:center;'><div class='nosplit'>".$dt->format('H:i:s')."</div></td>";  
       $row_counter++;  
       $n++; 
        $report .= " 
           <td><div class='nosplit'>".$n."</div> </td> 
           <td><div class='nosplit'>".$srow['barcode']."</div></td> 
           <td><div class='nosplit'>".$product_nd_short."</div></td> 
           <td style='text-align:center;'><div class='nosplit'>".$rounded_qty."</div></td> 
           <td style='text-align:center;'><div class='nosplit'>".$cur_symbol.$cn.$mcost_estimated."</div></td> 
           <td style='text-align:center;'><div class='nosplit'>".((strlen($srow['stocktake_staff_name'])>16)? substr($srow['stocktake_staff_name'], 0, 16)."..." : $srow['stocktake_staff_name'])."</div></td> 
           <td style='text-align:center;'><div class='nosplit'>".$dt->format('H:i:s')."</div></td> 
          </tr>"; 

しかし、すべてそれは最初のセットから結果を複製しています。

ありがとうございます!

+0

php.netのドキュメントがあります。すべてがあります。 –

答えて

1

このようなこと。

2つの結果を同じ行に配置したいとします。

$n = 1; 
while($srow = $scan_res->fetch(PDO::FETCH_ASSOC)){ 
    if($n % 2 != 0) 
     $report .= "<tr ".$row_style.">"; 

    $report .= "<td><div class='nosplit'>".$n."</div></td> 
       <td><div class='nosplit'>".$srow['barcode']."</div></td> 
       <td><div class='nosplit'>".$product_nd_short."</div></td> 
       <td style='text-align:center;'><div class='nosplit'>".$rounded_qty."</div></td> 
       <td style='text-align:center;'><div class='nosplit'>".$cur_symbol.$cn.$mcost_estimated."</div></td> 
       <td style='text-align:center;'><div class='nosplit'>".((strlen($srow['stocktake_staff_name'])>16)? substr($srow['stocktake_staff_name'], 0, 16)."..." : $srow['stocktake_staff_name'])."</div></td> 
       <td style='text-align:center;'><div class='nosplit'>".$dt->format('H:i:s')."</div></td>"; 
    if($n % 2 == 0) 
     $report .= "</tr>"; 
    $n++; 
} 
+1

それは私が必要としていたものです!ありがとうございました!それは行くことができる 1 | 4 2 | 5 3 |結果として6?それを達成するために私は何をする必要がありますか? – ArtleMaks

+0

可能であれば、結果を配列に入れて、必要な配列を整理する必要があります。 –

+0

私は結果の並べ替えを1 | 4 2 | 5 3 | 6など 私はMySQLのクエリの結果を配列に持っています。正しいアプローチは何ですか?これは私が試したことです http://pastebin.com/RAxkA1zh – ArtleMaks

0

EHM、

そのビットあなたの質問を混乱、しかし、私はあなたが何を意味するか知っていると思う....

while ($srow = $scan_res->fetch(PDO::FETCH_ASSOC)) 
{ 
    $n++; 
    $report .= "<tr><td><div class='nosplit'>".$n."</div></td> 
       <td><div class='nosplit'>".$srow['barcode']."</div></td> 
       <td><div class='nosplit'>".$product_nd_short."</div></td> 
       <td style='text-align:center;'><div class='nosplit'>".$rounded_qty."</div></td> 
       <td style='text-align:center;'><div class='nosplit'>".$cur_symbol.$cn.$mcost_estimated."</div></td> 
       <td style='text-align:center;'><div class='nosplit'>".((strlen($srow['stocktake_staff_name'])>16)? substr($srow['stocktake_staff_name'], 0, 16)."..." : $srow['stocktake_staff_name'])."</div></td> 
       <td style='text-align:center;'><div class='nosplit'>".$dt->format('H:i:s')."</div></td></tr>"; 
} 

私はそれを実行している試していない...しかし、それはやるべきあなたが欲しいもの。

  • あなただけのバーコードとstock_staff_name変数を使用
  • を持つ行を開始し、それを終了することを確認してくださいあなたがあなたのwhile文
  • 後に中括弧{}内で繰り返したい文を持っていることを確認してくださいあなたのデータ行...あなたがあらかじめ設定しているように見える他の値...それらは常に同じです($ rounded_qty、$ dt、$ product_nd_short ....これはあなたの行からであることを望むならば..あなたのwhileステートメントの行からそれらを読んでください。
+0

これは、結果の行を1つだけ取り出して1つの列に置きます。テーブルを分割したいのですが。 [dataset1] | [dataset2] "|"ページ中央です。私はdataset1の結果を得ることができますが、私は、dataset2のwhileループの次の結果に行くようには見えません。 – ArtleMaks

+0

このブロックは2つの結果を1つの行にします。しかし、OPは1つの行で2つの結果を取る必要があります。 –

関連する問題