Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php或MYSQL解决方案,介绍如何根据条件交替显示MYSQL数据_Php_Mysql - Fatal编程技术网

Php或MYSQL解决方案,介绍如何根据条件交替显示MYSQL数据

Php或MYSQL解决方案,介绍如何根据条件交替显示MYSQL数据,php,mysql,Php,Mysql,我一直在寻找解决这个问题的办法,问了一个相关的问题,但运气不好。我会直截了当地问,也许有人能给我们一些启示 如果这个问题得到了一个有效的答案,我将删除类似的答案。 我相信这个问题更清楚 在数据库表中,我存储有关“二手车”的数据 假设我有5辆宝马旧车(我希望:),4辆梅赛德斯和20辆沃克斯豪尔 它们是在桌子里按兰德公司的顺序排列的 我查询数据并对其进行分页,每页显示6辆车(共5页) 如何显示如下数据: 第1页: 第一辆宝马,第一辆梅赛德斯,第一辆沃克斯豪尔 第二辆宝马,第二辆梅赛德斯,第二辆沃克

我一直在寻找解决这个问题的办法,问了一个相关的问题,但运气不好。我会直截了当地问,也许有人能给我们一些启示

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

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

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

它们是在桌子里按兰德公司的顺序排列的

我查询数据并对其进行分页,每页显示6辆车(共5页)

如何显示如下数据:

第1页:

  • 第一辆宝马,第一辆梅赛德斯,第一辆沃克斯豪尔
  • 第二辆宝马,第二辆梅赛德斯,第二辆沃克斯豪尔
第2页:

  • 第三辆宝马,第三辆梅赛德斯,第三辆沃克斯豪尔
  • 第四辆宝马,第四辆梅赛德斯,第四辆沃克斯豪尔
第3页:

  • 第五宝马,第五沃克斯豪尔,第六沃克斯豪尔
  • 第七沃克斯霍尔,第八沃克斯霍尔,夜间沃克斯霍尔
第4页和第5页:

  • 将显示所有剩余的沃克斯大厅

  • 一些人说,这可以通过使用一个非常复杂的mysql查询来实现,这个查询需要花费很长时间才能执行。看看这个问题

  • 用户NewFurniture对类似的问题给出了一个解决方案,但它不起作用。我想我的问题不清楚。我非常感谢他

那么,您有一个类别(品牌)和一个车辆(车辆ID),并且您希望每个页面显示每个品牌的一辆车辆,除非该品牌上没有其他车辆

假设您有一个带有字段
make
vin
的表
Vehicles

首先,找到制造者:

$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匹配的阵列:

$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);
$onpage=0;
$numperpage=5//每页的车辆数
foreach($vkey=>$vvalue的车辆){
if(数组搜索($vvalue,$lastvalue)){
$finalorder[$vkey]=$vvalue;
$lastvalue[$onpage]=$vvalue;

$onpage=$onpage为每种车型设置一个单独的表格怎么样?这样你就可以很容易地知道每种车型有多少辆车,并从中生成一个算法。我认为你想要输出结果的标准不是很清楚。你是想得到尽可能少的重复车型的结果吗?换句话说,你想显示variet首先是y,并且在排序的底部有相同的标记。对吗?这是一个有趣的问题,我想不出一个可以很好地扩展的解决方案。在实际应用程序中,您预计返回多少行?不是每页,而是总共?这与我的想法非常接近,但扩展性不好。如果有大量的记录,我们必须一次获取它们,这有点违背了分页的意义。但我没有看到任何其他方式。我只是注意到在if之后我没有一个
else
。这也是必需的,或者你会忽略不正常的车辆。我想你需要另一个数组来添加em to,然后array_将它们推到最后。这有点像冒泡排序。对许多记录进行大量排序和组织。这是没有帮助的;你要求计算机做很多工作。是的,我正在制作一个可以自己完成的罐子,但我需要在每个页面上使用load查询,这确实会破坏f分页。幸运的是,我的表只有大约1000行,我不认为会有性能问题。我将在大约半小时后发布我的解决方案,也许你们可以纠正它