php在一行中显示两条记录,然后从中间开始重复
我试图展示一个多类别(儿童)攀岩比赛的起跑顺序表。PHP/Mysql。有两条车道同时攀爬,A和B。每个参赛者都攀爬两条车道。A车道和B车道的起跑顺序应与A车道相同,错开50%,起跑人数为奇数时向下舍入 示例:假设我有一个包含9个竞争对手的类别,起始数字从101到109。输出起始顺序表应如下所示:php在一行中显示两条记录,然后从中间开始重复,php,Php,我试图展示一个多类别(儿童)攀岩比赛的起跑顺序表。PHP/Mysql。有两条车道同时攀爬,A和B。每个参赛者都攀爬两条车道。A车道和B车道的起跑顺序应与A车道相同,错开50%,起跑人数为奇数时向下舍入 示例:假设我有一个包含9个竞争对手的类别,起始数字从101到109。输出起始顺序表应如下所示: Lane A Lane B 101 105 102 106 103 107 104 108
Lane A Lane B
101 105
102 106
103 107
104 108
105 109
106 101
107 102
108 103
109 104
有什么想法吗?查询或几个循环或。。。
谢谢
编辑:
查询以按通道A和通道B的顺序获取表:
create temporary table laneA
select * from competitors where category = 1 order by stNo;
create temporary table laneB
select * FROM competitors where category = 1 order by (case when stNo > (select avg(stNo) from competitors )then 1 else 2 end), stNo;
select 1 as rank, x.* from laneA as x
union ALL
select 2 as rank, y.* from laneB as y
order by rank;
drop temporary table laneA;
drop temporary table laneB;
将数据放在一个以零为基的数组中,在其上循环。计算访问第二列中显示的相应元素所需的索引:
$data = range(101, 109); // fake data array, [0 => 101, 1 => 102, ...]
$c = count($data);
for($i=0; $i<$c; ++$i) {
echo $data[$i] . ' - ' . $data[ ($i + $c / 2) % $c ] . "<br>\n";
}
如果你再加一个,那么你有偶数个项目,它将是
101 - 106
102 - 107
103 - 108
104 - 109
105 - 110
106 - 101
107 - 102
108 - 103
109 - 104
110 - 105
我认为你的问题不是很清楚。到目前为止你试过哪一种?您不能使用简单的
订单依据
?订单依据什么?我做了一个连接查询,显示顺序为101÷109(通道a)和105÷109、101÷104的记录。但我如何在html表中像在示例中一样显示它呢?我想我需要的是像101、105、102、106等那样的顺序,但我不知道怎么做。让B道有一个竞争对手阵列,从阵列前端删除x个竞争对手,并将删除的竞争对手列表附加到阵列的末尾如何?请包括您尝试过的代码,我们在这里提供帮助,不要为你这样做,避免问低强度的问题,阅读以下内容:@SpacePhoenix谢谢,好主意。我理解你的观点,但我需要的是想法,而不是解决方案。
101 - 106
102 - 107
103 - 108
104 - 109
105 - 110
106 - 101
107 - 102
108 - 103
109 - 104
110 - 105