我尝试了一个 MySQL 解决方案,但它似乎并不实用,而且我得到一个需要很长时间的查询。
我正在寻找这个问题的 PHP 解决方案:
我的表格行中有来自 4 个不同站点的产品数据。
我使用一些条件查询它们,并得到一个结果变量:
$result = mysql_query("my query");
现在,我像这样检索数据:
while($slice = mysql_fetch_assoc($result)){
$product_data = $slice['productdata'];
$site = $slice['site'];
}
问题是我想通过交替 $site 变量来显示产品数据:
1. product from site 1;
2. product from site 2;
3. product from site 3;
4. product from site 4;
如果站点 2 中的所有产品都已列出,则列出其他剩余产品,如下所示:
1. product from site 1;
2. priduct from site 3;
3. product from site 4;
等等。
重要提示:我正在对结果进行分页,因此解决方案不会破坏分页。所以我需要一个可以分页的总行数。
有没有 PHP 解决方案?
更新:
$result = mysql_query("SELECT site, product FROM ".$table." WHERE my mysql conditions LIMIT ".$offset.", ".$rowsperpage."");
$rowsperpage = 20;
如果站点 3 的行数比其他站点多得多,则使用代码将生成:
第 1 页:
- 来自站点 1 的产品;
- 来自站点 2 的产品;
- 来自站点 3 的产品;
- 来自站点 1 的产品;
- 来自站点 2 的产品;
- 来自站点 3 的产品;
- 来自站点 3 的产品;
- 来自站点 3 的产品;
- ......
- 直到 20
第2页:
- 来自站点 1 的产品;
- 来自站点 2 的产品;
- 来自站点 3 的产品;
- 来自站点 1 的产品;
- 来自站点 2 的产品;
- 来自站点 3 的产品;
- 来自站点 3 的产品;
- 来自站点 3 的产品;
- ......
- 直到 20
第 3 页将显示剩余的站点 3 行:
- 来自站点 3 的产品;
- 来自站点 3 的产品;
- 来自站点 3 的产品;
- ......
- 直到 20
问题是第 1 页和第 2 页将显示比其他站点更多的站点 3 产品。
这是因为 mysql 查询的行是随机混合和排序的。当我调用其中的 20 个时,这些站点的行数不会相等。
我想实现类似:
第 1 页:
- 来自站点 1 的产品;
- 来自站点 2 的产品;
- 来自站点 3 的产品;
- 来自站点 1 的产品;
- 来自站点 2 的产品;
- 来自站点 3 的产品;
- 来自站点 1 的产品;
- 来自站点 2 的产品;
- 来自站点 3 的产品;
- ......
- 直到 20
第2页:
- 来自站点 1 的产品;
- 来自站点 2 的产品;
- 来自站点 3 的产品;
- 来自站点 3 的产品;
- 来自站点 2 的产品;
- 来自站点 3 的产品;
- 来自站点 3 的产品;
- 来自站点 3 的产品;
.....直到20
仅当我在每个分页页面上都有查询而没有偏移量和限制时,我想要实现的代码才可以使用