2012-06-03 44 views
-4

我正在一个项目上工作,我需要使用php显示来自mysql表的产品。从mysql表显示一系列产品

我的设计就是这样,5个产品一排显示等等。

所以如果表中有7种产品,应该是2行。

first row 5 products 
second row 2 products 

我使用<UL><LI>显示产品和行像

<UL> 
<li>first</li> 
<li>2nd</li> 
<li>3rd</li> 
<li>4th</li> 
<li>5th</li> 
</ul> 

<UL> 
<li>6th</li> 
<li>7th</li> 
</ul> 

我想知道如何使用foreach循环得到像上面的代码。

如果我使用forloop with 5 increment我无法从表格中获取产品并显示其名称。

感谢

+2

-1因为使用计数器和if语句应该如此明显。你有没有想过呢?你有什么尝试? –

回答

2
echo '<ul>'; 
foreach ($yourResultSet as $index=>$data) { 
    echo '<li>' . YourOutput . '</li>';   

    if ($index % 5 == 0) { 
     echo "</ul><ul>"; 
    } 
} 
echo '</ul>'; 
+0

+1,因为它不在查看图层中使用数据库调用。小调整 - 如果行数可以被5整除,则会创建一个不必要的无序列表。不过,解决这个问题可能是OP的任务':)'。 – halfer

0
<ul> 
<?php $i = 0; ?> 
<?php while($row = mysql_fetch_array($result)): /* Used to loop through a resultset*/ ?> 
    echo "<li>".$row['data'].</li>"; 
<?php 
    $i++; // Increment by one every loop 
    if($i == 5){ // We've hit the fifth iteration 
     echo '</ul><ul>'; // Close the UL and open a new UL 
     $i = 0; // Set $i back to 0 and continue looping 
    } 
    endwhile; 
?> 
</ul> 

尝试。

0

实现这一目标的最好办法是让你的<li>的具有特定的宽度,使他们五个适合在父容器和以下两个或然而,许多你必须将下降到下一行。

<style> 
#container { 
    width: 350px; 
    background: red; 
    padding:0; 
    margin: 0; 
} 
#list li 
{ 
    display: inline-block; 
    width: 50px; 
    height: 50px; 
    list-style-type: none; 
    background:blue; 
    margin: 2px; 
    padding: 0; 
} 
</style> 

<div id="container"> 
    <ul id="list"> 
    <?php 
    while($row = mysql_fetch_array($result)) 
    { 
     echo '<li>' . $row['data'] . '</li>'; 
    } 
    ?> 
    </ul> 
</div> 

您需要使用的尺寸玩了一下,但一切都没有问题,而且你有11个产品本应做2排5和1种产品的第三排。

相关问题