我被卡住了 - 我正在从一个MySQL表中提取商店商品用于在线商店。查询返回项目。通常情况下,我会使用以下内容,它将每个产品列在一个单独的行中:
<table>
<?php
while($rows = mysql_fetch_array($productListResults)){
?>
<tr align="left">
<td><b><?php echo $rows['manufacturer']; ?>
</tr>
<?php } ?>
</table>
然而,现在,我想每行显示3-4个产品,然后继续下一行的其余产品。我在下面列举了一个例子。任何帮助将不胜感激!谢谢!
PRODUCT1 PRODUCT2 PRODUCT3
PRODUCT4 PRODUCT5 PRODUCT6
PRODUCT7 PRODUCT8 PRODUCT9
答案 0 :(得分:0)
不确定。最简单的方法可能是使用变量来跟踪你已在此行中打印的数量。
伪代码看起来像:
let $i = 0
for each result from the database:
if $i is equal to 0:
echo the stuff that's needed to start a row (<tr>, etc.)
print out the stuff needed for a cell in the table, based on $row
increment $i by 1
if $i is equal to 3:
echo the stuff that's needed to end a row (</tr>, etc.)
repeat the process if you still have more rows to print
答案 1 :(得分:0)
<table>
<tr>
<?php
$split=0;
while($rows = mysql_fetch_array($productListResults)){
echo '<td><strong>'.$rows['manufacturer'].'</strong></td>';
$split++;
if ($split%3==0){
echo '</tr><tr>';
}
} ';
</tr>
</table>
答案 2 :(得分:0)
<table>
<?php
$rows = mysql_fetch_array($productListResults);
$columns = 3
for ($i = 0; $i < count($rows); $i++) {
?>
<?php if ($i % $columns == 0): ?>
<tr align="left">
<?php endif; ?>
<td><b><?php echo $rows[$i]['manufacturer']; ?></b></td>
<?php if ($i % $columns == ($columns - 1) || $i == count($rows) - 1): ?>
</tr>
<?php endif; ?>
<?php } ?>
</table>
如果不起作用,请告诉我。
答案 3 :(得分:0)
有几种方法可以解决这个问题。 PHP方式是这样的:
<table><tr>
<?php $i = 0; while ($row = mysql_fetch_array($productListResults)) { ?>
<td><?php echo $row['manufacturer']; ?></td>
<?php if (0 == ++$i % 3) { ?>
</tr><tr>
<?php } ?>
<?php } ?>
</tr></table>
这种方法从一行开始,然后开始循环并添加列。当列计数是我们想要的计数的整数除数时,该行将停止。 (“$ i%3”中的“3”。)
这种方法并不理想。请注意,它可能导致特定边缘情况下为空。修复这是一个读者练习。
那就是说,也许你想考虑在CSS中这样做。这样,您可以输出直接列表,然后使用演示文稿来调整流量以满足您的需求。这是一个简单的介绍:http://csswizardry.com/2010/02/mutiple-column-lists-using-one-ul/