2011-06-04 66 views
0

我有一个这样的数组:PHP条件 - PHP

$team_scores = array('Tigers' => 3, 'Spikes' => 6, 'Crashers' => 8, 'Fortress' => 2); 
从MySQL查询中的名字是从一列和值是从另一列创建

。我想为每个球队创建一个页面,这个页面应该显示球队的名字,得分和位置。因此在这个例子中,我会有4页,每个页面显示一个团队的名字和得分,而不显示任何有关其他球队的信息,除了参加的总球队。因此,它会显示

名称:尖峰评分:6位置:2/4,

对于不速之客这将是

名称:堡垒得分:2位置:4/4 ,

我想一个foreach循环会做,但我只能够在一个页面上回复团队和分数,当我需要的是创建4页,每个项目一个我在阵列中。我能够做到这一点,只是从数据库中提取数据,但从这些数据我不认为它可能确定每个团队的位置,而没有在一个数组中的数据。

这是甚至可能或我问PHP做什么不能做?任何帮助将深表谢意。

+0

请使用代码格式化,所以我们可以看这更好 – Jon 2011-06-04 03:25:28

+1

尖峰分数应为6? – 2011-06-04 03:33:00

+0

谢谢,那是一个错字。 – Bululu 2011-06-04 04:08:43

回答

4

不要在PHP中这样做。你想在你的SQL查询中使用类似ORDER BY子句的东西来按结果排序结果。然后,您可以在查询中使用LIMIT来一次只提取一行,并将其与偏移量组合以获得您所需的行。

+0

这不会给你的位置,是吗? – Sylverdrag 2011-06-04 03:52:12

+0

谢谢@Obsidian。我很喜欢在查询中使用ORDER BY,但我不认为它能够分辨出它从db中拉出的分数。这就是为什么我认为PHP可能会救援。 – Bululu 2011-06-04 04:11:46

+0

@Sylverdrag如果您要在查询中使用偏移量,则您已知道该位置。试图想想如何得到它*没有*偏移虽然...给我一点。 – damianb 2011-06-04 05:46:57

0

使用$ _GET找出哪些球队显示:

/teams.php?team=spikes 
... 
$i = 0; 
$nbTeams = count($team_scores) 
foreach ($team_scores as $team => $score) 
{ 
    $i++; 
    if ($team == $_GET[team]) 
    { 
     echo "Name: $team Score: $score Position: $i/$nbTeams"; 
    } 
} 
1

在MySQL中,你会怎么做:

SELECT 
    @position:= @position + 1 AS position, 
    score_table.* 
FROM 
    score_table, 
    (SELECT @position := 0) p 
ORDER BY score; 

然后,你可以这样做:

$count = count($results); 
foreach ($results as $result) { 
    echo "Name: {$result['name']}"; 
    echo "Score: {$result['score']}"; 
    echo "Position: {$result['position']}/{$count}"; 
} 

如果您想用普通的SQL来做(例如:与其他SQL数据库兼容),你会这样做:

SELECT 
    * 
FROM 
    score_table 
ORDER BY score; 

然后,考虑到你有数字索引$结果:

foreach ($results as $key => $result) { 
    echo 'Position: '.($key+1); 
} 
+0

谢谢,这是否假设或要求在表中有一个列的职位?我无法识别查询的语法! – Bululu 2011-06-04 04:37:46

+0

@布鲁鲁:不,它不。 '@ position'是一个[MySQL变量](http:// dev。mysql.com/doc/refman/5.0/en/user-variables.html)。 – netcoder 2011-06-04 04:40:16

+0

@Bululu如果您为每个团队添加一个唯一的ID,那么您可以使用刚发布的第一个示例@netcoder,并且只抓取您正在查看该页面的团队的数据。你只需从_GET,typecast/escape这样的东西中获取数据,并在查询中使用它来消除任何迭代需求。 – damianb 2011-06-04 05:50:54