2016-04-04 46 views
-2

我有一個MySQL查詢從數據庫中選擇掃描細節。這些細節放在報告中。它被要求在一頁上以兩列(幾乎兩張表)顯示報告,以保留它所需的空間。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

埃姆,

它有點迷惑了你的問題,但我想我知道你的意思....

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

我還沒有嘗試運行它...但它應該做的你想要什麼。

  • 確保你有你的while語句後,你想要的花括號{}內重複語句
  • 確保與起始行和結束它與
  • 你只用條形碼和stock_staff_name變量從你的數據行......你似乎已經預先設置了其他值......所以這些值總是相同的($ rounded_qty,$ dt,$ product_nd_short ....所以如果你希望這是你的行.. ,然後在你的while語句中從你的行中讀取它們。
+0

是的,它只提取一行結果並將其放在一列中。我想將表格分成 [dataset1] | [dataset2] 其中「|」是頁面中間。我可以得到dataset1的結果,但我似乎無法讓php轉到數據集2的while循環中的下一個結果 – ArtleMaks

+0

此塊將使兩個結果成爲一行。但是OP需要在單行中取兩個結果。 –