2016-04-04 14 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需要在单行中取两个结果。 –