2

データベースから製品を表示しようとしています。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>
4

3 に答える 3

2

HTMLテーブルの出力ではなく、以前にPHPロジックを使用しました。 次のように再編成してみてください。

<?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>
于 2012-06-16T08:33:17.110 に答える
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ます。

于 2012-06-16T08:39:22.393 に答える
-1

モジュラス(%)を使用するのではなく、という2番目の変数を追加$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;
    }
于 2012-06-16T08:36:10.757 に答える