我有一个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">£</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>';
}
}
答案 0 :(得分:3)
这是混合布局,数据库访问和业务逻辑引起的常见问题。您应该使用MVC(模型,视图,控制器)模式以干净的方式处理这些问题。
实现MVC时,您将使布局代码(在本例中为HTML)与查询数据库的代码分开并返回结果。您将能够将数据库查询与界面布局的复杂性分开。这将允许您生成更易于维护的灵活代码。
答案 1 :(得分:1)
简单的答案似乎是将这些按钮放在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
}
答案 2 :(得分:0)
刚刚出头:
尝试从product_intro_preview
删除while
并通过ajax添加该内容,并在每次点击的侧边按钮时暂停该调用。