簡體   English   中英

循環時停止PHP然后繼續嗎?

[英]Stop PHP while loop then continue it?

我有一個PHP MySQL查詢從MySQL數據庫中獲取特色產品,然后查詢離開加入產品圖像的另一個表。

然而,我的網站設計的方式奠定了while查詢需要停止然后繼續。

我有一個指向左側的箭頭,然后是指向圖像兩側的箭頭,以瀏覽特色產品。 但是,在兩個按鈕之前調用圖像本身。

我要么停止循環然后繼續它,還是找另一種方式? 否則,每個被調用的產品都會回顯按鈕。

這就是我的意思:

    echo '<div class="slides_container">';
        echo '<div class="slideItem" style="display: none"><a href="product.php?id='.$q['id'].'"><img src="images/dummy/pic_1.jpg" alt="" /></a></div>';
    echo '</div>';
    echo '<a class="s_button_prev" href="javascript:;"></a>';
    echo '<a class="s_button_next" href="javascript:;"></a>';

以下是所有這一切:

if (!$query = @mysql_query("
                        SELECT *
                        FROM products
                        LEFT JOIN products_img_lookup ON products_img_lookup.nil_products_id = products.id
                        WHERE featured = 1
                        GROUP BY products.id
                        ORDER BY id DESC")) {
                        echo '<strong>Error:</strong> '.mysql_error().'';
                    } else {
                        $c = 0;
                        while ($q = mysql_fetch_array($query)) {
                            $detail = stripslashes($q['description']);
                            $detail = strip_tags($detail);

                            echo '<h2><a href="product.php?id='.$q['id'].'">'.$q['name'].'</a></h2>';

                                echo '<p class="s_desc">'.trim_text($detail,25).'</p>';
                                echo '<div class="s_price_holder">';
                                    echo '<p class="s_price"> <span class="s_currency s_before">&pound;</span>'.$q['price'].' </p>';
                                echo '</div>';
                            echo '</div>';
                        echo '<div id="product_intro_preview">';
                            echo '<div class="slides_container">';
                                echo '<div class="slideItem" style="display: none"><a href="product.php?id='.$q['id'].'"><img src="images/dummy/pic_1.jpg" alt="" /></a></div>';
                            echo '</div>';
                            echo '<a class="s_button_prev" href="javascript:;"></a>';
                            echo '<a class="s_button_next" href="javascript:;"></a>';
                        echo '</div>';
                        }
                    }

這是混合布局,數據庫訪問和業務邏輯引起的常見問題。 您應該使用MVC(模型,視圖,控制器)模式以干凈的方式處理這些問題。

實現MVC時,您將使布局代碼(在本例中為HTML)與查詢數據庫的代碼分開並返回結果。 您將能夠將數據庫查詢與界面布局的復雜性分開。 這將允許您生成更易於維護的靈活代碼。

像其他人一樣,硬答案就是去MVC。

簡單的答案似乎是將這些按鈕放在while循環之外。

或者,你可以只是經常輸出它,因為:

echo '<div id="product_intro_preview">';
    echo '<div class="slides_container">';
        echo '<div class="slideItem" style="display: none"><a href="product.php?id='.$q['id'].'"><img src="images/dummy/pic_1.jpg" alt="" /></a></div>';
    echo '</div>';

    // Every five rows (or however many you need in between output), print out the buttons
    if($c % 5 == 0) {                                    
        echo '<a class="s_button_prev" href="javascript:;"></a>';
        echo '<a class="s_button_next" href="javascript:;"></a>';
     }                       
     echo '</div>';
  $c++; 
} // end while loop

或者,你只是想在第一次通過時將它們熄滅一次嗎? 那就簡單了:

 if($c==0) {
     // output buttons
 }

就在我的頭頂:

嘗試從while刪除product_intro_preview ,並通過ajax添加該內容,並在每次單擊側邊按鈕時取消調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM