2014-02-13 2 views
-2

나는 현재의 최대 개까지의 프리미어 리그 테이블을 mysql 데이터베이스에 가지고있다. 나는 그들로부터 정확히 foreach 루프를 사용하여 데이터베이스에서 그들을 뽑아 냈습니다. 정확하게 표시하고 싶습니다. 어떻게 작동하지 못하는가는 팀의 위치를 ​​표시하는 방법입니다. 그래서 리그 정상에있는 팀은 테이블 행에 숫자 1을 표시하고 10 번째 팀은 10, 팀 19, 19 ...를 표시 할 수 있기를 원합니다. 그렇게하는 법을 배우십시오. 나는 그것이 COUNT 기능과 관련이 있다고 생각했지만 제대로 이해할 수있는 것을 찾지 못했습니다! 여기 리그 테이블의 개별 행에 번호 매기기

내가

function prem_table() { 
$sql = "SELECT * 
     FROM `premier_league` 
     ORDER BY `points` DESC , `goal_difference` DESC , `for`"; 

$result = mysql_query($sql) or die(mysql_error()); 

$prem = array(); 

while (($row = mysql_fetch_array($result)) !== false) { 
    $prem[] = array(
        'id' => $row['id'], 
        'team' => $row['team'], 
        'pld' => $row['pld'], 
        'win' => $row['win'], 
        'draw' => $row['draw'], 
        'loss' => $row['loss'], 
        'for' => $row['for'], 
        'against' => $row['against'], 
        'gd' => $row['goal_difference'], 
        'points' => $row['points'], 
        ); 
} 

return $prem; 
} 
+0

일부 코드, 특히 데이터베이스 쿼리를 질문에 추가 할 수 있습니까? '주문'과 같은 것이 필요할 것 같은데. – jaredk

답변

0

내가 MySQL의 이후의 MySQL의 행 번호를하지 않을 데이터베이스에서 테이블을 얻을하는 데 사용되는 기능 테스트 페이지 여기

<?php 
$prem = prem_table(); 
?> 
<table> 
<th>POS</th> 
<th>TEAM</th> 
<th>PLD</th> 
<th>GD</th> 
<th>PTS</th> 
<?php 
foreach ($prem as $table) { 
$team = $table['team']; 
$pld = $table['pld']; 
$win = $table['win']; 
$draw = $table['draw']; 
$loss = $table['loss']; 
$gd = $table['gd']; 
$pts = $table['points']; 

?> 
<tr> 
<td>X</td><!-- This number needs to change to equal the position the team is in --> 
<td><?php echo $team ;?></td> 
<td><?php echo $pld ;?></td> 
<td><?php echo $gd ;?></td> 
<td><?php echo $pts ;?></td> 
</tr> 


<?php 
} 
?> 
</table> 

의 코드입니다 데이터를 저장하고 프리젠 테이션을 위해 번호가 필요합니다. 당신은

$rows = retrieveData(); // somehow retrieve data from storage 
$rowNumber = 0; 

foreach ($rows as $currentRow) { 
    $rowNumber++; 
    // output your data here. Current row number is in $rowNumber. 
} 
+0

감사합니다. 나는 $ rowNumber ++처럼 단순한 것임을 알았습니다. 내 인생에서 나는 그것을 알아낼 수 없었습니다 !! 스트레스 아웃 시간 동안 여기에 앉아 있었다! 건배 –

0

마이크로 소프트 SQL 서버처럼 뭔가 행 번호를 수있는 행 번호를합니다 ROW_NUMBER() 기능을 가지고, 불행히도 MySQL은 같은 기능을 가지고 있지 않습니다.

SELECT xxx FROM table 
LIMIT 1,1 

과 19 팀 :

위해
SELECT xxx FROM table 
LIMIT 19,1 

에 대한 예는 1 팀을 찾을 수

그러나 LIMIT X, Y

를 사용하여이 작업을 수행 할 수 있습니다 ORDER BY을 사용하여 행이 서버에서 올바르게 정렬되도록해야합니다.

MySQL은 여전히 ​​모든 데이터를 선택하지만 LIMIT을 통해 지정한 값만 반환한다는 것을 알고 있어야합니다. 이것은 프리미어 쉽 테이블에는 문제가되지 않지만 매우 큰 테이블에서는 성능에 영향을 줄 수 있습니다 .

편집 : 아래의 코멘트로 지적

, 영업 이익은 자세한 내용을 포함하도록 업데이트되었습니다. 질문에 대답 할 때 그들은 이미 모든 데이터를 가지고 있었고 루프 내에서 단순하게 증가하는 값을 필요로하거나 특정 물약에 대해 데이터베이스를 쿼리하기를 원했습니다. 내 답변은 OP가 원했던 사실이 아닌 후자에 대한 답변입니다. 나는 다른 사람을 장래 도와 줄 수 있으므로이 대답을 남겨 두겠습니다.

+0

행을 하나씩 검색하도록 제안하셨습니까? – ragol

+0

OP를 읽으면서 특정 위치에서 특정 팀을 얻고 싶다고 생각했습니다. 즉, 어떤 팀이 포스 in션 1에 있고 어떤 팀이 포스 19 19에 있는지 등등. OP가 더 명확 해지고 더 명확한 질문을하는 사실을 알게되었습니다. 실제로 데이터베이스 솔루션이 아니라 특정 루프를 찾기 위해 증가하는 루프 값을 원했습니다. 위치. – Steve