如何每隔2个查询添加一行

时间:2014-03-17 18:03:29

标签: php mysql loops select

所以下面的代码在右边和左边一个旁边创建一个2个框。我现在需要开始新的一行,但无法弄清楚如何。 MySQL为每个盒子换了一个新行,但我每隔一个盒子就需要它......有什么想法吗?

图像显示了我需要在每一行上重复的内容(代码现在所做的): http://auction.sabinalcanyon.org/screenshot_05.jpg

CODE:

 <table width="90%" height="166" border="1" align="center" cellpadding="3" cellspacing="3">
  <tr>

<?
if (isset($_GET['id'])) {
    $proid = $_GET['id'];
    $result = mysqli_query($con,"SELECT * FROM auction_products WHERE id = $proid");
} else {
    $result = mysqli_query($con,"SELECT * FROM auction_products");  
}
while($row = mysqli_fetch_array($result))
  {
?>
<td width="50%">
<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="3" align="center">
<TD>
<p>Input : <? echo $row['barcode'] ?><br />
Barcode : Codabar<br />
Check Digit : N.A.<br /><br />

</p>
 </TD>
 <TD>
 |<br />
 |<br />
 |<br />
 |

</TD>
<TD>
Winner #______<br />
Amount $______
</TD>
</TABLE>
<center>
 <div id="barcodecontainer" style="width:5in">
 <div id="barcode<? echo $row['id']?>" ><? echo $row['barcode']?></div>
 </div>
<br />
<script type="text/javascript">
/* <![CDATA[ */
function get_object(id) {
    var object = null;
    if (document.layers) {
        object = document.layers[id];
    } else if (document.all) {
        object = document.all[id];
    } else if (document.getElementById) {
        object = document.getElementById(id);
    }
return object;
}
 get_object("barcode<? echo $row['id']?>").innerHTML=DrawHTMLBarcode_Code128B(get_object("barcode<? echo $row['id']?>").innerHTML,"yes","in",0,2.5,1,"bottom","center","","black","white");
/* ]]> */
</script>
</center>
</td>
<? } ?> 
</tr>
</table>

1 个答案:

答案 0 :(得分:0)

简单的答案是这样的:

$i=0;
while($row = mysqli_fetch_array($result)){
    echo '<td>';
    /* Some code here */
    echo '</td>';

    if( $i++ &1==0 ){ echo '</tr><tr>' ;} // Start new line
}

魔术发生在if语句中,即按位比较,它检查二进制表示法中的'ones'是否等于0.这只发生在$i的偶数时间。

1&1 == 1 (1 in binairy is 001)
2&1 == 0 (2 in binairy is 010)
3&1 == 1 (3 in binairy is 011)
4&1 == 0 (4 in binairy is 100)
5&1 == 1 (5 in binairy is 101)
etc :)                      ^--- we use this to check

对于奇数/偶数这是我所知道的最快的方法(我很想知道是否有更快的方法)。


这种方法对于奇数/偶数非常容易,但不适用于每个3日,7日,21日等。为此,我们有模数:

if( $i%7===0 ){ /* ... */ }

如果你扣除7的最大数量,那么测试剩下多少整数。再一次,例子:

7 % 2 === 1 (7-2-2-2 = 1, cant subtract another 2)
9 % 6 === 3 (9-6 = 3, cant subtract another 6)
9 % 2 === 1 (9-2-2-2-2 = 1, cant subtract another 2)
123 % 8 === 3 (123 -(15*8)=3, cant subtract another 8)

您可以将$i%2等模块用于奇数/偶数,但模数是一段昂贵的代码,只在您需要时使用。