停止PHP while循环,然后继续


Stop PHP while loop then continue it?

我有一个PHP MySQL查询从MySQL数据库中抓取特色产品,查询然后左连接另一个表的产品图像。

然而,我的网站设计布局的方式,而查询需要停止,然后继续。

我有一个指向左边的箭头和一个指向右边的箭头,在图像的两边,用于浏览特色产品。然而,图像本身在这两个按钮之前被调用。

我需要停止循环然后继续,或者找到另一种方法?否则,每个被调用的产品都会回显按钮。

我的意思是:

    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添加该内容,并且每次点击侧边按钮时都会抵消调用