繁体   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