0

mySQL から行を取得してエコーアウトする while ループを実行しています。かなり標準的。ただし、最初の項目、次の 2 つの項目には異なる HTML マークアップが必要であり、その後通常どおり while ループに進みます。

現在、私の while ループは次のようになっています。

while( ( $row = mysql_fetch_object( $result ) ) !== false )
    {   

    // Places ad based of predefined variable frequency
    if ($ad == $adFrequency){

     echo '<div class="one-advertisement-article clearfix">';
     echo '<div class="grid_9 suffix_2"><img src="http://placehold.it/263x75/000000/ffffff"></div>';
     echo '<div class="grid_1"><a class="navigate-right-icon ss-icon" href="#">navigateright</a></div>';
     echo '</div>';

     $ad = 0;
    }

    echo '<div class="one-news-article clearfix">';
    if( $row->imagelibid )
            {
                $imageid = intval( $row->imagelibid );
                $image_result = mysql_query( "SELECT * FROM imagelib WHERE id = {$imageid}", $db );

                $image_row = mysql_fetch_object( $image_result );

                $image_url = "http://www.#.com/slir/w280/imagelib/" . $image_row->id . "_" . $image_row->filename;

                echo '<div class="grid_4"><a href="#"><img src="'.$image_url.'"></a></div>';        
            }
    else {
                echo '<div class="grid_4"><div class="news-placeholder"><span class="ss-icon">ellipsischat</span></div></div>';
        }

    echo '<div class="grid_7">';
    echo '<h2><a href="item-news.php?id='.$row->id.'">'.$row->title.'</a></h2>';

    $published_date = date('D, d M Y', strtotime($row->datein));
    echo '<p class="published-date">'.$published_date.'</p>';

    echo '</div>';
    echo '<div class="grid_1">';
    echo '<div class="news-item-vertical-sep">&nbsp;</div>';
    echo '<p></p>';
    echo '</div>';
    echo '</div>';

    $ad++;

    }

これは問題なく動作しますが、最初の 3 つのニュース項目を取得して、これを使用する必要があります。

echo ' <div class="one-news-featured-article clearfix">';
    echo '  <div class="grid_12">';

    if( $row->imagelibid )
            {
                $imageid = intval( $row->imagelibid );
                $image_result = mysql_query( "SELECT * FROM imagelib WHERE id = {$imageid}", $db );

                $image_row = mysql_fetch_object( $image_result );

                $image_url = "http://www.#.com/slir/w280/imagelib/" . $image_row->id . "_" . $image_row->filename;

                echo '<div class="large-featured-image-container"><img src="'.$image_url.'">/div>'; 
            }   

    echo '      <div>';
    echo '        <h2><a href="item-news.php?id='.$row->id.'">'.$row->title.'</a></h2>';
    echo '      </div>';
    echo '    </div>';
    echo '  </div>';
    echo '  <div class="grid_6">';

何か助けはありますか?基本的に、クエリの最初の 3 つの項目に 2 番目のコードを適用し、現在の while ループに含まれるコードを実行する必要があります。これはオフセットのようです。

ありがとう、R

4

3 に答える 3

2

これは非常に簡単です。私はあなたの質問を正しく理解したと思います:

$i = 0;
while ( ( $row = mysql_fetch_object( $result ) ) !== false ) {
    if ($i < 3) {
        // First code
    } else {
        // Second code
    }
    $i += 1;
}
于 2012-12-12T11:37:56.543 に答える
2

mysql_まず、関数はすべて非推奨であり、PHP の将来のバージョンから削除されるため、使用を避ける必要があります。代わりに PDO を使用することをお勧めします。開始するには、このチュートリアルを参照してください。

次に、次のようなことを行うだけのケースになります。

foreach($db->query($query) as $index => $row) {
    if ($index < 3) {
        // first 3 items
    } else {
        // other items
    }
}
于 2012-12-12T12:06:43.777 に答える
0

単純なカウンターと if ステートメントを使用して簡単に実行できます。

$count = 0;

while(fetching) {
    if($count < 3) {
        // items 1, 2 and 3
    } else {
        // do normal
    }

    $count++;
}
于 2012-12-12T11:35:25.517 に答える