2

CSS でいくつかの DIV のスタイルを設定しようとしています。私がやりたいことは、PHP を使用して MySql ループ内の DIV タグ クラスを変更することです。

<?php
$result = $mysqli->query("SELECT * FROM posts ORDER BY id DESC LIMIT 0, 20");
while($row = mysqli_fetch_array($result))
    {
?>
<div class=” box id1”&gt;<?php echo $row[‘post’];?></div>
<?php } ?>

ということで、クラスボックスのid1をこの順番で変更したい

box id1
box id1
box id2
box id2
box id2
box id2
box id1
box id1
box id2
box id2
box id2
box id2
So on.  (2 div tags with the class box id1 then 4 with box id2 looping)

rand(1, 2); を使ってみました。しかし、これは私が望む順序ではなくランダムに数字を作ります。どんな助けでも大歓迎です。前もって感謝します。

4

4 に答える 4

3
<?php
$result = $mysqli->query("SELECT * FROM posts ORDER BY id DESC LIMIT 0, 20");

$i=1;
$class_str = "";
while($row = mysqli_fetch_array($result))
{
    switch($i%6){//deciding for six place
        //first two id1
        case 1:
        case 2:
            $class_str="id1";
        break;
        //four other id2
        case 3:
        case 4:
        case 5:
        case 0:
            $class_str="id2";
        break;
    }
$i++;

?>
    <div class="box <?php echo $class_str; ?>"><?php echo $row['post'];?></div>

<?php } ?>
于 2013-07-17T17:43:47.543 に答える
0

if ループと $count 変数を使用して、SQL の結果を反復した回数を確認してみてください。

<?php
$result = $mysqli->query("SELECT * FROM posts ORDER BY id DESC LIMIT 0, 20");
$count = 1; 
while($row = mysqli_fetch_array($result))
{ 
    // If count is <= 2, set boxId = 1
    if($count <= 2) {
         $boxId = 1;
         $count += 1;
    // If count is <= 6, set boxId = 2
    } elseif($count <= 6) {
         $boxId = 2;
         $count += 1;
    // Once we have two id1 and four id2, reset count to 1
    } else {
         $count = 1;
    }
?>
<div class="box id<?php echo $boxId; ?>"><?php echo $row[‘post’];?></div>
<?php } ?>
于 2013-07-17T17:27:06.143 に答える
0

基本的な数学演算子。

<?php
$result = $mysqli->query("SELECT * FROM posts ORDER BY id DESC LIMIT 0, 20");
$count = 0;
while($row = mysqli_fetch_array($result))
    {
?>
    <div class=” box id<?php echo min((($count / 2 % 3)+1),2); ?>”&gt;<?php echo $row[‘post’];?></div>
<?php 
    $count++;
} ?>

投稿が 0 ~ 20 になると常に確信している場合は、$count をスキップして $row["id"] のみを使用できます。

于 2013-07-17T17:42:20.083 に答える
0

InfiniteIteratorを利用します:

<?php
$infinite = new InfiniteIterator(new ArrayIterator(array(1, 1, 2, 2, 2, 2)));
$infinite->rewind();

$result = $mysqli->query("SELECT * FROM posts ORDER BY id DESC LIMIT 0, 20");
while($row = mysqli_fetch_array($result)) {
    $current = $infinite->current();
    $infinite->next();
?>
<div class="box id<?php echo $current; ?>"><?php echo $row['post'];?></div>
<?php } ?>
于 2013-07-17T17:33:24.887 に答える