0

我一直在寻找这个问题的解决方案,问了一个相关的问题,但没有运气。我会尽量直截了当地问,也许有人可以解释一下。

如果这个问题得到一个有效的答案,我会删除类似的。我相信这个问题更清楚。

在数据库表中,我存储有关“二手车”的数据。

假设我有5 辆宝马二手车(我希望:)、4 辆梅赛德斯20 辆沃克斯豪尔

它们在表内按 rand 排序。

我查询数据并对其应用分页,每页显示 6 辆汽车(共 5 页)。

我怎样才能显示这样的数据:

第 1 页:

  • 第一辆宝马,第一辆奔驰,第一辆沃克斯豪尔,
  • 第二辆宝马,第二辆奔驰,第二辆沃克斯豪尔

第2页:

  • 第三辆宝马,第三辆奔驰,第三辆沃克斯豪尔,
  • 第四辆宝马,第四辆奔驰,第四辆沃克斯豪尔

第 3 页:

  • 第五辆宝马,第五辆沃克斯豪尔,第六辆沃克斯豪尔,
  • 第七沃克斯豪尔,八沃克斯豪尔,夜沃克斯豪尔

第 4 页和第 5 页:

  • 将显示所有剩余的 Vauxhalls。

    1. 有些人说这可以通过使用一个非常复杂的 mysql 查询来完成,该查询需要永远执行。在这里查看这个堆栈问题。

    2. 用户 newfurniturey 为类似问题提供了解决方案,但没有奏效。我想我的问题并不清楚。我非常感谢他。

4

1 回答 1

0

因此,您有一个类别(品牌)和一个车辆(车辆 ID),并且您希望每个页面都显示每个品牌的一个车辆,除非该品牌上没有更多车辆?

假设您有一个Vehicles包含字段make和的表vin

首先找到品牌:

$q = "SELECT make FROM Vehicles"
$r=mysqli_query($dbconnect, $q);
$make= mysqli_fetch_array($r, MYSQLI_ASSOC);
array_unshift($make, "nomake"); //add so the first make is not a position zero

然后,构建一个将 vin 与 make 匹配的数组:

$q = "SELECT make, vin FROM Vehicles ORDER BY make"
$r=mysqli_query($dbconnect, $q);
while($record = mysqli_fetch_array($r, MYSQLI_ASSOC)){
  $vehicle[$record['vin']]=$record['make'];
}

然后,按照页面的顺序构建数组:

$onpage=0;
$numperpage = 5; //number of vehicles per page
foreach($vehicle as $vkey => $vvalue){
  if (array_search($vvalue,$lastvalue)){
    $finalorder[$vkey] = $vvalue;
    $lastvalue[$onpage]= $vvalue;
    $onpage=$onpage<$numperpage?$onpage++:0;
  }
  if($onpage==0){
    unset($lastvalue);
  }
}
var_dump($finalorder);

这可能需要稍微清理一下,但它应该可以工作。

于 2012-08-16T21:12:34.227 回答