1

これは非常に基本的な問題ですが、私はPHPを初めて使用します。同じ行に3つのレコードだけを追加<br />し、次の行に同じことが起こるというシナリオで結果を表示する必要があります。私はその論理を作ることができず、大きな問題を抱えています:(今、私は単純な方法を使用しています。

while($data = mysql_fetch_array($res_set)) {
?>
 <div><?php echo $data['name']?><img src="images/<?php echo $data['image']?>" /></div>
<?php
}

これは私のコードです

$cnt = 0;

while ($prd = mysql_fetch_array($res)) {

?>
                <div class="imageRow">
                <?php

    $cat_id = $prd['cat_id'];
$sql = "select * from tbl_category where id = $cat_id";
$cat_res    = mysql_query($sql);
$cat_data   = mysql_fetch_array($cat_res);
$cat_name   =   $cat_data['name'];


?>

                        <div class="set">
                            <div class="single first">
                                <a href="<?php echo $ru ?>admin/product_images/<?php echo $cat_name ?>/thumb/<?php echo $prd['thumb_img'] ?>" rel="lightbox[plants]"><img src="<?php echo $ru ?>admin/product_images/<?php echo $cat_name ?>/large/<?php echo $prd['thumb_img'] ?>" style="height: 100px; width: 100px;" /></a><br />
                                <a href="<?php echo $ru ?>contact_form.php?id=<?php echo $prd['id'] ?>">Choose</a>
                            </div>


                        </div>

</div>
                <?php
                $cnt = $cnt++;
                if($cnt%3 == 0) {echo "<br />";}
                }

                //echo  $cnt;

                ?>

どんな助けでもありがたいです。ありがとう

4

3 に答える 3

3
<div class="imageRow">
<?php
$i = 0;
while($data = mysql_fetch_array($res_set)) { ?>
    <div>
        <?php echo $data['name']; ?><img src="images/<?php echo $data['image']; ?>" />
    </div>
    <?php
    $i++;
    if($i % 3 == 0) {
        echo '</div><div class="imageRow"><br />';
    }
}
?>
</div>

説明:

変数$iを数値に設定します。これは、作成したアイテムの数を追跡するために使用されます。

次に、whileループ内で、$ i($ i ++)をインクリメントします。これは$ i = $ i+1と同じです。これを行うことで、$ iの値が何であれ、自分がどのアイテムを使用しているかを常に知ることができます。最初に1に設定してから、最後にインクリメントすることを選択する人もいます。0に設定して、最初の方に設定するのも好きです。どちらも完全に問題ありません。必要なことは何でも/好きな方法で。

最後に、$ iが3で均等に割り切れるかどうかを確認します(余りのようなものです。これは「mod」と呼ばれ、パーセント記号で表されます)。そうである場合は、改行をエコーし​​ます。

于 2012-11-15T16:46:19.510 に答える
0

これを試して

<?php
echo "<div>";

while($data = mysql_fetch_attay($res_set)) {
?>
 <div style="width:30%; float:left"><?php echo $data['name]?><img src="images/<?php echo $data['image']?>" /></div>
<?php
}

echo "</div>";

?>

出力

<div>
    <div>1</div> <div>2</div> <div>3</div>
    <div>1</div> <div>2</div> <div>3</div>
    <div>1</div> <div>2</div> <div>3</div>
</div>
于 2012-11-15T16:48:50.897 に答える
0

それはあなたがそこに持っているいくつかの非常に醜いコードです。これはあなたが必要とすることをし、よりきれいになります。

<?php
$i=1;
while($data = mysql_fetch_attay($res_set)) {
    $frame = '<div><img src="%s" /></div>';
    printf($frame, $data['image']);
    if($i % 3 == 0) { echo '<br />'; }
    $i++;
}

また、<img>要素はそもそもすでにブロック要素であるため、実際には別の要素をラップする必要はありません<div>

于 2012-11-15T16:50:36.913 に答える