2013-09-29 1 views
1

답변 됨
Glavić이 게시 한 예제를 사용하여이 작업을 수행 할 수있었습니다. 당신의 팁에 대해 모두에게 감사합니다, 그들은 모두 매우 유용합니다.합계가 두 숫자 사이에있는 경우 echo 문, 다른 숫자 집합 사이에 다른 문을 반향 출력

원래 질문
나는/경우 다른 문을 알아내는 끔찍한입니다. 여러 자습서를 살펴본 결과 내가하는 일을 얻지 못했습니다. 나는 이것을 필요로한다 : 총 점수가 제목이 없다는 것을 나타내는 상태보다 작 으면 총 금액이 #와 # 사이에있는 경우 어떤 제목이 일까요? 전체 금액이 #과 # 사이에 있으면 등

총점을 더하는 것은 효과가 있지만 총점에 대한 올바른 제목을 얻는 방법을 알 수는 없습니다. 나는 내가하려고하는 것과 결합 될 수 있기 때문에 총점을 얻기위한 코드를 포함시켰다.

<?php 
$query = "SELECT points, SUM(points) AS totalpoints FROM competition WHERE id = $id"; 
$result = mysql_query($query) or die(mysql_error()); 

while($row = mysql_fetch_array($result)){ 
    echo "<b>"; 
    echo $row['totalpoints']; 
    echo "pts</b>"; 
}?> 

이 작동하지 않습니다 : (가 명예의 전당 말한다 상관없이 총 포인트가 무엇인지)

<?php 
$query = "SELECT points, SUM(points) AS totalpoints FROM competition WHERE id = $id"; 
$result = mysql_query($query) or die(mysql_error()); 

while($titled = mysql_fetch_array($result)) { 

if ($titled <= 999) 
{echo ", not titled";} 

elseif (($titled == 1000) && ($titled <= 1999)) 
{echo ", Champion";} 

elseif (($titled >= 2000) && ($titled <= 2999)) 
{echo ", Grand Champion";} 

elseif (($titled >= 3000) && ($titled <= 3999)) 
{echo ", Honor Champion";} 

elseif (($titled >= 4000) && ($titled <= 5999)) 
{echo ", Regional Champion";} 

elseif (($titled >= 6000) && ($titled <= 7999)) 
{echo ", State Champion";} 

elseif (($titled >= 8000) && ($titled <= 9999)) 
{echo ", National Champion";} 

elseif (($titled >= 10000) && ($titled <= 19999)) 
{echo ", World Champion";} 

elseif ($titled >= 20000) 
{echo ", Hall of Fame";} 

}?> 
+0

'== 1000'은'> = 1000'이어야합니다. – Barmar

+0

테스트의 모든'> = '부분은 필요하지 않습니다. 이전 테스트는 값이이 범위보다 낮은 경우를 이미 제거합니다. 사실, 모든'if'를 없애고'floor ($ total [ 'totalpoints']/1000)라는 제목의 배열을 사용하십시오. – Barmar

답변

1

$titled = mysql_fetch_array($result) 당신을주는 어떤 도움을 크게 이것은 잘 작동

감사 정수와 비교할 수없는 배열. $titled['totalpoints']을 사용해야합니다.

+0

죄송합니다. 롤백 해 주셔서 죄송 합니다만, 편집으로 인해 서식이 실제로 향상되지 않았습니다. . – TheWolf

1

(모든 if 문없이) 좀 더 좋은 코드 :

$titles = array(
     0 => 'not titled', 
    1000 => 'Champion', 
    2000 => 'Grand Champion', 
    3000 => 'Honor Champion', 
    4000 => 'Regional Champion', 
    6000 => 'State Champion', 
    8000 => 'National Champion', 
    10000 => 'World Champion', 
    20000 => 'Hall of Fame', 
); 
$titles = array_reverse($titles, true); 

while ($titled = mysql_fetch_array($result)) { 
    foreach ($titles as $score => $title) { 
     if ($titled['totalpoints'] >= $score) break; 
    } 
    echo ', ' . $title; 
} 

Demo.

+0

환상적! 나는 당신의 코드를 사용했고 정확히 내가 원한 것을 해냈다. 게다가 훨씬 더 멋진 코드를 보였다. 고맙습니다 Glavić. – ld04

+0

문제가없는 친구입니다. 이 방법으로 문제가 해결되면 [이 대답 수락] (http://meta.stackexchange.com/a/5235)을 참조하십시오. –

관련 문제