如何使用while循环连续制作4个项目?

时间:2012-06-16 08:17:30

标签: php mysql

我正在尝试从数据库中显示我的产品。我正在尝试使用if 4%= 0来拆分它,但我不能让它连续显示4个项目。

以下是我的代码:

<table>
<tr>
     <?php
        include "connect_to_mysql.php";
        $split = 0;
        $display_all = mysql_query("SELECT * FROM products 
            ORDER BY FIELD(category, 'ipad','iphone','others')");
        while($row=mysql_fetch_array($display_all)) {
        $id = $row['id'];
        $product_code = $row['product_code'];
        $title = $row['title'];
        $price = $row['price'];
        $split++;   
        if ($split%4==0){
        echo '</tr><tr>';   
        }
        ?>
        <td>
        <table class="normal_text" align="center">
        <tr>
        <td><a href="product.php?product_id=<?php echo $id?>">
            <img width="200px" height="133px" src="products/<?php echo $product_code?>.jpg" />
            </a></td>
        </tr>
        <tr>
        <td align="center" style="font-weight:bold"><?php echo $title;?></td>
        </tr>
        <tr>
        <td align="center">$<?php echo $price;?></td>
        </tr>
        </table>
        </td>
        <?php
        }
        ?>
</tr>
</table>

3 个答案:

答案 0 :(得分:2)

你有之前的PHP逻辑,而不是里面你的HTML表输出。
尝试像这样重组:

<?php
include "connect_to_mysql.php";
$split = 0;
$display_all = mysql_query("SELECT * FROM products 
    ORDER BY FIELD(category, 'ipad','iphone','others')");
?>
<table class="normal_text" align="center">
<tr>
<?php
while($row=mysql_fetch_array($display_all)) {
    $id = $row['id'];
    $product_code = $row['product_code'];
    $title = $row['title'];
    $price = $row['price'];

    // output product details -- note use of quotes to include PHP vars
    $rowHTML = "<td><a href='product.php?product_id=$id'>";
    $rowHTML .= "<img width='200px' height='133px' src='products/$product_code.jpg' />";
    $rowHTML .= "</a><br/>";
    $rowHTML .= "<strong>$title</strong>";
    $rowHTML .= "$price</td>";
    echo $rowHTML;

    $split++;   
    if ($split%4==0){
        echo '</tr><tr>';
    }
}
?>
</tr>
</table>

答案 1 :(得分:1)

while($row=mysql_fetch_assoc($display_all)) {
    $id = $row['id'];
    $product_code = $row['product_code'];
    $title = $row['title'];
    $price = $row['price'];
    if ($split % 4 === 0) echo "\n<tr>";
?>
  
    

//此处仅<td>代码</td>。否<tr>和否</table>

  
<?php
 if ($split % 4 === 3) echo "</tr>"; 
  $split++;
 }
?>

你是在同一时间开始和结束,然后为每个人放置表格。 您希望在<tr>时启动%4==0,在</tr>时结束%4==3

答案 2 :(得分:-1)

不要使用模数(%),只需添加第二个名为$cols的变量,将其分配给所需的列数,然后进行比较。例如:

    $rows = 1;
    $cols = 4;

    $display_all = mysql_query("SELECT * FROM products ORDER BY FIELD(category, 'ipad','iphone','others')");

    while($row=mysql_fetch_array($display_all)) {
    $id = $row['id'];
    $product_code = $row['product_code'];
    $title = $row['title'];
    $price = $row['price'];
    $split++;   
    if ($rows==$cols){
        echo '</tr><tr>'; 
        $rows = 1;
    }